Algoritmia - Ajuda

Guimaraez

Banido
Boa tarde, tou a fazer um algoritmo que:

a) Dado o peso de um animal adulto e a quantidade diária de ração, indique se essa quantidade é a adequada
para um animal com esse peso.
b) Indique qual a quantidade adequada para esse animal, bem como o erro.

Código:
Inicio
    Def peso, racao, erro, adq    int
    Escrever("Qual o peso do animal?")
    Ler (peso)
    Se peso <= 10
        Entao escrever ("Qual a quantidade diaria de racao que o seu animal tem?")
        Ler (racao)
        Se racao = 0,1
        Entao Escrever ("O animal tem a racao adequada para a sua raça")
        Senao
            Adq = 0,1 + (0.002*peso)
            erro = racao - peso
            Escrever ("A quantidade certa é:", adq)
            Escrever ("O erro é de:", erro)
        FSE
    Se 10<peso<=25
        Entao escrever ("Qual a quantidade diaria de racao que o seu animal tem?")
        Ler (racao)
        Se racao = 0,3
        Entao Escrever ("O animal tem a racao adequada para a sua raça")
        Senao
            Adq = 0,3 + (0.002*peso)
            erro = racao - peso
            Escrever ("A quantidade certa é:", adq)
            Escrever ("O erro é de:", erro)
        FSE
    Se 25<peso<=45
        Entao escrever ("Qual a quantidade diaria de racao que o seu animal tem?")
        Ler (racao)
        Se racao = 0,4
        Entao Escrever ("O animal tem a racao adequada para a sua raça")
        Senao
            Adq = 0,4 + (0.002*peso)
            erro = racao - peso
            Escrever ("A quantidade certa é:", adq)
            Escrever ("O erro é de:", erro)
        FSE
    Se peso>45
        Entao escrever ("Qual a quantidade diaria de racao que o seu animal tem?")
        Ler (racao)
        Se racao = 0,5
        Entao Escrever ("O animal tem a racao adequada para a sua raça")
        Senao
            Adq = 0,5 + (0.002*peso)
            erro = racao - peso
            Escrever ("A quantidade certa é:", adq)
            Escrever ("O erro é de:", erro)
        FSE
    Senao escrever ("Erro")
    FSE
    FSE
    FSE
FIM
Algo errado?
 
Última edição:
metia

Código:
    Escrever("Qual o peso do animal?")
    Ler (peso)
    escrever ("Qual a quantidade diaria de racao que o seu animal tem?")
    Ler (racao)

não repito codigo, a variavel ração ja estava defenida

talvez assim

Código:
Inicio
    Def peso, racao, erro, adq    int
    Escrever("Qual o peso do animal?")
    Ler (peso)
    Entao escrever ("Qual a quantidade diaria de racao que o seu animal tem?")
    Ler (racao)
    Se peso <= 10 e racao = 0,1 ou  Se 10<peso<=25 e Se racao = 0,3 ou  Se 25<peso<=45 e Se racao = 0,4 ou Se peso>45 e Se racao = 0,5

        Entao Escrever ("O animal tem a racao adequada para a sua raça")
        Senao
            Adq = racao + (0.002*peso)
            erro = racao - peso
            Escrever ("A quantidade certa é:", adq)
            Escrever ("O erro é de:", erro)
        FSE
   
    FSE
    FSE
FIM

podes desdobrar as condicionais pra ficar mais bonito. so funciona assim o calculo do adq porque o valor da ração era usado
 
Última edição:
Obrigado,

agora tou a tentar transforma-lo para C, para ver se funciona.

Ja tou meio esquecido do C.

Ainda n conseguir por a dar.

Código:
#include <iostream>
using namespace std;
int main ()
{
int peso;
int racao;
int erro;
int adq;    
    cout<<"Qual o peso do animal?";
    cin>>peso;
    cout<<"Qual a quantidade diaria de racao que o seu animal tem?";
    cin>>racao;
    if (peso <= 10) && (if racao == 0,1) ||  if (10<peso<=25) && (if racao == 0,3) ||  (if 25<peso<=45) && (if racao == 0,4) || (if peso>45) && (if racao == 0,5) {
    cout<<"O animal tem a racao adequada para a sua raça e peso";
    else {
            adq = racao + (0.002*peso);
            erro = racao - peso;
            cout<<"A quantidade certa é:"<<adq;
            cout<<"O erro é de:"<<erro; 
         }
    
    }
}

ainda da uns erros
 
Última edição:
O problema está no if. Não podes fazer if (peso<=10) && (if ...). Tens de meter:

Código:
if (peso<=10 && racao==0.1)

E os limites de valores de uma variável tem que ser expressos um por um e não numa expressão só como fizeste em: 10<peso<=25. Tens que colocar

Código:
if (peso>10 && peso<=25)
 
Ave Baderous,

