• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Cloud_Strife

Switch

13 mensagens neste tópico

Este é o meu primeiro ano de C++ , e ainda sou novato nisto , dei poucos ciclos , entre eles ,somente o Do While , While e o For .

Fui submetido a realizaçao de um projecto em que tenho de incluir tudo num projecto , mas tenho uma pequena duvida no While

#include <stdio.h> 
#include <conio.h> 
main() { 
int a; 
printf("Qual a quantia que deseja levantar?"); 
scanf("%d",&a); 
switch(a) 
{ 
case 1: 
printf("100\n"); 
break; 
case 2: 
printf("200\n"); 
break; 
case 3: 
printf("300\n"); 
break; 
case 4: 
printf("400\n"); 
break; 
case 5: 
printf("500\n"); 
break; 
default:printf("Qual das quantias de 100 a 500 que desejas levantar?"); 
} 
if(a>250) 
printf("A Taxa de Juros é equivalente a 7%"); 
else 
if(a<=250) 
printf("A Taxa de Juros é equivalente a 2%"); 

Decidi fazer uma especie de Levantamento de Dinheiro numa Caixa de Banco , e os cases eram as varias opçoes que eram fornecidas , e as percentagens eram os Juros , mas quando implemento esse mesmo programa no Visual C++ , nao me aparece as respectivas opçoes que o Switch tem de fornecer , o que tenho de fazer?

Agradeço desde ja todas as ajudas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estás a perceber mal o switch.

O switch/case funciona de maneira parecida ao if/else. Depois de leres um valor para uma variável, fazes um switch com cases para os diferentes valores que essa variável pode tomar, e um default para o caso de o valor escolhido ser inválido. Para te dar um pequeno exemplo:

#include <cstdio>

int main() {
int i;
puts("Escolha uma  opccao:\n\t1. Cha\n\t2. Cafe\n\t3. Laranjada");
scanf("%d", &i);

switch (i) {
	case 1:
		puts("Escolheu Cha");
		break;
	case 2:
		puts("Escolheu Cafe");
		break;
	case 3:
		puts("Escolheu Laranjada");
		break;
	default:
		puts("Escolha invalida");
}

return 0;
}

Falando no teu código, não é o switch que  apresenta as opções, tens que ser tu a escrevê-las no ecrã, e depois usas um switch para agir conforme a opção escolhida.

E não te esqueças do break no fim de cada case, senão obtens o efeito cascata. Experimenta tirar os breaks do exemplo para veres do que falo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado The Dark , acho que ja entendi , ja exprimentei fazer um outro , ve la se é mais ou menos isto o que falas

#include <stdio.h>
#include <conio.h>

main(){

int a ,b ;

printf("introduza o numero do Atleta\n")

scanf("%d",&a);

switch (a){


switch(numero){
case 1:printf("Andre Figueira,1º Classificado,4minutos e 28 segundos; Observaçoes: Medalha de Ouro\n");
break;

case 2:printf("Ricardo Silva,2ºClassificado,4 minutos e 52 segundos; Observaçoes : Medalha de Prata\n");
break;

case 3:printf("Carlos Alberto,3ºClassificado,5 minutos e 7 segundos; Observaçoes :Medalha de Bronze\n");
break;


case 4:printf("Pedro Simoes , 4ºClassificado , 5 minutos e 14 segundos");
break;


case 5:printf("Guilherme Antunes, 5º Classificado , 5 minutos e 48 segundos");
break;


case 6:printf("Diogo Tomas, 6º Classificado , 6 minutos e 12 segundos");
break;


case 7:printf("Joao Martins, 7ºClassificado , 6 minutos e 58 Segundos");
break;


case 8:printf("Tiago Baltazar , 8º Classificado , 7 minutos e 34 segundos");
break;

case 9:printf("Marco Delgado , 9º Classificado , 7 minutos e 59 segundos");
break;


case 10:printf("Paulo Sousa , 10º Classificado , 8 minutos e 38 segundos");
break;

default:printf("numero ivalido");break;
}

printf("introduza o numero do Atleta);
scanf("%d",&b);
if(b<5)
	printf("o Concorrente passa a proxima fase");
	else
	printf("o Concorrente é eliminado");
getch();}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Falta-te o tipo da função main. Aquele switch(numero) { está a mais.

Não percebi se o que estás a fazer no final é o que pretendes. Se é, deves ter-te enganado no que escreves no printf,  porque estás a pedir o número do atleta de novo. E falta-te fechar as aspas.

No início parece tudo bem, embora não estejas a apresentar os atletas antes de pedires um número. É que só um dos cases é que vai ser executado.

Mas sem saber o que pretendes do programa não posso dizer se está correcto ou não. O melhor que fazes é executar o programa e ver se está a fazer o que pretendes, ou então deixar aí o enunciado (se existir um).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isto é um projecto de Escola , e tenho de usar essas funçoes num so Programa o.0

Basicamente a ideia  final era introduzir o numero do atleta e saber se este tinha ficado entre os 5 primeiros

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:hmm:

Não é uma coisa deste género:

#include <stdio.h>
#include <conio.h>
int main()
{
    int numero;
    bool bandeira=true;
   for (;
    {printf("introduza o numero do Atleta\n");

    scanf("%d",&numero);

    switch(numero){
case 1:printf("Andre Figueira,1º Classificado,4minutos e 28 segundos; Observaçoes: Medalha de Ouro\n");
break;

case 2:printf("Ricardo Silva,2ºClassificado,4 minutos e 52 segundos; Observaçoes : Medalha de Prata\n");
break;

case 3:printf("Carlos Alberto,3ºClassificado,5 minutos e 7 segundos; Observaçoes :Medalha de Bronze\n");
break;


case 4:printf("Pedro Simoes , 4ºClassificado , 5 minutos e 14 segundos\n");
break;


case 5:printf("Guilherme Antunes, 5º Classificado , 5 minutos e 48 segundos\n");
break;


case 6:printf("Diogo Tomas, 6º Classificado , 6 minutos e 12 segundos\n");
break;


case 7:printf("Joao Martins, 7ºClassificado , 6 minutos e 58 Segundos\n");
break;


case 8:printf("Tiago Baltazar , 8º Classificado , 7 minutos e 34 segundos\n");
break;

case 9:printf("Marco Delgado , 9º Classificado , 7 minutos e 59 segundos\n");
break;


case 10:printf("Paulo Sousa , 10º Classificado , 8 minutos e 38 segundos\n");
break;

default:
bandeira=false;break;
}
    if (bandeira) break;
    bandeira=true;
    }
    
    if(numero<6)
	printf("o Concorrente passa a proxima fase");
	else
	printf("o Concorrente é eliminado");
getche();
    return 0;
}

?

Nota: o GeSHI converteu o º para &#186;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dá um erro porque não há nada a que o break se aplique. Depois, é má ideia tentar dar o trabalho todo feito.

Mas já experimentaste o código que aí meteste?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu estou a usar a versão mais recente do Dev C++ e não me deu erro nenhum!

Eu nunca ia postar um código fonte com erros! Deus me livre!

Só postei o código feito porque ja deu para ver que este user se esforça por saber alguma coisa de C++ e agora que ele tem o código, ja pode ver onde meteu água!

Dá um erro porque não há nada a que o break se aplique.

Estas a esquecer-te do ´

for(;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu nunca ia postar um código fonte com erros! Deus me livre!

Não és humano? Todos estamos sujeitos a falhas. :thumbsup:

Só postei o código feito porque ja deu para ver que este user se esforça por saber alguma coisa de C++ e agora que ele tem o código, ja pode ver onde meteu água!

Ninguém está a duvidar do esforço dele. Simplesmente ao ter a solução não precisa de se esforçar para lá chegar, ao passo que se for cometendo erros e corrigindo vai ficar com a resolução interiorizada.

Estas a esquecer-te do ´

for(;

Tens razão, não vi isso. De facto o código que meteste não tem erros.

Ainda assim, continuo a insistir que o Cloud_Strife teste o seu próprio código para ver se faz o que quer, e se não fizer que o tente corrigir e depois exponha as dúvidas que surjam.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em Relaçao a esse programa feito pelo Electron , tenho umas duvidas

Bool Bandeira , é uma variavel , entao porque esta acompanhada por = True?

Qual o Objectivo do for (; :)

e Porque é que o If , esta acompanhado de Breaks?

Obrigado se me puderem responder ^^

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

bool bandeira = true;declara e atribui o valor true à variável de uma só vez.

O for( ; ; ) é um for-ever. Não tem inicialização de variáveis, nem incrementos, nem condição de paragem, e por esta última razão nunca vai parar (a menos que exista um break dentro da mesma). É semelhante a um while(true).

O break dentro do if serve exactamente para terminar o ciclo for.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora