Programa de Cadastro em C

1. Programa de Cadastro em C

Mateus
paprendizc

(usa Nenhuma)

Enviado em 15/06/2016 - 10:46h

Bom dia/ Boa tarde.
Gostaria de uma ajuda estou com um problema em meu código( um problema que parece simples mas não estou achando o erro) é que na hora de imprimir as notas na Busca do usuario só esta saindo a maior nota armazenada no cadastro.

#include <stdio.h>
#include <time.h>

int main() {

char alunos[20];
float notas[80];
char curso[20];
int opcao = 0;
int a, b, bc;

while(opcao != 5) {

printf("\n======================");
printf("\n= CADASTRO DE ALUNOS =");
printf("\n======================");
printf("\n= MENU =");
printf("\n========");
printf("\n 1 - Cadastro Aluno");
printf("\n 2 - Buscar por nome");
printf("\n 3 - Buscar por curso");
printf("\n 4 - Relatorio");
printf("\n 5 - Sair");
printf("\n======================\n");
printf("\nEscolha uma opcao: ");
fflush(stdin);
scanf("%i", &opcao);

// Cadastro
if(opcao == 1) {
printf("\n-> CADASTRAR\n");
for(a=0; a<3; a++) {
fflush(stdin);
printf("\nDigite o nome do aluno %i: ", a+1);
scanf("%c", &alunos[a]);
fflush(stdin);
printf("Digite as notas dos Alunos %i:", a+1);
scanf("%f %f %f %f", ¬as[a], ¬as[a], ¬as[a], ¬as[a]);
fflush(stdin);
printf("Digite o curso do aluno %i:", a+1);
scanf("%c", &curso[a]);
fflush(stdin);

}

}


// Busca pelo nome
else if(opcao == 2) {
printf("\nBUSCAR POR NOME\n");
fflush(stdin);
for(a=0; a<3; a++) {
printf("\nNome do aluno %i: ", a+1);
scanf("%c", &alunos[a]);
fflush(stdin);
printf("Nome: %c\n", alunos[a]);
printf("Curso: %c\n", curso[a]);
printf("Notas: %1.f %1.f %1.f %1.f\n", notas[a], notas[a], notas[a], notas[a]);
fflush(stdin);

}
}


OBS: Estou testando no windows com um compilador o código pois estou sem meu Ubuntu


  


2. Re: Programa de Cadastro em C

Paulo
paulo1205

(usa Ubuntu)

Enviado em 15/06/2016 - 10:50h

Que interessante: os nomes dos seus alunos e dos seus cursos só podem ter um caráter cada (é o que significa o “"%c"” na leitura que você faz com scanf()), e você lê várias notas em cima da mesma posição (chamando scanf() quatro vezes com o mesmo ponteiro “&notas[a]”).

Por favor, explique o que você gostaria de ter feito.


3. RE: Programa de Cadastro em C

Mateus
paprendizc

(usa Nenhuma)

Enviado em 15/06/2016 - 10:53h

Me desculpe, esqueci de citar. Realmente o nome do Aluno é apenas para identificar pela inicial Ex: Maria = M
o curso é a mesma coisa.
Mas as notas eu preciso de 4 notas para cada Aluno. Não estou conseguindo arrumar as notas dentro do vetor.

Na busca devera aparecer (exemplo)
Aluno: A
Curso: B
Notas: 9.0 10.0 5.0 7.0


4. Re: Programa de Cadastro em C

Paulo
paulo1205

(usa Ubuntu)

Enviado em 15/06/2016 - 11:00h

Eu nem cheguei a olhar sua busca. Os erros que eu apontei estão na entrada de dados. Você não vai conseguir buscar nada direito se, antes, não corrigir a entrada de dados.


5. RE: Programa de Cadastro em C

Mateus
paprendizc

(usa Nenhuma)

Enviado em 15/06/2016 - 11:03h

Ok, mas o unico problema que eu tenho agora é na questão de notas no cadastro mesmo.
Como eu faço para armazenas 4 notas para 1 aluno no vetor?


6. Re: Programa de Cadastro em C

Paulo
paulo1205

(usa Ubuntu)

Enviado em 15/06/2016 - 11:22h

Cara, leia o seu programa. Quando você pede o cadastro de um aluno, você acaba tendo de digitar dados de quatro alunos (o for está englobando todas as operações de leitura). Dentro do laço de repetição, você faz uma leitura de quatro valores do tipo float em cima da mesma posição do array de notas. Toda vez que você digitar a opção de cadastro de aluno, vai sobrescrever os dados que tiver digitado antes.

Nada disso me parece fazer sentido. Aliás, acho improvável até que os nomes dos seus alunos e cursos devam ter apenas uma letra (ou então o seu professor está inovando negativamente).

Para mim, faria mais sentido você ter um cadastro de alunos, notas e cursos inicialmente vazio. A cada novo aluno, o tamanho total do cadastro aumentaria uma unidade, para a posição que acomoda os dados do aluno novo. Para cada novo aluno, você leria apenas um nome para o aluno e um nome para o curso, e faria um laço de repetição apenas para ler as múltiplas notas desse aluno específico, e essas notas têm de ser armazenadas em posições diferentes.

Isso é muito diferente do que você fez.


7. Re: Programa de Cadastro em C

Paulo
paulo1205

(usa Ubuntu)

Enviado em 15/06/2016 - 11:49h

E a sua busca também não é uma busca: você sobrescreve o nome do aluno e mostra os demais dados correspondentes ao aluno que acabou de ser sobrescrito.

Vou dar a você a sugestão que eu sempre faço a todos os iniciantes:

Programar não tem nada a ver com a linguagem C, ou nenhuma outra linguagem chamada de programação.

Quer fazer um programa de cadastro de alunos? Então comece esquecendo totalmente C. Aliás, desligue o computador.

Faça esse programa em Português, escrevendo-o à caneta numa folha de papel ou caderno. E faça aos poucos, numa abordagem top-down.

Primeiro você descreve genericamente as macrotarefas do programa (e.g. ele terá uma entrada de dados, uma rotina de busca, opção de gravar em disco etc.).

Depois, você tem de pensar nos dados: o que tem de ser representado? que forma tais elementos têm? quais das macrotarefas vão usá-los, e de que forma?

Depois você olha para cada macrotarefa e começa a esmiuçá-la progressivamente, dividindo-a em partes menores, e analisando cada parte menor para ver se ela possui componentes que possam ser partidos também em componentes menores. Esse ciclo de “dividir para conquistar” vai prosseguir até você ter operações elementares sobre dados elementares.

No fim das contas, você vai ter um registro em Português que, se devidamente ordenado e classificado, se chama “programa”. Qualquer pessoa que saiba Português deve ser capaz de executá-lo.

Uma vez que o seu programa esteja pronto em Português, você poderá tentar traduzi-lo para outra língua. Se você o traduzir para Inglês, ele continuará sendo um programa, mas a diferença será que alguém que fale apenas Inglês poderá passar a executá-lo também. Se o traduzir para uma língua chamada C, também continuará sendo um programa, e ainda terá a vantagem de poder ser posteriormente compilado e executado por um computador.

A tarefa de tradução é mecânica, poderia até ser feita por uma máquina. A sua inteligência como programador ou analista não está no uso de C (ou Python, Pascal, Java), mas em todo o trabalho que veio antes disso.

(Aliás, veja que curioso: a palavra analisar significa justamente dividir em partes para poder ajudar a compreender.)


8. RE: Programa de Cadastro em C

Mateus
paprendizc

(usa Nenhuma)

Enviado em 15/06/2016 - 11:59h

Eu agradeço as dicas para iniciantes. Eu estou treinando C faz +/- 2 mês e tambem achei esse exercicio bem estranho e diferente, mas o exercicio é proposto assim alias, o modelo de exercicio dado foi esse. É obrigatorio usar CHAR e FLOAT para armazenar Alunos,Curso e Notas. O professor só pediu para fazer os laços dentro dos IF/ELSE do modelo de exercicio.
Se o professor esta aplicando errado ou certo... infelizmente ele pediu esse exercicio.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts