Ir ao conteúdo
  • Cadastre-se

switch() em c++


The_Oicle

Posts recomendados

Menção - Uma faculdade atribui menções aos alunos conforme a faixa de notas que tenha atingido:
 
9,0 a 10: SS (superior)
7,0 a 8,9: MS (médio superior)
5, 0 a 6,9: MM (médio)
3,0 a 4,9: MI (médio inferior)
0,1 a 2,9: II (inferior)
0 : SR (sem rendimento).
 
Faça um programa que lê a nota e informa a menção.
 
#include<iostream>using namespace std;int main(){    float nota;    cin>>nota;    switch(nota){        case 9.0 || <=10:            cout<<"SS";            break;        case 7.0 || <=8.0:            cout<<"MS";            break;        case 5.0 || <=6.9:            cout<<"MM";            break;        case 3.0 || <=4.9:            cout<<"MI";            break;        case 0.1 || <=2.9:            cout<<"MM";            break;        case  0:            cout<<"SR";            break;        default:            cout<<"erro:r43t23 "<<endl;            break;    }}

Teria como fazer com o switch ou somente com o if-else???

 

Link para o comentário
Compartilhar em outros sites

O switch está errado.

 

t.cpp: In function ‘int main()’:

t.cpp:10:16: error: switch quantity not an integer
     switch(nota){
                ^
t.cpp:11:21: error: expected primary-expression before ‘<=’ token
         case 9.0 || <=10:
                     ^
t.cpp:14:21: error: expected primary-expression before ‘<=’ token
         case 7.0 || <=8.0:
                     ^
t.cpp:17:21: error: expected primary-expression before ‘<=’ token
         case 5.0 || <=6.9:
                     ^
t.cpp:20:21: error: expected primary-expression before ‘<=’ token
         case 3.0 || <=4.9:
                     ^
t.cpp:23:21: error: expected primary-expression before ‘<=’ token
         case 0.1 || <=2.9:
                     ^
 
Link para o comentário
Compartilhar em outros sites

Olá bom dia alem de estar usando o Switch invés de usar if ( ) e else ( )

 

seu programa tem erros de lógica.

         if(nota == 9.0 || nota <=10)            cout<<"SS";         if(nota == 7.0 || nota <=8.0)            cout<<"MS";        if(nota == 5.0 || nota <=6.9)            cout<<"MM";        if(nota == 3.0 || nota <=4.9)            cout<<"MI";        if(nota == 0.1 || nota <=2.9)            cout<<"MM";  

Se eu inserir 3 ele vai entrar na maioria dos IF's pois voce declarou que tem que ser

igual a 9 ou menor que 10,  e 3 é menor que 10 menor que  8  e  4.9.

Link para o comentário
Compartilhar em outros sites

Olá bom dia alem de estar usando o Switch invés de usar if ( ) e else ( )

 

seu programa tem erros de lógica.

         if(nota == 9.0 || nota <=10)            cout<<"SS";         if(nota == 7.0 || nota <=8.0)            cout<<"MS";        if(nota == 5.0 || nota <=6.9)            cout<<"MM";        if(nota == 3.0 || nota <=4.9)            cout<<"MI";        if(nota == 0.1 || nota <=2.9)            cout<<"MM";  

Se eu inserir 3 ele vai entrar na maioria dos IF's pois voce declarou que tem que ser

igual a 9 ou menor que 10,  e 3 é menor que 10 menor que  8  e  4.9.

è eu vi isso e coloquei o &&. Usei if-else.

 

 

Em acaso você sabe programar USB??

Link para o comentário
Compartilhar em outros sites

Eae galera, sou iniciante tambem, acho que desse jeito com um encadeamento de if's ficaria melhor, correto ?

#include<iostream>int main(){ float nota; cin >> nota;	if ((nota > 10) || (nota < 0))	std::cout << "Nota invalida" << std::endl;	else if ( nota > 9 )	std::cout << "SS" << std::endl;	else if (nota > 7)	std::cout << "MS" << std::endl;	else if (nota > 5)	std::cout << "MM" << std::endl;	else if (nota > 3)	std::cout << "MI" << std::endl;	else if (nota > 0)	std::cout << "MM" << std::endl;	else std::cout << "SR" << std::endl;}
Link para o comentário
Compartilhar em outros sites

Eu só queria testar com o switch() para ver se iria dar certo. mas vejo que não deu certo.

 

Ainda está errado o seu. no lugar de || tem que colocar &&.

 

Você já testou o seu script??

roda seu programa e coloca digita 3. O resultado foi MM ou MI??

 

Olha o que eu corrigi no seu e veja a comparação de variaveis.

#include<iostream>int main(){ float nota;std::cin >> nota;	if ((nota > 10) || (nota < 0))	std::cout << "Nota invalida" << std::endl;	else if ( nota >= 9.0 && nota<=10 )	std::cout << "SS" << std::endl;	else if (nota >= 7.0 && nota<=8.9)	std::cout << "MS" << std::endl;	else if (nota >= 5 && nota <=6.99)	std::cout << "MM" << std::endl;	else if (nota >= 3.0 && nota<=4.9)	std::cout << "MI" << std::endl;	else if (nota >= 0.1 && nota <=2.9)	std::cout << "MM" << std::endl;	else             if(nota == 0)              std::cout << "SR" << std::endl;}
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

#include<iostream>

int main()

{

float nota;

std::cin >> nota;

    if ((nota > 10) || (nota < 0))

    std::cout << "Nota invalida" << std::endl;

    else if ( nota >= 9.0 && nota<=10 )

    std::cout << "SS" << std::endl;

    else if (nota >= 7.0 && nota<=8.9)

    std::cout << "MS" << std::endl;

    else if (nota >= 5 && nota <=6.99)

    std::cout << "MM" << std::endl;

    else if (nota >= 3.0 && nota<=4.9)

    std::cout << "MI" << std::endl;

    else if (nota >= 0.1 && nota <=2.9)

    std::cout << "MM" << std::endl;

    else

if(nota == 0)

std::cout << "SR" << std::endl;

}

 

Sua correçao tem algumas redundancias, porque vamos supor que eu digite 5 ele vai desencadeando os ifs até o nota >= 5 && nota <=6.99 , só que quando ele estiver nesse if, ele já vai ter verificado que a nota é menor que 6.99, senão ele se enquadraria em outros ifs de cima e não chegaria nesse então não precisa de (nota >= 5 && nota <= 6.99) , a verificação (nota >= 5) já serve, e tinha esquecido mesmo o std::cin e maior ou igual(>=) invés de maior(>) :S

Link para o comentário
Compartilhar em outros sites

Sua correçao tem algumas redundancias, porque vamos supor que eu digite 5 ele vai desencadeando os ifs até o nota >= 5 && nota <=6.99 , só que quando ele estiver nesse if, ele já vai ter verificado que a nota é menor que 6.99, senão ele se enquadraria em outros ifs de cima e não chegaria nesse então não precisa de (nota >= 5 && nota <= 6.99) , a verificação (nota >= 5) já serve, e tinha esquecido mesmo o std::cin e maior ou igual(>=) invés de maior(>) :S

è só inverter, em vez de (nota >= 3.0 && nota<=4.9)  ficaria (nota <= 4.9 && nota >=3.0) é melhor pra você??kkk...

 

Em vez de supor, testa seu programa na pratica. As vezes é melhor.

 

valeu!

Link para o comentário
Compartilhar em outros sites

if ((nota > 10) || (nota < 0))    std::cout << "Nota invalida" << std::endl;    else if ( nota >= 9 )    std::cout << "SS" << std::endl;    else if (nota >= 7)    std::cout << "MS" << std::endl;    else if (nota >= 5)    std::cout << "MM" << std::endl;    else if (nota >= 3)    std::cout << "MI" << std::endl;    else if (nota >= 0)    std::cout << "MM" << std::endl;    else std::cout << "SR" << std::endl;

To dizendo que por motivos logicos assim já pega, colocar x >= y && x <= z é redundancia nesse caso

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Tem um jeito de fazer com SWITCH e logica booleana tambem, respondendo sua pergunta a nivel mais direto, como na logica booleana falso é 0 e verdadeiro é 1, tem como você somar essas condições logicas pra chegar num numero, que vai servir pro switch, mais uma vez não testei meu codigo, até porque não ligo, mas a ideia é essa ai

(Observe que o que vai ser verificado pela logica booleana fica entre parentesses e a gente soma o resultado, não a expressão)

switch ( (nota > 10) + (nota >= 9) + (nota >= 7) + (nota >= 5) + (nota >= 3) + (nota >= 0) )    {    case 1:        cout << "SS" << endl;    case 2:        cout << "MS" << endl;    case 3:        cout << "MM" << endl;    case 4:        cout << "MI" << endl;    case 5:        cout << "MM" << endl;    case 6:        cout << "SR" << endl;    default:        cout << "Digite um valor entre 0 e coxinha" << endl;    }
Link para o comentário
Compartilhar em outros sites


Testei seu codigo. E quando digito 3 ele mostra varias categorias em vez de uma só. Testa e digita "3".

#include<iostream>using namespace std;int main(){ float nota;std::cin >> nota;	switch ( (nota > 10) + (nota >= 9) + (nota >= 7) + (nota >= 5) + (nota >= 3) + (nota >= 0) )    {    case 1:        cout << "SS" << endl;    case 2:        cout << "MS" << endl;    case 3:        cout << "MM" << endl;    case 4:        cout << "MI" << endl;    case 5:        cout << "MM" << endl;    case 6:        cout << "SR" << endl;    default:        cout << "Digite um valor entre 0 e coxinha" << endl;    }}

 

Tem um jeito de fazer com SWITCH e logica booleana tambem, respondendo sua pergunta a nivel mais direto, como na logica booleana falso é 0 e verdadeiro é 1, tem como você somar essas condições logicas pra chegar num numero, que vai servir pro switch, mais uma vez não testei meu codigo, até porque não ligo, mas a ideia é essa ai

(Observe que o que vai ser verificado pela logica booleana fica entre parentesses e a gente soma o resultado, não a expressão)

switch ( (nota > 10) + (nota >= 9) + (nota >= 7) + (nota >= 5) + (nota >= 3) + (nota >= 0) )    {    case 1:        cout << "SS" << endl;    case 2:        cout << "MS" << endl;    case 3:        cout << "MM" << endl;    case 4:        cout << "MI" << endl;    case 5:        cout << "MM" << endl;    case 6:        cout << "SR" << endl;    default:        cout << "Digite um valor entre 0 e coxinha" << endl;    }

O que adianta não testar. Se acaba fazendo errado. Depois quando for profissional irá colocar um script desse jeito no seu trabalho. Não quero ofender, só não acho certo ter certeza e não testar o codigo.

Link para o comentário
Compartilhar em outros sites

#include<iostream>using namespace std;int main(){	float nota;	cout << "Nota : ";	cin >> nota;	while ((nota > 10) || (nota < 0))	{		cout << "Nota invalida , digite novamente " << endl;		cout << "Nota : ";		cin >> nota;	}	int x = (nota >= 0) + (nota > 0) + (nota > 2.9) + (nota > 4.9) + (nota > 6.9) + (nota > 8.9);	switch (x)	{	case 1:		cout << "SR" << endl;		break;	case 2:		cout << "II" << endl;		break;	case 3:		cout << "MI" << endl;		break;	case 4:		cout << "MM" << endl;		break;	case 5:		cout << "MS" << endl;		break;	case 6:		cout << "SS" << endl;		break;	}}

E pode deixar mano, anotado aqui, da proxima testarei meus codigos, abraços o/

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...