PUCRS
Faculdade de Informática
Laboratório de Programação I (EC)

Exercícios de Structs

Enviar por email ([email protected]) para o professor até às 11:30 do dia 16/06/2008

Valendo Nota


Escreva um programa que leia um arquivo texto com o nome, a idade e a altura de um conjunto de pessoa.
Coloque os dados em um vetor de Structs e ordene o vetor por altura. No final, gere um novo arquivo com os dados ordenados.

Para ordenar o vetor de structs, utiliza a função qsort da biblioteca cstdlib. Veja detalhes em http://www.cppreference.com/stdother/qsort.html

#include <cstdlib>
void qsort( void *buf, size_t num, size_t size, int (*compare)(const void *, const void *) );

The qsort() function sorts buf (which contains num items, each of size size) using Quicksort. The compare function is used to compare the items in buf. compare should return negative if the first argument is less than the second, zero if they are equal, and positive if the first argument is greater than the second. qsort() sorts buf in ascending order.


Utilize o programa abaixo como base para a solução do exercício.
 
#include <stdio.h>
#include <cstdlib>

typedef struct{
    // .......
}PESSOA;

int main()
{
     char S1[50];
     PESSOA Povo[10], P;
     FILE *Arq;
     int i;

     leNomeArquivoEntrada(S1);
     if (abreArquivoAEntrada(Arq, S1) == 1)
     {
            do{
                    if (leDadosUmaPessoa(P)== 1)
                    {
                        Povo[i] = P;
                        i++;
                    }
                    else break;
            } while(1);
            fechaArquivo(Arq);
            ordenaVetor(Povo, i);
            imprimeVetor(Povo,i);
    }
    else printf("Erro na abertura do arquivo");
     return 0;

}


Exemplo de arquivo de entrada

Maria
15
1.6
Joao
21
1.8
Abel
23
1.7
Joana
40
1.6


----FIM.