Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

yala neb

linguagem C...porque esse codigo da erro..

Recommended Posts

TIPO, ELE COMPILA CERTINHO, SOH QUE não mostra A QUNTIDADE DE GADO QUE VAI PARA O ABATE...SOH OSTRA 1.

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
#define TAM 2
#define clear fflush(stdin)

typedef struct{

int codigo;
float leite;
float alim;
char abate[3];

}Gado;

void QLeite(Gado gado,int l);

int main()
{
   /**
   Elaborar um algoritmo que auxilie no controle de uma fazenda de gado que possuí um total de 2000
   cabeças de gado. A base de dados é formada por um conjunto de estruturas (registros) contendo
   os seguintes campos referente a cada cabeça de gado:
   código: código da cabeça de gado,
   leite: número de litros de leite produzido por semana,
   alim: quantidade de alimento ingerida por semana - em quilos,
   abate: ‘N" (não) ou ‘S’ (sim).
   Elaborar funções para:
   a) Ler a base de dados (código, leite, alim, nasc.mês e nasc.ano), armazenado em um vetor de estruturas.
   B) Devolver a quantidade total de leite produzida por semana na fazenda.
   c) Devolver a quantidade total de alimento consumido por semana na fazenda.
   d) Devolver número de cabeças de gado que iram para o abate.
   */

   Gado gado[TAM];
   int i,morte=0,vida=0,l=0,c=0;
   float qleite[TAM],qalim[TAM],a,b;

        for(i=0;i<TAM;i++)
       {
               printf("\n informe o codigo da cabeca de gado:");
               scanf("%d",&gado[i].codigo);
               printf("\n informe a quantidade de leite produzido por semana:");
               scanf("%f",&gado[i].leite);
               qleite[i]=gado[i].leite;
               printf("\n informe a quantidade de alimento ingerido por semana:");
               scanf("%f",&gado[i].alim);
               qalim[i]=gado[i].alim;
               printf("\n o gado vai para o abate:");
               clear;
               gets(gado[i].abate);

               if(gado[i].abate=='s')
               {
                   morte++;
               }
               l++;

               a=qleite[i]*l;
               b=qalim[i]*l;
               c=morte++;

       }
   printf("\n vao para o abate %d cabecas de gado.",c);
   printf("\n quantidade de leite produzido por semana:%.2f ",a*7);
   printf("\n quantidade de alimento produzido por semana:%.2f\n ",a*7);


   system("pause");
   return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Corrigi o seu código, veja:

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define TAM 2
#define clear fflush(stdin)

typedef struct{

int codigo;
float leite;
float alim;
char abate; // Não é necessário um string, pois só será usado um caractere para "s" ou "n".

}Gado;

void QLeite(Gado gado,int l);

int main()
{
   /**
   Elaborar um algoritmo que auxilie no controle de uma fazenda de gado que possuí um total de 2000
   cabeças de gado. A base de dados é formada por um conjunto de estruturas (registros) contendo
   os seguintes campos referente a cada cabeça de gado:
   código: código da cabeça de gado,
   leite: número de litros de leite produzido por semana,
   alim: quantidade de alimento ingerida por semana - em quilos,
   abate: ‘N" (não) ou ‘S’ (sim).
   Elaborar funções para:
   a) Ler a base de dados (código, leite, alim, nasc.mês e nasc.ano), armazenado em um vetor de estruturas.
   B)/>/> Devolver a quantidade total de leite produzida por semana na fazenda.
   c) Devolver a quantidade total de alimento consumido por semana na fazenda.
   d) Devolver número de cabeças de gado que iram para o abate.
   */

   Gado gado[TAM];
   int i,morte=0,l=0; // c e vida eram inúteis.
   float a = 0, b = 0; // qleite e qalim também eram inúteis, pois teriam os mesmos valores de gado.

        for(i=0;i<TAM;i++)
       {
               printf("\n informe o codigo da cabeca de gado:");
               scanf("%d%*c",&gado[i].codigo);
               printf("\n informe a quantidade de leite produzido por semana:");
               scanf("%f%*c",&gado[i].leite);
               printf("\n informe a quantidade de alimento ingerido por semana:");
               scanf("%f%*c",&gado[i].alim);
               printf("\n o gado vai para o abate:");
               clear;
               scanf("%c%*c", gado[i].abate); // Troquei gets por scanf para não haver um overflow.

               if(*gado[i].abate=='s')
               {
                   morte++;
               }
               l++;

               a += gado[i].leite; // Foi modificado, pois no código anterior a logica estava errada.
               b += gado[i].alim; // Este também pelo mesmo motivo.
       }
   printf("\n vao para o abate %d cabecas de gado.",morte);
   printf("\n quantidade de leite produzido por semana:%.2fl ",a);
   printf("\n quantidade de alimento ingerido por semana:%.2fkg\n ", B);


   system("pause");
   return 0; // Há outras modificações, mas creio que sejam evidentes.
}

 

Se houver mais problemas e só postar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mateus GP,

 

Seria interessante se você explica-ce o que corrigiu no código. Para facilitar o entendimento do autor do tópico e de outras pessoas que possam vir a pesquisar algo no post.

 

Não vamos alimentar a "preguiça" entregando as tarefas prontas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na realidade não estou incentivando a preguiça, apenas a alimentando. Mas veja por outro lado não explicitando as alterações feitas por mim, estou incentivando-os a lerem os dois códigos e descobrir quais as diferenças e a partir destas descobertas aprender a ler e interpretar os mesmos de forma mais clara, mas levando em conta seu ponto de vista vou explicar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.