Tenho esse algoritmo pra fazer:Codifique, compile e execute um programa em C que declare na função principal uma estruturapara o cadastro de alunos de uma academia. a) Para cada aluno armazenar: nome, sobrenome (apenas um), ano de nascimento e um vetor de 6posições indicando quais dias da semana o aluno frequenta a academia. Lembrando que aacademia 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 armazenaros 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;
}