Duvida sobre erro em um algoritmo em C com ponteiros
08/12/2018
0
Tenho esse algoritmo pra fazer:
Codifique, compile e execute um programa em C que declare na função principal uma estrutura
para o cadastro de alunos de uma academia. a) Para cada aluno armazenar: nome, sobrenome (apenas um), ano de nascimento e um vetor de 6
posições indicando quais dias da semana o aluno frequenta a academia. Lembrando que a
academia funciona de segunda a sábado;
b) Ao iniciar o programa, o usuário deverá informar o número de alunos que serão armazenados;
c) O programa deverá alocar dinamicamente a quantidade necessária de memória para armazenar
os registros dos alunos;
d) O programa deverá pedir ao usuário que entre com as informações dos alunos;
e) Ao final, o programa deve exibir na tela os dados armazenados e liberar a memória alocada. Não esqueça de usar funções para estruturar o seu código.
Consegui fazê-lo rodar mas sem o uso de ponteiro e creio que estou confundindo o conceito de ponteiro e alocação dinâmica. Então gostaria que avaliassem meu código e dissessem o que estou fazendo de errado.
Código:
Codifique, compile e execute um programa em C que declare na função principal uma estrutura
para o cadastro de alunos de uma academia. a) Para cada aluno armazenar: nome, sobrenome (apenas um), ano de nascimento e um vetor de 6
posições indicando quais dias da semana o aluno frequenta a academia. Lembrando que a
academia funciona de segunda a sábado;
b) Ao iniciar o programa, o usuário deverá informar o número de alunos que serão armazenados;
c) O programa deverá alocar dinamicamente a quantidade necessária de memória para armazenar
os registros dos alunos;
d) O programa deverá pedir ao usuário que entre com as informações dos alunos;
e) Ao final, o programa deve exibir na tela os dados armazenados e liberar a memória alocada. Não esqueça de usar funções para estruturar o seu código.
Consegui fazê-lo rodar mas sem o uso de ponteiro e creio que estou confundindo o conceito de ponteiro e alocação dinâmica. Então gostaria que avaliassem meu código e dissessem o que estou fazendo de errado.
Código:
#include <stdio.h> #include <stdlib.h> #include <locale.h> #include <string.h> #include <math.h> int main(){ setlocale(LC_ALL, "Portuguese_Brazil"); struct cadastro{ char nome[20]; char sobrenome[30]; char ano[10]; int dias[6]; }; int n,i,j,*p; printf("Digite quantos alunos cadastrar: "); scanf("%d",&n); setbuf(stdin,NULL); printf("\\n"); p=(int *) malloc(n*sizeof(int)); struct cadastro c[*p]; for(i=0;i<n;i++){ printf("%dº aluno para cadastrar:\\n\\n",i+1); printf("Nome: "); fgets(c[p[i]].nome,20,stdin); setbuf(stdin,NULL); printf("Sobrenome (apenas um): "); gets(c[p[i]].sobrenome); setbuf(stdin,NULL); printf("Ano de nascimento: "); gets(c[p[i]].ano); setbuf(stdin,NULL); printf("\\nDias na semana que frequenta a academia (0 para não; 1 para sim):\\n"); setbuf(stdin,NULL); for(j=0;j<6;j++){ printf("Dia %d: ",j+1); scanf("%d",&c[p[i]].dias[j]); setbuf(stdin,NULL); } printf("\\n\\n"); } printf("\\n\\nDados cadastrados dos alunos: \\n\\n"); for(i=0;i<n;i++){ printf("%dº aluno: \\n",i+1); printf("Nome: %s",c[p[i]].nome); printf("Sobrenome: %s\\n",c[p[i]].sobrenome); printf("Ano de nascimento: %s\\n",c[p[i]].ano); printf("O aluno foi na academia nos seguintes dias:\\n"); if(c[p[i]].dias[0]==1) printf("Segunda, "); if(c[p[i]].dias[1]==1) printf("Terça, "); if(c[p[i]].dias[2]==1) printf("Quarta, "); if(c[p[i]].dias[3]==1) printf("Quinta, "); if(c[p[i]].dias[4]==1) printf("Sexta, "); if(c[p[i]].dias[5]==1) printf("Sábado"); printf("\\n\\n\\n"); } free(p); return 0; }
John Cunha
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)