Comecei a estudar C a dois meses e estou com um problema nesse programa:
A dúvida maior é em relação a passar a struct inteira para uma função de ordenação e dentro dela como se atribui seus valores para variáveis locais.
Procurei detalhar o programa e os possíveis preoblemas:
Alguém pode me ajudar?
// O programa deve ler um vetor de alunos tipo "struct", contendo nome, matricula e CR e depois ordena-los
// por ordem crescente do cr usando a ordenaçao "insert sort".
// A main está OK o algoritmo da funçao "insert" está OK tambem (já testei com vetor simples de inteiros)
#include<stdio.h>
# define n 5
/*criaçao do struct Aluno*/
typedef struct aluno
{
//char nome [n];
int mat;
float cr;
}Aluno;
/* Funçao que vai ordenar crescentemente os CR's e imprimir os dados dos alunos já ordenados*/
Aluno insert(Aluno tab[])
{
Aluno aux; // vi essa atribuição aqui no fórum, mas não consegui usar.
int i, j, y, k;
float z;
//char x[n];
/*O erro pode estar aqui: Talvez não seja permitido atribuir para essas variaveis declaradas acima,
o conteúdo da struct Aluno, pode ser esse o problema...mas mesmo assim o programa compila */
for(i=1;i<n;i++)
{
x=tab[i].nome;
y=tab[i].mat;
z=tab[i].cr;
for(j=i-1;j>=0 && tab[j].cr > z;j--)
{
Vet[j+1].nome=tab[j].nome;
tab[j+1].mat=tab[j].mat;
tab[j+1].cr=tab[j].cr;
}
tab[j+1].nome=x;
tab[j+1].mat=y;
tab[j+1].cr=z;
}
/* Imprimir */
printf("Informações dos alunos: \n");
for (k=0;k<n;k++);
{
printf ("\nNome: %s \nMatrícula: %d \nCR: %.2f \n",tab[k].nome tab[k].mat, tab[k].cr);
}
printf("\n\n");
return tab[n];
}
int main ()
{
# define n 5
int i, k;
Aluno tab[n];
/*entrada de dados*/
for (i=0;i < n; i++)
{
printf("Digite o nome do %d° aluno: ", i+1);
scanf("%s", tab[i].nome);
printf("Digite a matrícula do %d° aluno: ", i+1);
scanf("%d", &tab[i].mat);
printf("Digite o CR do %d° aluno: ", i+1);
scanf("%f", &tab[i].cr);
}
for (i=0;i < n; i++) // Só para testar se o vetor está armazenando corretamente os dados.
{
printf("\nNome: %s \nMatrícula: %d\n CR: %.2f\n",tab[i].nome tab[i].mat, tab[i].cr);
}
insert (tab); // chama insert
return 0;
}
Não reparei que quando colei o programa ficou que a identação ficou desse jeito...foi mal
Pergunta
dusty
Comecei a estudar C a dois meses e estou com um problema nesse programa:
A dúvida maior é em relação a passar a struct inteira para uma função de ordenação e dentro dela como se atribui seus valores para variáveis locais.
Procurei detalhar o programa e os possíveis preoblemas:
Alguém pode me ajudar?
Não reparei que quando colei o programa ficou que a identação ficou desse jeito...foi mal
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.