Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.

Amanda Kellen

Membros Plenos
  • Total de itens

    39
  • Registro em

  • Última visita

  • Qualificações

    N/D

Reputação

40

Sobre Amanda Kellen

  • Data de Nascimento 26-08-1997

Informações gerais

  • Cidade e Estado
    belo horizonte/MG
  • Sexo
    Feminino

Outros

  • Ocupação
    engenharia de sistemas
  1. Criei esse programa que realiza cadastro de alunos.Porém a função remove,que assim como o nome já diz remove alunos,não está funcionando adequadamente pois não está removendo os alunos na impressão.Além disse a insere ordenado que deveria colocar em ordem alfabetica não está fazendo isso.O que há de errado com as funções? #include <stdio.h> #include <stdlib.h> #include <string.h> #define Tamanho 70 #define NProvas 3 typedef struct sTipoAluno TipoAluno; struct sTipoAluno { char Nome[Tamanho]; float Nota[NProvas]; TipoAluno *PtrProximo; }; TipoAluno * IniciaLista();//Cria uma lista vazia int listavazia(TipoAluno *);//Verifica se a lista está vazia TipoAluno * insere (TipoAluno *);//Insere elemento na lista TipoAluno * InsereOrdenado (TipoAluno *);//Insere elemento de forma ordenada na lista TipoAluno * busca (TipoAluno *);// Busca um elemento da lista TipoAluno * removeAluno (TipoAluno *);// Remove um elemento da lista void imprime (TipoAluno *);// Imprime todos os elementos da lista int main () { TipoAluno *alunos = IniciaLista(); alunos = InsereOrdenado(alunos); alunos = InsereOrdenado(alunos); alunos = InsereOrdenado(alunos); alunos = insere(alunos); imprime(alunos); alunos = removeAluno(alunos); imprime(alunos); getchar(); return 0; } TipoAluno * IniciaLista() { printf("<<<<<LISTA INICIALIZADA>>>>\n"); return NULL;//CRIACAO DO HEAD //O } int listavazia(TipoAluno *alunos) { if(alunos == NULL) return 0; else return 1; } TipoAluno * insere (TipoAluno *alunos). { TipoAluno *novo = (TipoAluno *)malloc(sizeof(TipoAluno)); int i; printf("\nDigite o nome do Aluno: "); setbuf(stdin, NULL); gets(novo->Nome); for(i=0 ; i<NProvas; i++) { printf("\nDigite a nota da Prova %d: ", i+1); setbuf(stdin, NULL); scanf("%f", &novo->Nota[i]); } novo->PtrProximo = alunos; alunos = novo; return alunos; } TipoAluno * InsereOrdenado (TipoAluno *alunos) { TipoAluno *percorre = alunos;. TipoAluno *novo = (TipoAluno *)malloc(sizeof(TipoAluno)); int i; printf("\nDigite o nome do Aluno: "); setbuf(stdin, NULL); gets(novo->Nome); for(i=0 ; i<NProvas; i++) { printf("\nDigite a nota da Prova %d: ", i+1); setbuf(stdin, NULL); scanf("%f", &novo->Nota[i]); } if (listavazia(alunos) == 0) { novo->PtrProximo = alunos; alunos = novo; return alunos; }else { if (strcmp(alunos->Nome, novo->Nome) > 0 ) { novo->PtrProximo = alunos; alunos = novo; return alunos; } while (percorre->PtrProximo != NULL) { if (strcmp((percorre->PtrProximo)->Nome, novo->Nome) > 0 ) { novo->PtrProximo = percorre->PtrProximo; percorre->PtrProximo = novo; return alunos; } percorre = percorre->PtrProximo; } if (percorre->PtrProximo == NULL) { novo->PtrProximo = NULL; percorre->PtrProximo = novo; } } return alunos; } TipoAluno * busca (TipoAluno *alunos) { char nomebusca[Tamanho]; TipoAluno *aux = alunos; printf("\nDigite o nome para Busca: "); setbuf(stdin, NULL); gets(nomebusca); while (aux != NULL) { if ((strcmp(nomebusca, aux->Nome) == 0)) { printf("\nNOME ENCONTRADO!!!!"); return aux; } aux = aux->PtrProximo; } printf("\nNOME NÃO ENCONTRADO."); return aux; } TipoAluno * removeAluno (TipoAluno *alunos) { TipoAluno *aux, *auxAnterior = alunos; aux = busca(alunos); if(alunos==NULL) if (aux == alunos) { alunos = alunos->PtrProximo; free(aux); }else if (aux != NULL) { while (auxAnterior->PtrProximo != aux) { auxAnterior = auxAnterior->PtrProximo;. } auxAnterior->PtrProximo = aux->PtrProximo; free(aux); } return alunos; } void imprime (TipoAluno *alunos) { TipoAluno *percorre = alunos; int i; while (percorre != NULL) { printf("\n========================================================"); printf("\nNome: %s", percorre->Nome); for(i=0 ; i<NProvas ; i++) { printf("\nNota(%d): %.2f", i+1, percorre->Nota[i]); } printf("\n========================================================"); percorre = percorre->PtrProximo; } }
  2. @Simon Viegas a questão do void int eu até entendo,só mudei pra ficar parecido ao exercicio anterior que é assim: mas tinha me esquecido dessa questão do ponteiro. em relação a isso eu não estava levando tanto em consideração isso porque esse exercicio estou refazendo partes q fiquei com duvidas,mais como um treino mesmo,logo nem levei isso em consideração. realmente no exercicio não tem essa limitação mas o exercicio após esse pede somente expoentes negativos então preferi fazer esse apenas para expoentes positivos. muito obrigado!
  3. segue abaixo o enunciado: adicionado 10 minutos depois referente a essa parte eu cometi um erro me desculpe,eu também tenho um programa q calcula apenas com expoentes negativos e ele estava aberto no momento e por falta de atenção calculei 2^-3 nele e acabei me equivocando.esse programa em questão calcula apenas com expoentes positivos. segue o código abaixo,adicionei um while para q não aceite expoentes negativos: #include <stdio.h> #include <stdlib.h> int leitura(char); int xelevadoy(int,int,int*); void imprime(int,int,int); int main() { int x,y,potencia=1; x=leitura('x'); y=leitura('y'); while(y<0) { printf("\nERRO!!ESTE PROGRAMA CALCULA SOMENTE POTENCIAS DE EXPOENTE POSITIVOS!!\n"); y=leitura('y'); } xelevadoy(x,y,&potencia); imprime(x,y,potencia); system("pause"); return 0; } int leitura(char x) { int y; printf("\n Digite o valor de %c:",x); scanf("%d",&y); system("clear||cls"); return y; } int xelevadoy(int x,int y,int *potencia) { int i; for(i=1;i<=y;i++) { *potencia=*potencia*x; } return *potencia; } void imprime(int x,int y,int potencia) { printf("\n %d^%d=%d \n",x,y,potencia); }
  4. @Simon Viegas estava errado porque no enunciado tinha o prototipo da função e pedia q fosse int e não tinha notado isso depois eu troquei.Eu coloquei return potencia depois q tinha postado e me esqueci de editar,e no meu eu testei 2^-3 e foi corretamente olha só:
  5. Muito obrigado a todos,o void antes do imprime foi porque eu copiei o nome e colei na main e esqueci de tirar o void,agora está funcionando corretamente,troquei também na função xelevadoy o void por int,que eu tinha colocado errado mesmo por descuido e também mudei o valor recebido por i,antes estava 0,troquei por 1 e ficou assim: #include <stdio.h> #include <stdlib.h> int leitura(char); int xelevadoy(int,int,int*); void imprime(int,int,int); int main() { int x,y,potencia=1; x=leitura('x'); y=leitura('y'); xelevadoy(x,y,&potencia); imprime(x,y,potencia); system("pause"); return 0; } int leitura(char x) { int y; printf("\n Digite o valor de %c:",x); scanf("%d",&y); system("clear||cls"); return y; } int xelevadoy(int x,int y,int *potencia) { int i; for(i=1;i<=y;i++) { *potencia=*potencia*x; } } void imprime(int x,int y,int potencia) { printf("\n %d^%d=%d \n",x,y,potencia); }
  6. Tenho que fazer um programa dessa maneira usando ponteiro e um sem ponteiro,o sem ponteiro eu consegui fazer mas com ponteiro não está dando certo porque ainda tenho certa difiuldade com ponteiros.O q tenho q fazer para q o programa funcione? #include <stdio.h> #include <stdlib.h> int leitura(char); void xelevadoy(int,int,int*); void imprime(int,int,int); int main() { int x,y,potencia=1; x=leitura('x'); y=leitura('y'); xelevadoy(x,y,&potencia); void imprime(x,y,potencia); system("pause"); return 0; } int leitura(char x) { int y; printf("\n Digite o valor de %c:",x); scanf("%d",&y); system("clear||cls"); return y; } void xelevadoy(int x,int y,int *potencia) { int i; potencia=1; for(i=0;i<=y;i++) { potencia=potencia*x; } } void imprime(int x,int y,int potencia) { printf("\n %d^%d=%d \n",x,y,potencia); }
  7. Tenho que fazer uma função que duplica cada caractere de uma string recebida.Consegui fazer a função e vi que ela está duplicdando,porém ao imprimir mostra a string antes de ser duplicada o que faço? #include <stdio.h> #include <stdlib.h> #include <string.h> #define TAMANHO 100 int main() { char texto[TAMANHO]; printf("\n Digite o texto: "); fgets(texto,(TAMANHO-1),stdin); system("cls||clear"); int cont=(((strlen(texto))*2)+1); char duplo[cont]; duplo[cont]='\0'; printf("\n Texto antes da mudança:\n%s",texto); duplica(texto,duplo); getchar(); return 0; } void duplica(char texto[],char duplo[]) { int i,j; for(i=0;texto[i]!=NULL;i++) { j=i+1; duplo[i]=texto[i]; duplo[j]=texto[i]; printf("\ni: %d %c\n j:%d %c\n",i,duplo[i],j,duplo[j]);//Adicionei isso aqui pra verificar se estava duplicando e vi q está mas a impressao que esta errada } printf("\n Texto apos ser duplicado:\n"); for(i=0;duplo[i]!=NULL;i++) { printf("%c",duplo[i]); } printf("\n"); }
  8. @cyer muito obrigada pela dica,irei usar adicionado 1 minuto depois @devair1010 Muito obrigado pela ajuda,só não entedi muito bem essa parte do código: troca[strlen(nome)]='\0'; sei que o strlen retorna o comprimento da string,no caso nome,mas não entendi o porque do uso nesse código,poderia me explicar por favor?
  9. Fiz um programa que transforma letras minusculas em maiusculas,apesar de estar funcionando a impressao da string não está correta,imprimi como a foto em anexo,não imprimindo o espaço,o que faço para corrigir esse erro? #include <stdio.h> #include <stdlib.h> #include <string.h> #define TAMANHO 20 int main() { char nome[TAMANHO],troca[TAMANHO]; leitura(nome); maiuscula(nome,troca); getchar(); return 0; } void leitura(char nome[]) { int i; printf("\nDigite um nome(ate 19 caracteres)"); gets(nome); } void maiuscula(char nome[],char troca[]) { int i; for(i=0;i<TAMANHO;i++) { if ( (nome[i] >= 'a') && (nome[i] <= 'z') ) { troca[i]= nome[i]- 32; //nome[i] = nome[i]- 32;//quando eu fiz assim verifiquei que imprimia corretamente a string nome mas a troca sempre fica estranha,mesmo dessa forma dando certo queria //verificar como seria o jeito correto ultilizando a string troca,já que essa foi a minha priomeira ideia e não achei o erro } } printf("\n A string:%s em maiusculo fica:%s \n",nome,troca); }
  10. obrigado,voce poderia me explicar essa parte por favor? getch()-48 como funciona getch() e o porque do -48
  11. Criei um programa que verifica se um numero é palindromo(Número palíndromo é aquele que, se lido de trás para frente e de frete para trás, é o mesmo).O programa funciona corretamente.Mas para conseguir salvar os numeros em um vetor tenho q digitar um digito dar enter e assim se repetindo.Queria saber como faço pra escrever todos os digitos,salva-los em um vetor sem q tenha q dar enter toda vez q escrevo um novo digito. #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int p[4],i,aux1=0,aux2=0,aux3=0,aux4=0,aux=0; printf("<<<<Numeros palindromos>>>>>"); printf("\nDigite um numero de 4 digitos: "); scanf("%d%d%d%d",&p[0],&p[1],&p[2],&p[3]); if((p[0]==p[1])&&(p[0]==p[2])&&(p[0]==p[3])) { printf("\n O numero %d%d%d%d e palindromo!!!\n",p[0],p[1],p[2],p[3]); } else { if((p[0]==p[3])) { aux=1; if((p[1]==p[2])) { aux2=1; } } if((aux==1)&&(aux2==1)) { printf("\n O numero %d%d%d%d e palindromo!!!\n",p[0],p[1],p[2],p[3]); } else { if((aux!=1)&&(aux2!=1)) { printf("\n O numero %d%d%d%d nao e palindromo!!!\n",p[0],p[1],p[2],p[3]); } } } system("pause"); return 0; }
  12. isso eu já sabia rsrs,porém sempre coloco porque me incomoda quando fica sem,é mais uma mania mesmo. era mais pra saber se estava dando certo ou não rsrs,eu esqueci de tirar antes de postar o código. referente a isso,eu não tinha verificado,irei testar aqui. sempre esqueço disso. Muito obrigada

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×