Ir ao conteúdo
  • Cadastre-se
nilton_sr

Dúvida em C - Parte 2

Recommended Posts

Boa tarde pessoal!!!

 

Como fechei o outro tópico (http://forum.clubedohardware.com.br/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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×