Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda Com Código Em C


fabiosl

Pergunta

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 :lol: qualquer ajuda que vocês possam me dar.

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

bom. não estou conseguindo ageitar a lógica do programa para que o compilador rode certinho. a base de estudo que to utilizando é essa (pelo menos é ultima tentativa que eu fiz até agora, mas estou batendo cabeça):

#include <stdio.h>

main()

{

int iQTDBoi = 0;

printf("\nEntre com a quantidade de bois:");

scanf("%d",&iQTDBoi);

int vetor[iQTDBoi];

int peso;

i = 0;

do

{

printf(“\nDigite o peso do boi:”);

scanf("%d",&peso);

i++;

vetor=peso;

}

while (peso != 0);

int temp;

int maior=vetor;

int menor=vetor;

for (temp = i-1;temp > 0;temp--)

{

if (vetor[temp] >= maior) maior = temp;

if (vetor[temp] <= menor) menor = temp;

}

for (temp = 0;temp <= i;temp++)

{

printf("Boi peso:%d id:%d\n",vetor[temp],temp);

}

printf("Boi mais gordo: %d",maior);

printf("Boi mais magro: %d",menor);

return(0)

}

só que sempre aparece erro, já tentei inumeras mudanças e não funciona. a questão é: não consigo fazer o compilador entender o meu pensamento.

agradeço qualquer idéia (modificação deste código ou outro melhor). agradeço mesmo.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, dei uma corrigida no código. Tinham alguns erros de sintaxe, e provavelmente o seu compilador devia avisar sobre eles. Mas, também haviam vários erros de lógica. Qual o sentido em que se perguntar a quantidade de bois, se depois você não a utilizaria para nada? Outro problema é que você estava jogando o valor do índice para maior e menor, ou ao invés do valor contido no índice do vetor.

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

int main()
{
    int iQTDBoi = 0;
    printf("\nEntre com a quantidade de bois:");
    scanf("%d",&iQTDBoi);
    int vetor[iQTDBoi-1];
    int peso;
    int i = 0;
    do
    {
        printf("\nDigite o peso do boi:");
        scanf("%d",&peso);
        vetor[i]=peso;
        i++;
    }
    while (i<iQTDBoi);

    int temp;
    int maior = vetor[0];
    for (temp = 0; temp < iQTDBoi; temp++)
    {
        if (vetor[temp] > maior) maior = vetor[temp];
    }

    int menor = vetor[maior];
    for (temp = 0; temp < iQTDBoi; temp++)
    {
        if (vetor[temp] < menor) menor = vetor[temp];
    }

    for (temp = 0;temp < iQTDBoi; temp++)
    {
        printf("Boi peso:%d id:%d\n",vetor[temp],temp);
    }
    printf("Boi mais gordo: %d\n", maior);
    printf("Boi mais magro: %d\n", menor);

    system("pause");    
    return(0);
}

Certo? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

olá pessoal andei estudando a questão e cheguei a este fonte:

ele funciona. recebe o peso dos bois e para assim que o peso 0(zero) é digitado. depois disso ele mostra a lista do peso dos bois e seus numeradores, além de informar qual o é o mais pesado. porem ele não consegue mostrar o mais leve. já tentei varias modificações e nada funcionou. ele sempre acusa que o boi mais pesado é o 1º (sempre seja la qual for o peso do 1º e mesmo se o peso dos outros for menor ele sempre acusa que o mais eleve é o 1º. me ajudem a dar uma corrigida para resolver o problema. desde já agradeço a todos.

#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){

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);

}

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;

}

Link para o comentário
Compartilhar em outros sites

  • 0

olá pessoal andei estudando a questão e cheguei a este fonte:

ele funciona. recebe o peso dos bois e para assim que o peso 0(zero) é digitado. depois disso ele mostra a lista do peso dos bois e seus numeradores, além de informar qual o é o mais pesado. porem ele não consegue mostrar o mais leve. já tentei varias modificações e nada funcionou. ele sempre acusa que o boi mais pesado é o 1º (sempre seja la qual for o peso do 1º e mesmo se o peso dos outros for menor ele sempre acusa que o mais eleve é o 1º. me ajudem a dar uma corrigida para resolver o problema. desde já agradeço a todos.

O exemplo anterior já está correto. Por que não utilizar a mesma idéia?

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

no exemplo anterior era necessário informar a qtd de bois, o que foi abominado pelo professor (aqle fd...). apo´s um pouco de estudo consegui resolver esse problema. ai veio o problema do boi mais magro. depois de um pouco mais de estudo descobri que o problema estava na entrada dos valores para suas respectivas variaveis mais_gordo e mais_magro. o problema era que a variavel mais_magro só recebia o 1º valor inserido, dai quando o programa percorria o vetor para verificar o mais magro só havia o 1º peso inserido, dai ele mostrava o mais magro como sendo o 1º. o código correto 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;

}

agradeço a todos que ajudaram e me ponho a disposição de vocês para ajudar no que puder: MSN - contajogofabio@hotmail.com

:lol:

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...