Ir ao conteúdo
  • Cadastre-se

igegedd

Membro Júnior
  • Posts

    17
  • Cadastrado em

  • Última visita

Tópicos solucionados

  1. O post de igegedd em Alocação de memória impedindo de ler o arquivo foi marcado como solução   
    Tipo, eu tentei alocar a memória pra minha struct
    Ela tá declarada como Alunos A[TAM] (tam é o tamanho do vetor da struct)
    ai quando vou alocar a memória pra ela usando struct Alunos *A =malloc(TAM*sizeof(struct Alunos));
    ela não lê mais os dados do arquivo alunos.txt
     
    #include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> #include <time.h> #define TAM 116 typedef struct Alunos{ char nome[50]; int matricula; float notas[3]; float media; }Alunos; struct Alunos A[TAM]; //FUNÇÕES void imprimir_aluno(int i){ printf("Aluno %d: %s\n",(i+1),A[i].nome); } void imprimir_notas(int i){ printf("Notas finais: %0.1f, %0.1f, %0.1f\n",A[i].notas[0],A[i].notas[1],A[i].notas[2]); } void imprimir_matricula(int i){ printf("Matricula: %d\n",A[i].matricula); } float media; void imprimir_media(int i){ media=(A[i].notas[0]+A[i].notas[1]+A[i].notas[2])/3.0; printf("Media do aluno: %0.1f\n",media); } void swap(Alunos *x,Alunos *y){ struct Alunos tmp = *x; *x =*y; *y = tmp; } void Bubble_sort(Alunos *A, int n){ int i, j; for (i = (n - 1); i > 0; i--) { for (j = 0; j < i; j++) { if (A[j].matricula > A[j + 1].matricula) { swap(&A[j], &A[j + 1]); } } } } int buscador; Alunos BuscarAluno(int buscador,Alunos A[TAM]){ Alunos a; int c=2; for(int i=0; i<TAM;i++){ if(buscador==A[i].matricula){ a=A[i]; c=2; return a; break; } c = 1; } if(c != 2){ a.matricula = -1; return a; } } int main(){ FILE *arqalunos; if((arqalunos=fopen("alunos.txt","r+"))==NULL){ printf("não foi possível abrir o arquivo."); system("pause"); exit(1); } struct Alunos *A =malloc(TAM*sizeof(struct Alunos)); if(A) if(arqalunos!=NULL){ for(int i=0;i<TAM;i++){ fscanf(arqalunos,"%d",&A[i].matricula); fscanf(arqalunos,"%s",&A[i].nome); fscanf(arqalunos,"%f",&A[i].notas[0]); fscanf(arqalunos,"%f",&A[i].notas[1]); fscanf(arqalunos,"%f",&A[i].notas[2]); } } int entrada,i,j; int busca; printf("Digite o numero de acordo com a opcao para imprimir:\n\n"); printf("1- Elementos\n"); printf("2- Nomes dos alunos\n"); printf("3- Nome dos alunos e suas notas finais\n"); printf("4- Buscar os dados de um aluno\n"); printf("5- Alunos ordenados de acordo com a matricula\n"); printf("6- Editar as notas do aluno (necessario busca)\n"); printf("7- Matricula, nome e maior nota da turma\n"); printf("8- Matricula, nome e menor nota da turma\n"); printf("9- Alunos aprovados, reprovados e media geral da turma\n"); printf("0- Sair do programa\n\n"); do{ scanf("%d",&entrada); setbuf(stdin,NULL); fflush(stdin); switch(entrada){ case 1: for(i=0;i<TAM;i++){ imprimir_aluno(i); imprimir_matricula(i); imprimir_notas(i); imprimir_media(i); printf("\n"); } printf("\n"); break; case 2: for(i=0;i<TAM;i++){ imprimir_aluno(i); printf("\n"); } printf("\n"); break; case 3: for(i=0;i<TAM;i++){ imprimir_aluno(i); imprimir_notas(i); imprimir_media(i); printf("\n"); } printf("\n"); break; case 4:/* Struct printf("Digite o numero de Matricula:\n"); scanf("%d",&buscador); a = BuscarAluno(buscador,A); if(A->matricula != -1){ imprimir_aluno(i); imprimir_matricula(i); imprimir_notas(i); imprimir_media(i); }else{ printf("Matricula não foi encontrada\n"); }*/ break; case 5: for(i=0;i<TAM;i++){ Bubble_sort(A, TAM); imprimir_aluno(i); imprimir_matricula(i); printf("\n"); } printf("\n"); break; case 6: printf("oil"); break; } }while(entrada!=0); printf("Programa finalizado!"); free(A); return 0; }  
    alunos.txt

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!