Ir ao conteúdo

Ajuda com codigo


Diego.AS.

Posts recomendados

Postado

Ola pessoal

estava fazendo um programa o qual necessitava que o usuario inseri-se um numero e a partir desse algumas opções seriam liberadas para efetuar um calculo.

Como não sabia fazer para que essas opções aparecessem conforme o numero que o usuario quiser-se (mais claramente, queria fazer com que essas opções aparecessem quase que "infinitamente", tipo não tivessem um limite pre determinado) tentei fazer de uma forma limitada.

Estava correndo tudo bem até que tentei usar o switch mas acabaram sendo muitos case's e ele não aceitou

Não tenho outra ideia para usar, se alguem puder me ajudar explicando o porque de o switch não funcionar ou algo que ficaria melhor ficarei grato

Postado

ta meio grande, mas vol postar o mais importante

#include <cstdlib>
#include <iostream>
using namespace std;

int main()
{
double C,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,P;
double option;
cout<<"Simplificador do calculo de consumo
cout<<"\n";
cout<<"insira o numero de cidades: ";
cin>> option;
cout<<endl;
switch(option){
case'1':
cout<<"insira o consumo de vinho da 1 city: ";
cin>> C1;
cout<<"O consumo total de vinho na sua city e de: "
<<C1<<endl;
cout<<"\n";
C = C1;
cout<<"Insira sua producao de vinho: ";
cin>> P;
cout<<"A sobra de sua producao e: "<<P-C<<endl;
cout<<"\n";
if (P < C)cout<<"Sua producao esta negativa, melhor aumenta-la!\n";
if (P == C)cout<<"Sua producao esta estavel\n";
if (P > C)cout<<"Sua producao esta elevada, parabens! \n";
break;
case'2':
cout<<"insira o consumo de vinho da 1 city: ";
cin>> C1;
cout<<"insira o consumo de vinho da 2 city: ";
cin>> C2;
cout<<"O consumo total de vinho na sua city e de: "
<<C1+C2<<endl;
cout<<"\n";
C = C1+C2;
cout<<"Insira sua producao de vinho: ";
cin>> P;
cout<<"A sobra de sua producao e: "<<P-C<<endl;
cout<<"\n";
if (P < C)cout<<"Sua producao esta negativa, melhor aumenta-la!\n";
if (P == C)cout<<"Sua producao esta estavel\n";
if (P > C)cout<<"Sua producao esta elevada, parabens! \n";
break;
case'3':
cout<<"insira o consumo de vinho da 1 city: ";
cin>> C1;
cout<<"insira o consumo de vinho da 2 city: ";
cin>> C2;
cout<<"insira o consumo de vinho da 3 city: ";
cin>> C3;
cout<<"O consumo total de vinho na sua city e de: "
<<C1+C2+C3<<endl;
cout<<"\n";
C = C1+C2;
C = C+C3;
cout<<"Insira sua producao de vinho: ";
cin>> P;
cout<<"A sobra de sua producao e: "<<P-C<<endl;
cout<<"\n";
if (P < C)cout<<"Sua producao esta negativa, melhor aumenta-la!\n";
if (P == C)cout<<"Sua producao esta estavel\n";
if (P > C)cout<<"Sua producao esta elevada, parabens! \n";
break;
.
.
.
default:
cout<<"Opcao invalida \!"<<endl;
break;
}
system("PAUSE");
return 0;
}

Postado
Alguem poderia me ajudar?

Cara, tô começando a ver esse barato agora mas.

Posta a questão ao invés do teu código pra gente entender melhor o que a questão está pedindo mesmo.

valeu.

Postado

Cara... switch precisa de valores PRECISOS de comparação, mas você está usando double...

Sempre existe algum tipo de arredondamento em tipos double e float.

É possivel fazer comparações do tipo:

if(variavel_double < valor_x)

{

}

if(variavel_float > valor_y)

{

}

Mas não funciona tentar:

if(variavel_double == valor_z)

Como o switch utiliza comparações de igualdade, seu programa não funciona pelo simples fato de as variáveis nunca serem iguais aos valores que você testa...

-

Postado

Entendi agora o real funcionamento do switch

então uma possivel solução para o meu problema é usar o if para fazer comparaçoes entre os valores.

Alem desse modo existe algum outro?

Postado

Pra ser mais preciso, switch é feito para usar uma variável int ou algo que possa ser interpretado como int (char, long, short). E quanto ao seu código use logo o switch, você só tem que mudar o tipo da variável option para int, ah e mudar também os cases porque você tá usando '1' ao invés de 1, as ' ' indicam que você está se referindo a um char ao invés do número. Ou então mais fácil ainda seria mudar logo o option para char que não teria erro nenhum.

Postado

testei fazer o que o CaioTakano disse

mas deu um erro bem no final


#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
[B]double[/B] C,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,P;
[B] char[/B] option;
.
.
.
[COLOR="Red"]case'10':[/COLOR]
cout<<"insira o consumo de vinho da 1 city: ";
cin>> C1;
cout<<"insira o consumo de vinho da 2 city: ";
cin>> C2;
cout<<"insira o consumo de vinho da 3 city: ";
cin>> C3;
cout<<"insira o consumo de vinho da 4 city: ";
cin>> C4;
cout<<"insira o consumo de vinho da 5 city: ";
cin>> C5;
cout<<"insira o consumo de vinho da 6 City: ";
cin>> C6;
cout<<"insira o consumo de vinho da 7 City: ";
cin>> C7;
cout<<"insira o consumo de vinho da 8 City: ";
cin>> C8;
cout<<"insira o consumo de vinho da 9 city: ";
cin>> C9;
cout<<"insira o consumo de vinho da 10 city: ";
cin>> C10;
cout<<"O consumo total de vinho na sua city e de: "
<<C1+C2+C3+C4+C5+C6+C7+C8+C9+C10<<endl;
cout<<"\n";
C = C1+C2;
C = C+C3;
C = C+C4;
C = C+C5;
C = C+C6;
C = C+C7;
C = C+C8;
C = C+C9;
C = C+C10;
cout<<"Insira sua producao de vinho: ";
cin>> P;
cout<<"A sobra de sua producao e: "<<P-C<<endl;
break;

todos os outros "case's" antes desse funcionaram corretamente, agora os sequentes deram o mesmo erro

Postado

Agora eu fiquei na dúvida, existe mesmo um caractere '10'? Achei que isso daria um erro de compilação. Isso passa a ser interpretado como uma string sem '\0' no fim? Enfim, se você vai até 10 então esqueça o que eu disse sobre usar char, use logo um int e mude as declarações de variáveis para ficar de acordo. E tire os ' já que eles servem para indicar um caractere.

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

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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!