Ir para conteúdo
Fórum Script Brasil

dusty

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre dusty

dusty's Achievements

0

Reputação

  1. dusty

    STRUCT e FUNÇÂO

    Otimizei o programa. Ele está fazendo tudo corretamente, o problema é que como eu fiz a função insert retornar um tipo "Aluno", daí só consigo imprimir os dados de apenas um aluno, que é aquele que eu determino dentro insert, e não de todos, como é o objetivo. Agora a minha dúvida é como imprimir: Alguém sabe como consigo imprimir todos os alunos? #include<stdio.h> #include<string.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*/ void imprime(struct aluno tab[n]) { int k; 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"); } Aluno insert(struct aluno tab[n]) { Aluno aux; // vi essa atribuição aqui no fórum, mas não consegui usar. int i, j, k; for(i=1;i<n;i++) { strcpy(aux.nome,tab[i].nome); aux.mat=tab[i].mat; aux.cr=tab[i].cr; for(j=i-1;j>=0 && tab[j].cr > aux.cr;j--) { strcpy(tab[j+1].nome,tab[j].nome); tab[j+1].mat=tab[j].mat; tab[j+1].cr=tab[j].cr; } strcpy(tab[j+1].nome,aux.nome); tab[j+1].mat=aux.mat; tab[j+1].cr=aux.cr; } return (tab[3]); // só imprime esse cara } int main () { # define n 5 int i, k; Aluno tab[n], tab2[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); } tab2 [n] = insert (tab); // chama insert. Só recebe um aluno para imprimir. printf("Informações dos alunos: \n"); for (k=0;k<n;k++); { printf ("\nNome: %s \nMatrícula: %d \nCR: %.2f \n",tab2[k].nome, tab2[k].mat, tab2[k].cr); } printf("\n\n"); return 0; }
  2. dusty

    STRUCT e FUNÇÂO

    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
×
×
  • Criar Novo...