Ir ao conteúdo
  • Cadastre-se

Como usar o comando Switch no c++


Visitante
Ir à solução Resolvido por dontpanic,

Posts recomendados

Olá pessoa, eu normalmente em outras linguagens eu utilizaria o comando elseif para fazer essa questão, mas estou tentando aprender a programa em c++ e vi esse comando switch, ele seria mais adequado para usar nessa situação?

 

Uma sequência de Collatz modificada pode ser definida do seguinte modo:
Dado um número inteiro positivo n, se o resto da divisão inteira de n por 3 for 0,
divida n por 3 (n/3); se o resto for 1, multiplique n por 4, some 2 e divida o
resultado por 3 ((4n+2)/3); se o resto for 2, multiplique n por 2, subtraia 1 e divida
o resultado por 3 ((2n-1)/3). Repita esse processo para o valor obtido, e assim
sucessivamente, até que o valor obtido seja igual a 1.
Escreva um programa que leia um valor inteiro positivo n e imprima os valores
da Sequência de Collatz para n. (OBS: Não é necessário verificar se o valor digitado é
válido)
Exemplo de execução do programa:

Digite um número inteiro positivo: 12
Sequencia de Collatz:
12 4 6 2 1

 

Meu cógigo:

 

#include <iostream>

using namespace std;

int main()
{
    int n;
    cout << "Digite um numero inteiro positivo: ";
    cin>>n;
    cout<<"Sequancia de Collatz:"<<endl;
    do{
        switch (n){
    case n%3==0:
        n/=3;
    case n%3==1:
        n=(4*n+2)/3;
    case n%3==2;
        n=(2*n-1)/3
        }
        cout<<" "<<n;
    }
    return 0;
}
 

Link para o comentário
Compartilhar em outros sites

  • Solução

A escolha do switch ou do if, while, etc, isso daí depende só do programador. Internamente esses comandos são bem parecidos pro c++ e uso que eles fazem do cpu é quase o mesmo. Então escolha o comando que vai fazer o seu código ficar mais fácil de ser lido por outros programadores.

 

No teu código aí, não precisa colocar esse "DO" antes do switch e a condição do switch deve ser resolvida logo depois do comando switch e não nos cases. Os cases são apenas atalhos pra onde o programa vai "pular" dependendo do resultado da condição.

 

switch (n % 3) {case 0:    // se o resultado de (n % 3) for igual a 0, o programa pula pra essa linha aquicase 1:    // se o resultado for 1, o programa pula pra essa linha...default:    // se nenhum case tiver o resultado de (n%3), então o programa vem pra essa linha}

 

Mas tem um detalhe. O switch apenas joga a execução do programa pra um determinado case. Mas depois de chegar naquele case ele executa tudo que estiver abaixo dele. Ou seja, se ele for pro case 1, então ele vai executar também o que estiver no case 2, 3, etc.

 

Pra executar apenas o que estiver no seu case e depois sair do switch, você precisa usar o comando "break":

 

switch (<condição>) {case 1:    // comandos aqui    break;case 2:    // outros comandos aqui    break;default:    // mais comandos}
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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!