Ir para conteúdo

Arquivado

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

wFs

Usando o Switch-Case

Recommended Posts

#include <stdio.h>#include <conio.h>#define tam 5/* Após 5 numeros informados armazene-os em um Vetor . Crie um Menu com as seguintes opções: 1- Ordemcrescente; 2- Ordem Decrescente; 3- Sair.*/main(){   int vet[tam], i, menu=0, cont=0, aux;      for (i = 0; i < tam; i++) { // Inicializa o vetor	   vet[i] = 0;   }   for (i = 0; i < tam; i++) { // Insere números no vetor	   printf ("\n Digite um numero:   ");	   scanf   ("%d",&vet[i]);   }   /* Menu de opções para o Case*/   printf ("\n Escolha uma opçao:");   printf ("\n 1 - Ordem Crescente");   printf ("\n 2 - Ordem Decrescente");   printf ("\n 3 - Sair");   switch(menu){				case 1: { // Ordem Crescente				   cont = -1; 				   while (cont != 0) {						 cont = 0;						 for (i = 0; i < (tam -1); i++ ) {							 aux = vet[i];							 vet[i] = vet[i+1];							 vet[i+1] = aux;							 cont++;							 getch();						 }					}				}   								case 2: { // Ordem decrescente					 cont = -1;					 while (cont != 0) {						 cont = 0;						 for (i = 0; i < (tam -1); i++ ) {							 aux = vet[i];							 vet[i] = vet[i-1];							 vet[i-1] = aux;							 cont++;							 getch();						 }					}				}									case 3: { // Opção de saída					 break;				}				default: { // Programação defensiva, caso não seja digitado nenhum número válido					 printf ("\n Digito não válido");					 break;			   }			   }				getch();				}

Tipo tem dois erros ai. 1 deles eh quando aparece o Menu ele automaticamente aparece o default. O 2º erro é quando eu seleciono um dos numeros do Menu ele sai direto do programa, consequentemente não exibe o conteúdo do Menu.

 

Alguem pode me ajudar com esse código?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo td bem?

 

Observei o seguinte no seu programa:

 

1º Você não precisa usar o for para inicializar o vetor, já que ele não esta recebendo ele mesmo como valor.

Você só precisaria inicializar o vetor se acontece algo do tipo: vet=vet +1;

 

2ºDepois que você apresentou o menu de opções com o prinf você deveria usar um scanf para receber o valor da variavel menu.

 

Por isso que switch está pegando o default, pois a variavel menu está vazia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

#include <stdio.h>#include <conio.h>#define tam 5/* Após 5 numeros informados armazene-os em um Vetor . Crie um Menu com as seguintes opções: 1- Ordemcrescente; 2- Ordem Decrescente; 3- Sair.*/main(){   int vet[tam], i, menu=0, cont=0, aux;      for (i = 0; i < tam; i++) { // Inicializa o vetor	   vet[i] = 0;   }   for (i = 0; i < tam; i++) { // Insere números no vetor	   printf ("\n Digite um numero:   ");	   scanf   ("%d",&vet[i]);   }   while (menu != 3) {   /* Menu de opções para o Case*/   printf ("\n\n Escolha uma opçao:");   printf ("\n 1 - Ordem Crescente");   printf ("\n 2 - Ordem Decrescente");   printf ("\n 3 - Sair");   printf ("\n ");   scanf ("%d",&menu);   	  switch(menu){				case 1: {  // Ordem Crescente				   cont = 0; 				   while (cont < 5) {						 for (i = 0; i < (tam -1); i++ ) {							 if (vet[i] > vet[i+1]) {								aux = vet[i];								vet[i] = vet[i+1];								vet[i+1] = aux;							 } 						 }				   cont++;   				   }				   for (i = 0; i < tam; i++) {					   printf ("\n ---Ordem Crescente:  %d", vet[i]);							 				   } 							  break;			  }								case 2: { // Ordem decrescente					 cont = 0;					   					 while (cont < 5) {						 for (i = 0; i < (tam - 1); i++ ) {							 if (vet[i] < vet[i+1]) {							 aux = vet[i];							 vet[i] = vet[i+1];							 vet[i+1] = aux;							 }						 }					 cont++;						 }					 for (i = 0; i < tam; i++) {					   printf ("\n Ordem Decrescente:  %d", vet[i]);					 }							 break;				 }	  								case 3: { // Opção de saída					 break;				}				default: { // Programação defensiva, caso não seja digitado nenhum número válido					 printf ("\n Digito não válido");					 break;				}	  }   }			 				}

cara consegui. Só estou com dificuldades quanto à Ordem Decrescente, que está imprimindo o mesmo que a ordem crescente. Dei uma aprimoradinha no programa.

 

Vlws

 

Achei jah o problema... estava no sinal de MAIOR e MENOR. Ordem crescente usa-se ">" e decrescente "<" ;)

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.