Ir ao conteúdo

ajuda com código em c


fabiosl

Posts recomendados

Postado

Olá pessoal.

Estou precisando muito de uma ajuda. Sou iniciante em C e estou apanhando para fazer um programa para resolver o seguinte problema da faculdade:

Um pecuarista possui uma determinada quantia de bois, que possuem um identificador numérico (de 1 a n) cada um. Faça um programa que:

a. receba o peso de cada boi, um por vez, e o armazene em um vetor. Se o peso digitado for 0 significa que não há mais bois a serem inseridos;

b. mostre a lista de todos os bois com seus identificadores e também os identificadores do boi mais gordo e do boi mais magro. Se houver dois ou mais bois mais gordos ou mais magros mostrar o de menor identificador;

Gostaria de um fonte que resolva este problema ou pelo menos um parecido que possa ser mudado para essa questão.

Agradeço :bandeira: qualquer ajuda que vocês possam me dar.

Postado

Existe muitas formas de resolver essa questão.

Eis uma das formas:


#include <stdio.h>
#include <stdlib.h>

int main()
{
    int cont, i=0;
    float *num_boi = NULL;
    float peso;
    float mais_gordo = 0;
    float mais_magro = 20000;  
        
    num_boi = (float *)calloc(1, sizeof(float));
    while(peso > 0){
      printf("Digite o peso do %do BOI: ", (i+1));
      scanf("%f", &peso);
      num_boi[i] = peso;
      
      if(peso > 0){      
        if(peso > mais_gordo){
          mais_gordo = peso;
          if(peso < mais_magro){
            mais_magro = peso;
          }
        }
      }
      i++;
      num_boi = (float *)realloc(num_boi, (i+1)*sizeof(float));
    }
    cont = i;
    puts("\nLISTA \n");  
    for(i=0; i<cont-1; i++){
      printf("%do Boi tem %.2fKg\n", (i+1), num_boi[i]);
    }
    
    for(i=0; i<cont; i++){
      if(mais_gordo == num_boi[i-1]){  
        printf("\nO BOI mais pesado e o %do\n", i); break; }
    }
    for(i=0; i<cont; i++){
      if(mais_magro == num_boi[i-1]){    
        printf("O BOI mais leve e o %do\n\n", i);  break;}
    }              
      
    free(num_boi);
  system("pause");
return 0;
}      

Espero te-lo ajudado!

T+

Postado

olá amigo. seu código é uma maravilha resolve sim o problema. só tem um erro: ele sempre aponta o boi mais magro como sendo o boi no. 1. quando você tiver um tempo você poderia dar uma olhada. eu tentei arrumar mas não consegui. o resto ta ótimo. obrigado pela ajuda você me ajudou mesmo. valeu

Postado

amigo. não tenho certeza porque não to aqui com um compilador de C.

mas tenta esse código aqui q eu adaptei do amigo acima...

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int cont, i=0;
    float *num_boi = NULL;
    float peso;
    float mais_gordo = 0;
    float mais_magro = 0;  
        
    num_boi = (float *)calloc(1, sizeof(float));
    while(peso > 0){
      printf("Digite o peso do %do BOI: ", (i+1));
      scanf("%f", &peso);
      num_boi[i] = peso;
      
      if(peso > 0 && i > 0){      
        if(peso > num_boi[mais_gordo]){
          mais_gordo = i;
          if(peso < num_boi[mais_magro]){
            mais_magro = i;
          }
        }
      }
      i++;
      num_boi = (float *)realloc(num_boi, (i+1)*sizeof(float));
    }
    cont = i;
    puts("\nLISTA \n");  
    for(i=0; i<cont-1; i++){
      printf("%do Boi tem %.2fKg\n", (i+1), num_boi[i]);
    }
    
       printf("\nO BOI mais pesado e o %do\n", mais_gordo+1);
       printf("O BOI mais leve e o %do\n\n", mais_magro+1);
      
    free(num_boi);
  system("pause");
return 0;
}      

acho q é isso ai...

Postado
  Citação
só tem um erro: ele sempre aponta o boi mais magro como sendo o boi no. 1

Peço desculpas colega! O erro estava aqui:


...
if(peso > 0){      
        if(peso > mais_gordo){
          mais_gordo = peso;
          if(peso < mais_magro){
            mais_magro = peso;
          }
        }
      }
...

Os ifs estavam aninhados...

Troque essa parte por esta:


     if(peso > 0){      
        if(peso > mais_gordo){
          mais_gordo = peso;
        }
        if(peso < mais_magro){
          mais_magro = peso;
        }
      }

Que resolve o problema!

valeu!

...

...

Devil Duck seu código vai dá erro de compilação porque você colocou o identificador dos elementos do vetor do tipo float. Tem que ser int.

if(peso > num_boi[mais_gordo]){

mais_gordo é do tipo float o que não é certo para um identificador de elementos...

flow cara!

Postado

olá pessoal, agradeço a vocês pela ajuda que me deram. sem dúvida eu não teria conseguido sem vocês. quanto ao problema do código eu consegui resolve ontem a noite. o código funcionando sem problemas ficou assim:

#include <stdio.h>

#include <stdlib.h>

int main()

{

int cont, i=0;

float *num_boi = NULL;

float peso;

float mais_gordo = 0;

float mais_magro = 20000;

num_boi = (float *)calloc(1, sizeof(float));

while(peso > 0){

printf("Digite o peso do %do BOI: ", (i+1));

scanf("%f", &peso);

num_boi = peso;

if(peso > 0 && peso > mais_gordo){

mais_gordo = peso;}

else if (peso >0 && peso < mais_magro){

mais_magro = peso;}

i++;

num_boi = (float *)realloc(num_boi, (i+1)*sizeof(float));

}

cont = i;

puts("\nLISTA \n");

for(i=0; i<cont-1; i++){

printf("%do Boi tem %.2fKg\n", (i+1), num_boi);}

for(i=0; i<cont; i++){

if(mais_gordo == num_boi[i-1]){

printf("\nO BOI mais pesado e o %do\n", i, mais_gordo); break;}

}

for(i=0; i<cont; i++){

if(mais_magro == num_boi[i-1]){

printf("\nO BOI mais leve e o %do\n\n", i, mais_magro); break; }

}

free(num_boi);

system("pause");

return 0;

}

mais uma vez agradeço a cooperação d vocês, foi de muita ajuda sem dúvida. me ponho a disposição para ajudar como puder. msn: contajogofabio@hotmail.com

:bandeira:

Postado

JMaC::,

hummmm pod cre.

sem um compilador é fods heuaheuaheu

e ainda estava numa correria.

mas nun à de ser nada.

problema já foi resolvido...

té a proxima...

Arquivado

Este tópico foi arquivado e está fechado para 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

Mostrar 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

Mostrar mais  
×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!