Ir ao conteúdo
  • Cadastre-se

OWL

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Reputação

5
  1. @devair1010 reescrevi o programa. Utilizei vetores para nome e CPF de cada aluno, um vetor para receber o sexo e outro para receber as médias e ao final fiz as comparações das médias utilizando a estrutura if. Dessa maneira deu certo, valeu pelas sugestões. Meu código reescrito ficou assim: #include <stdio.h> #include <stdlib.h> #include <locale.h> int main() { float media1,media2,medias[4],notas1[4],notas2[4],notas3[4]; int i,idade,naturalidade,cont1 = 0,cont2 = 0,cont3 = 0,cont4 = 0,soma1 = 0,soma2 = 0,soma3 = 0,mensalidade,menor = 0,y; char nome1[100],nome2[100],nome3[100],cpf1[20],cpf2[20],cpf3[20],sexo[4]; setlocale(LC_ALL,"portuguese"); for(i=1; i<=3; i++) { if(i==1) //Cadastro primeiro aluno { printf("\n\t =====CADASTRO ALUNO %d=====\n\nInforme seu nome: ",i); gets(nome1); printf("\nCPF: "); gets(cpf1); printf("\nM - MASCULINO OU F PARA FEMININO\nSEXO: "); sexo[i] = getchar(); fflush(stdin); } else if(i==2) //Cadastro segundo aluno { printf("\n\t =====CADASTRO ALUNO %d=====\n\nInforme seu nome: ",i); gets(nome2); printf("\nCPF: "); gets(cpf2); printf("\nM - MASCULINO OU F PARA FEMININO\nSEXO: "); sexo[i] = getchar(); fflush(stdin); } else if(i==3) //Cadastro terceiro aluno { printf("\n\t =====CADASTRO ALUNO %d=====\n\nInforme seu nome: ",i); gets(nome3); printf("\nCPF: "); gets(cpf3); printf("\nM - MASCULINO OU F PARA FEMININO\nSEXO: "); sexo[i] = getchar(); fflush(stdin); } while(sexo[i] != 'M' && sexo[i] != 'F') { printf("\nOPÇÃO INVÁLIDA!"); printf("\nM - MASCULINO OU F PARA FEMININO\nSEXO: "); sexo[i] = getchar(); fflush(stdin); } printf("\nIDADE: "); scanf("%d",&idade); fflush(stdin); printf("\n1 - BRASÍLIA\n2 - OUTRO\nNATURALIDADE: "); scanf("%d",&naturalidade); fflush(stdin); while(naturalidade != 1 && naturalidade != 2) { printf("\nOPÇÃO INVÁLIDA!"); printf("\n1 - BRASÍLIA\n2 - OUTRO\nNATURALIDADE: "); scanf("%d",&naturalidade); fflush(stdin); } printf("\nVALOR DA MENSALIDADE: "); scanf("%d",&mensalidade); fflush(stdin); printf("\n\tNotas da disciplina de algoritmos\n"); if(i==1) //Notas do primeiro aluno { for(y=1; y<=3; y++) { do { printf("\nNOTA %d: ",y); scanf("%f",&notas1[y]); fflush(stdin); if(notas1[y]<1 || notas1[y]>10) printf("\nNOTA INVÁLIDA!"); }while(notas1[y]<1 || notas1[y]>10); } medias[i] = ((notas1[1]*2.5) + (notas1[2]*3.5) + (notas1[3]*4)) / 3; } if(i==2) //Notas do segundo aluno { for(y=1; y<=3; y++) { do { printf("\nNOTA %d: ",y); scanf("%f",&notas2[y]); fflush(stdin); if(notas2[y]<1 || notas2[y]>10) printf("\nNOTA INVÁLIDA!"); }while(notas2[y]<1 || notas2[y]>10); } medias[i] = ((notas2[1]*2.5) + (notas2[2]*3.5) + (notas2[3]*4)) / 3; } if(i==3) //Notas do terceiro aluno { for(y=1; y<=3; y++) { do { printf("\nNOTA %d: ",y); scanf("%f",&notas3[y]); fflush(stdin); if(notas3[y]<1 || notas3[y]>10) printf("\nNOTA INVÁLIDA!"); }while(notas3[y]<1 || notas3[y]>10); } medias[i] = ((notas3[1]*2.5) + (notas3[2]*3.5) + (notas3[3]*4)) / 3; } if(sexo[i] == 'M') //Questão 'a' cont1++; else if(sexo[i] == 'F') //Questão 'b' { cont2++; soma1 = soma1 + idade; } if(naturalidade == 1) // Questão 'c' { cont3++; soma2 = soma2 + mensalidade; } if(sexo[i] == 'F' && idade >20) //Questão 'd' cont4++; if(i == 1) //Questão 'e' menor = idade; else if(idade < menor) menor = idade; system("cls"); } //a) if(cont1 == 0) printf("\na) A quantidade de alunos cadastrados (sexo masculino): Não foram cadastrados alunos do sexo MASCULINO."); else printf("\na) A quantidade de alunos cadastrados (sexo masculino): %d",cont1); //b) if(cont2 == 0) printf("\nb) A média das idades das alunas cadastradas (sexo feminino): Não foram cadastradas alunos do sexo FEMININO."); else { media1 = soma1 / cont2; printf("\nb) A média das idades das alunas cadastradas (sexo feminino): %.2f",media1); } //c) media2 = soma2 / cont3; printf("\nc) A média das mensalidades dos alunos(as) que nasceram em “BRASILIA”: %.2f",media2); //d) if(cont4 == 0) printf("\nd) A quantidade de alunas (sexo feminino) cadastradas com mais de 20 anos: Não foram informados dados para cadastro."); else printf("\nd) A quantidade de alunas (sexo feminino) cadastradas com mais de 20 anos: %d",cont4); //e) printf("\ne) A idade do aluno(a) mais novo: %d",menor); //f) if(medias[1] > medias[2] && medias[1] > medias[3]) printf("\nf) O aluno %s, CPF %s, sexo %c, obteve a maior média em algoritmos.\n",nome1,cpf1,sexo[1]); else { if(medias[2] > medias[1] && medias[2] > medias[3]) { printf("\nf) O aluno %s, CPF %s, sexo %c, obteve a maior média em algoritmos.\n",nome2,cpf2,sexo[2]); } else if(medias[3] > medias[1] && medias[3] > medias[2]) { printf("\nf) O aluno %s, CPF %s, sexo %c, obteve a maior média em algoritmos.\n",nome3,cpf3,sexo[3]); } } return(0); }
  2. Boa tarde pessoal, Estou a alguns dias pensando em como resolver a alternativa "f" do exercício abaixo: Desafio: Faça um programa em C que cadastre 3 alunos. Os dados a serem cadastrados são: nome, CPF, idade, sexo, naturalidade, mensalidade e média da disciplina Algoritmos. Após o cadastro, informe: a) A quantidade de alunos cadastrados (sexo masculino); A média das idades das alunas cadastradas (sexo feminino); c) A média das mensalidades dos alunos(as) que nasceram em “BRASILIA”; d) A quantidade de alunas (sexo feminino) cadastradas com mais de 20 anos; e) A idade do aluno(a) mais novo; f) O nome, o CPF e o sexo do aluno(a) com maior média em Algoritmos. Regras: · O programa não deve aceitar o cadastro do sexo inválido (aceitar apenas ‘M’ ou ‘F’); · O usuário não digitará a média da disciplina Algoritmos e sim 3 notas. A média deverá ser calculada, através da forma da média ponderada (1ª nota – peso 2.5, 2ª nota – peso 3.5 e 3ª nota – peso 4.0) Se fosse para simplesmente calcular a média ponderada e capturar a maior media dentre os 3 alunos era tranquilo de fazer, o que estou sem a menor ideia é como faço para saber qual o aluno tirou a maior média. Como posso criar um vínculo entre a maior media e os dados do aluno para poder imprimir no final do meu programa? O que vocês me sugerem? Segue abaixo o código que fiz: #include <stdio.h> #include <locale.h> #include <stdlib.h> int main() { //Declaração de variáveis float med,men,num,soma,notas[3],media = 0,soma2 = 0,media2; int i,idade,x,y,cont = 0,cont2 = 0,cont3 = 0,s_idade = 0,media_f,cont4 = 0,menor,nat,cont5 = 0; char nome[100],sexo,cpf[20]; setlocale(LC_ALL,"portuguese"); for(i = 1; i <= 1; i++) { printf("\nInforme seu nome: "); gets(nome); fflush(stdin); printf("\nInforme o número do seu CPF: "); gets(cpf); fflush(stdin); printf("\nInforme sua idade: "); scanf("%d",&idade); fflush(stdin); if(i == 1) menor = idade; else{ if(idade < menor) menor = idade; } //Validação do sexo do{ printf("\n- M = MASCULINO\n"); printf("- F = FEMININO\n"); printf("\nSelecione uma das opções acima: "); sexo = getchar(); fflush(stdin); if(sexo == 'M' || sexo == 'F') x = 0; else{ printf("\nOpção inválida!\n"); x++; } if(sexo == 'M') //Capturando pessoas do sexo masculino cont++; else{ cont2++; s_idade = s_idade + idade; //Dados para média de idade do sexo feminino } if(sexo == 'F' && idade > 20) cont4++; }while(x != 0); printf("\nInforme o valor referente a mensalidade: "); scanf("%f",&men); fflush(stdin); //Validação da naturalidade do{ printf("\n1 - BRASÍLIA\n"); printf("2 - OUTRO\n"); printf("\nInforme sua naturalidade: "); scanf("%d",&nat); if(nat == 1){ cont5++; soma2 = soma2 + men; } if(nat > 2){ printf("\nOPÇÃO INVÁLIDA!"); } }while(nat > 2); //Cadastro e validação da nota for(y = 0 ; y <= 2; y++){ do{ printf("\nInforme a nota de 1-10: "); scanf("%f",&notas[y]); fflush(stdin); if(notas[y] >= 1 && notas[y] <=10) cont3++; else printf("\nNota Inválida!"); }while(notas[y] <1 || notas[y] > 10); } system("cls"); } //RESULTADOS**********************************************************************************************************************/ printf("\na)A quantidade de alunos cadastrados (sexo masculino): %d",cont); if(cont2 == 0) printf("\nb)A média das idades das alunas cadastradas (sexo feminino): Não informado dados para cálculo!"); else{ media_f = s_idade / cont2; //Média das idades do sexo feminino printf("\nb)A média das idades das alunas cadastradas (sexo feminino): %d",media_f); } if(cont5 == 0) printf("\nc)A média das mensalidades dos alunos(as) que nasceram em BRASILIA: Não foram inseridos dados para cálculo!"); else{ media2 = soma2 / cont5; printf("\nc)A média das mensalidades dos alunos(as) que nasceram em BRASILIA: %.2f",media2); } printf("\nd)A quantidade de alunas (sexo feminino) cadastradas com mais de 20 anos: %d",cont4); printf("\ne)A idade do aluno(a) mais novo: %d",menor); //printf("\nf)O aluno(a) %s, o CPF: %s e o sexo do aluno(a) %c, obteve maior média em Algoritmos:",nome,cpf,sexo); return(0); } Gostaria também da opinião/críticas de vocês quanto ao meu código, como indentação, estruturas utilizadas e etc. E sugestões de como posso estar melhorando, sou iniciante.
  3. Boa noite. Acredito que possa estar acontecendo do teu programa fechar pelo seguinte: Na função main o else está chamando a função verificaSenha, e dentro desta função logo abaixo do for, você declarou que: mostra=-1; Só que "mostra" se trata de um vetor. Você está atribuindo um valor a este vetor sem mencionar um índice dele. Provavel que o correto seria o seguinte: mostra[i]=-1; Faça o teste e avise se deu certo. Espero ter ajudado

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...