agr:

Código:
#include <iostream>
using namespace std;

int main ()
{
int peso;
int racao;
int erro;
int adq;    
    cout<<"Qual o peso do animal?";
    cin>>peso;
    cout<<"Qual a quantidade diaria de racao que o seu animal tem?";
    cin>>racao;
    if (peso <= 10 && racao == 0,1) ||  if ((peso>10 && peso<=25) && racao == 0,3) ||  if ((peso>1025 && peso<=45) && racao == 0,4) || if (peso>45 && racao == 0,5)
{
    cout<<"O animal tem a racao adequada para a sua raça e peso";
    }
    else {
            adq = racao + (0.002*peso);
            erro = racao - peso;
            cout<<"A quantidade certa é:", adq;
            cout<<"O erro é de:", erro; }
    
    
}

erros:

1>.\5666.cpp(14) : error C2143: syntax error : missing ';' before '||'
1>.\5666.cpp(14) : warning C4390: ';' : empty controlled statement found; is this the intent?
1>.\5666.cpp(15) : error C2143: syntax error : missing ';' before '{'
1>.\5666.cpp(18) : error C2181: illegal else without matching if
 
isso dos || é a mesma situacao da de cima,
so vais utilizar apenas um if e nas condicoes é que tens que por os || a separar


acho que o else tá fora do sitio

if(condicao){
....
}else{
....
}

e penso que os couts nao funcionam assim,pelo menos eu nunca fiz assim
deverás fazer
cout<<"A quantidade certa é:"<<adq<<endl; // podes por o endl para passar para outra linha
cout<<"O erro é de:"<<erro;
 
Última edição:
substitui
Código:
if (peso <= 10 && racao == 0,1) ||  if ((peso>10 && peso<=25) && racao == 0,3) ||  if ((peso>1025 && peso<=45) && racao == 0,4) || if (peso>45 && racao == 0,5)

por
Código:
if ( (peso <= 10 && racao == 0,1) ||  ((peso>10 && peso<=25) && racao == 0,3) || ((peso>1025 && peso<=45) && racao == 0,4) || (peso>45 && racao == 0,5) )

explicação:
em c fazes:

Código:
if ((condição) || (condição2) )
{
fazer
}

e não
Código:
if (condição) || if (condição2) 
{
fazer
}

edit: a tentar-me explicar, já fui tarde :D
 
mais um problema resolvido, obrigado blueomega.
So que problemas trazem mais problemas lol. O programa nao ta a fazer o pressuposto lol. Corre mas nao faz o q é pedido.

Relembro:

a) Dado o peso de um animal adulto e a quantidade diária de ração, indique se essa quantidade é a adequada
para um animal com esse peso.
b) Indique qual a quantidade adequada para esse animal, bem como o erro.


O q tenho:

#include <iostream>
using namespace std;

int main ()
{
int peso;
int racao;
int erro;
int adq;
cout<<"Qual o peso do animal?"<<endl;
cin>>peso;
cout<<"Qual a quantidade diaria de racao que o seu animal tem?"<<endl;
cin>>racao;
if ( (peso <= 10 && racao == 0,1) || ( (peso>10 && peso<=25) && racao == 0,3) || ( (peso>25 && peso<=45) && racao == 0,4) || (peso > 45 && racao == 0,5) )
{
cout<<"O animal tem a racao adequada para a sua raca e peso"<<endl; }

else {
adq = racao + (0.002*peso);
erro = racao - peso;
cout<<"A quantidade certa é:"<<adq<<endl;
cout<<"O erro é de:"<<erro<<endl;
}
system("pause");
}
 
Penso que pode ter a ver com o facto de estares a multiplicar 0.002 (float) com um inteiro, guardando depois o resultado num inteiro. Ora ao guardar o resultado num inteiro, o número não vai ser guardado com a mesma precisão, logo poderá dar um resultado diferente. Tenta mudar os tipos do adq e erro para float.
 
nao pk a racao ja esta definida como 0,1 para animais com menos de 10kg por exemplo.
E definida como 0,5 para animais com mais de 45kg, etc


mas o que ele faz é:
por qualqer valor que eu digite ele mostra:

"O animal tem a racao adequada para a sua raca e peso"


_________//________

Neste algoritmo usei 4 variáveis do tipo inteiro que fui usando ao longo de todo o problema, o algoritmo começa por receber um valor para a variavel "peso", em que dependendo desse valor teremos ramos diferentes, ramos esses que sao definidos por multiplas condiçoes. Depois deste passo, a variavel "racao" recebe um valor que vai determinar se o animal tem ou nao uma alimentaçao adequada ao seu peso. Caso contrario é feita uma operaçao para que seja calculada a alimentaçao adequada e é nos mostrado tambem a diferença entre a alimentaçao actual e ideal.
 
Última edição:
Back
Topo