Ir ao conteúdo
  • Cadastre-se

Dúvida em C - Parte 2


nilton_sr

Posts recomendados

Boa tarde pessoal!!!

 

Como fechei o outro tópico (http://forum.clubedohardware.com.br/forums/topic/1070377-programa-em-c/). Quero agradecer a Math.Pi e ao Fabio Massita por ter ajudado e resolvido o  meu problema, mas agora preciso de mais um reforço para finalizar meu programa. A questão é a seguinte preciso colocar em ordem alfabética as modelos aprovadas. Segue meu código do tópico anterior e gostaria de saber como posso através dele e imprimir as candidatas aprovadas.

#include <conio.h>#include <stdio.h>#include <string.h>int main(){    char nome[16];    float altura,peso;    int idade, result;    	altura = 0;	peso = 0;	idade = 0;    FILE *arq;    arq = fopen("Modelos.dat","r");    if (arq == NULL)    {            printf("\nArquivo nao encontrado");            return 1;    }    printf("\nClassificacao das Modelos.\n\n");    while(fgets(nome,16,arq)!=NULL)    {          fscanf(arq, "%f %f %i ",&altura,&peso,&idade);          printf("\nCandidata: %s\n",nome);          if(altura>=1.70 && altura<=1.85)		  { 			 printf("\nEstatura dentro dos padroes."); 			 altura = 1;     	  }          else          {          	printf("\nEstatura fora dos padroes.");            altura = 0;          }          if(peso>=48.0 && peso<=60.0)		  {             printf("\nPeso dentro dos padroes.");             peso = 1;          }		  else		  {		  	printf("\nPeso fora dos padroes.");		  	peso = 0;		  }          if(idade>=17 && idade<=21)		  {             printf("\nIdade dentro dos padroes.");             idade = 1;          }          else          {            printf("\nIdade fora dos padroes.");            idade = 0;          }                    result = altura + peso + idade;          if(result == 3)             printf("\nCandidata aprovada!!!.\n\n");          else             printf("\nCandidata reprovada!!!\n\n");    }fclose(arq);getch();return 0;}

Grato

Nilton

Link para o comentário
Compartilhar em outros sites

Meu nome é Tiago Massita, e não Fabio... Rs

Mas tudo bem, vamos ao que interessa :)

 

Não sei como você aprendeu e está aprendendo e nem o que, portanto vou dar minha sugestão e depois você posta o que conseguir, já que dá pra fazer isso de diversas maneiras...

 

Recomendo você criar uma lista e armazenar nessa lista o nome de todas modelos que forem aprovadas.

Ou seja, depois da verificação final, se foi aprovada ou não, adiciona(ou não) a lista.

Após percorrer todo o arquivo, ordene a lista de modelos aprovadas utilizando algum algoritmo de ordenação (http://pt.wikipedia.org/wiki/Algoritmo_de_ordena%C3%A7%C3%A3o). Lembrando que alguns são mais complexos, outros mais simples, alguns você pode utilizar conforme for adicionando a modelo na lista, etc... Veja o que é melhor para sua situação, considerando complexidade, desempenho, etc :)

 

Para fazer a comparação de strings, você pode utilizar o strcmp() da biblioteca string.h...

 

Obs: Você pode criar sua lista de várias maneiras também, utilize o que você já conhece e o que está conhecendo, não precisa pular etapas do aprendizado, faça como conseguir, ajudarei como puder :)

 

Até mais!

 

Edit:

Se você ainda não conhece nenhum algoritmo de ordenação, acho válido também você tentar fazer a ordenação do jeito que você conseguir pensar, ajuda a entender como a ordenação funciona... E provavelmente, quando você comparar o que você fez com os algoritmos existentes, você deve perceber que fez um bubblesort... Pelo menos quando eu estava aprendendo, foi o que eu fiz... Hahaha

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Caro Tiago, primeiramente desculpa pelos erro e seu nome, bom entendi mais ou menos o que você me disse, o problema é que nem sei por onde começar, estou fazendo ciências da computação e estou no 3º semestre tenho muito ainda que aprender, mas graças a suas dicas consegui fazer a segunda parte deste meu trabalho. A questão é como faço esta lista??? É através de um vetor, de uma struct e como puxar as aprovadas para esta lista  :confused: .

 

Desculpe mas poderia passar algum exemplo para mim através de código se não for pedir muito.  :rolleyes:

 

Grato Nilton  :D

Link para o comentário
Compartilhar em outros sites

Ola Caro Thiago

 

Estava conversando com a professora a respeito do meu projeto, e ela disse que não a necessidade de usar um lista. Pois ela me deu a seguinte solução, que posso usar uma struct onde eu puxaria somente os nome da aprovadas, desta forma:

 

Declarando ela:

#define max 50struct a {char nome[20];//Criando struct a         };struct a vetap[max]; //Aqui acredito que ela joga num vetorint contap=0, j; //Aqui um contador

E na função abaixo coloquei isto

result = altura + peso + idade;          if(result == 3)            {               printf("\nCandidata aprovada!!!.\n\n");               strcpy(vetap[contap],nome);//Onde aqui copia os nomes somente das aprovadas               ++contap;            }          else             printf("\nCandidata reprovada!!!\n\n");

é nessa parte que esta dando erro, e depois não sei como imprimir o resultado em tela

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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!