Ir para conteúdo

Arquivado

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

personal.saulo2

Problemas com if e else

Recommended Posts

Boa noite,Sou estudante de programação, to iniciando meus estudos, e tem alguns conceitos que ainda não concegui entender. To tendo uma dificuldade com estrutura condicional composta, tipo quando tem vários if's quantos else's tenho que colocar ? e tipo não to entendendo muito bem o uso da função toupper, função toupper ela é uma string ou char ?

#include<iostream>using namespace std;char estado;int main(){    string estado;    cout<<"Entre com a sigla :";    cin>>estado;     if(estado[0]='rj' || estado[0]='RJ'){                      cout<<"Carioca.\n";      if(estado[0]='mg' || estado[0]='MG'){                     cout<<"Mineiro.\n";                            }         if(estado[0]='sp' || estado[0]='SP'){                     cout<<"Paulista.\n";                    }                     }    else{         cout<<"Outros estados.\n";         }          system("pause");          return 0;         }

Abrações a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,É mto simples falar sobre If. Afinal voce pode usar qnts if`s quizer, e enquanto aos else`s você pod usar apenas um no final desses if`s, mas vale lembrar q o comando Else nao é obrigatoriamente usado apos o uso de if`s...e enquanto a funcao toupper nunca ouvi falar, vou pesquisar um poko aki, caso encontrar alguma coisa dou um toque aki..espero ter ajudo.falow

Compartilhar este post


Link para o post
Compartilhar em outros sites

É o seguinte .... toupper(); é da biblioteca ctype.h, ela apenas transforma o caracter em maiúsculo, se por acaso você for usá-lo com uma string, recomendo usar o for.

 

Assim como ela ... tb existe a tolower que faz exatamente o contrário,tranforma em minúscula.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom... olhando o codigo assim por cima, tenho q dizer q tem variaaaas coisinhas a corrigir, mas normal, todo iniciante aprende errando.

 

Pra tenta explica o q seus IF's estao fazendo, temos q corrigir a comparação, q não é feita com '=' mas sim com '==' (igual igual), do outro modo nao esta comparando e sim atribuindo um valor. Segundo lugar, sempre q for utilizar uma string, ela deve estar entre aspas duplas, e mesmo q pequena, RJ ou SP ou MG sao strings e nao chars.

E a comparação estado[0] vai comparar apenas a 1º posição, ou seja, se o cara digitou SP ele soh pega o S, ja q declarastes estado como string, você pode comparar diretamente

...
if (estado == "RJ" || estado == "rj") { cout << "Carioca.\n";}

E confesso q nao entendi o porque da declaração de uma variavel global char estado e depois dentro do main uma variavel do tipo string com mesmo nome :S

 

Bom, abaixo segue o codigo arrumando esses detalhes q falei, mas ainda com a sua logica dos IF's

#include<iostream>
using namespace std;

int main(){ 
   string estado;   
   cout<<"Entre com a sigla :";  
   cin>>estado;  
   if(estado=="rj" || estado=="RJ")
   {  
	  cout<<"Carioca.\n";	  
	  if(estado=="mg" || estado=="MG")
	  {
		 cout<<"Mineiro.\n";  
	  }		 
	  if(estado=="sp" || estado=="SP")
	  { 
		 cout<<"Paulista.\n";
	  }
   }   
   else{ cout<<"Outros estados.\n"; }
   
   system("pause");		  
   return 0;		
}

Se compilar, o programa vai rodar, mas não da maneira correta, repare na idetação do codigo q eu fiz, to tentando mostra onde estão aninhados os IF's.

Note q ele apenas ira testar se a var estado eh MG ou SP se ela for RJ, ou seja, impossivel. Nesse caso, quando pretende testar um unico valor, você deve aninhar todos os IF's, um dentro do outro, com Else's, segue abaixo codigo:

#include<iostream>
using namespace std;

int main(){ 
   string estado;   
   cout<<"Entre com a sigla :";  
   cin>>estado;  
   if(estado=="rj" || estado=="RJ")
   {  
	  cout<<"Carioca.\n"; 
   }
   else
   {	
	  if(estado=="mg" || estado=="MG")
	  {
		 cout<<"Mineiro.\n";  
	  }
	  else
	  {		 
		 if(estado=="sp" || estado=="SP")
		 { 
			cout<<"Paulista.\n";
		 }
		 else
		 { 
			cout<<"Outros estados.\n"; 
		 }
	  }
   }
   
   system("pause");		  
   return 0;		
}

Um dia você vai aprender o comando switch, ai vai achar uma forma mais elegante de fazer isso;p

O toupper ja ta explicado pelos colegas ^^

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.