switch em C

Sub-fórum especial para usuários que querem discutir/aprender programação, como as linguagens C/C++/C#, Java, HTML, e por aí vai...
Avatar do usuário
MegaManx3
Mensagens: 1913
Registrado em: Ter Fev 21, 2006 4:38 pm
Answers: 0
18
Localização: Valparaiso de Goias
Gender:
Contato:
MegaManx3’s avatar
Loading…

switch em C

Mensagem por MegaManx3 »

seque codigo,feito no DEV-C++,é um algoritmo bem simples,é so pra mostrar o numero que o usuario digita,em sequencias,de maior menor e meio,essa sequencia muda,de acordo com o valor de I,eu coloquei I em um switch,e o algoritmo,so pede o valor dele,e ja pula direto a parte de pedir os valores de A,B e C.o que eu errei ?
#include <stdio>
#include <conio>

int main ()
{
int maior,menor,meio,a,b,c,i;
printf("Digite o valor de I ");
scanf("d",&i);
printf("Digite o valor de A ");
scanf("d",&a);
printf("Digite o valor de B ");
scanf("d",&b);
printf("Digite o valor de C ");
scanf("d",&c);
switch(i){
case 1:
if(a>b,a>c,b>c){//a maior,b meio,c menor.
a==maior;
b==meio;
c==menor;
}
if(a>b,a>c,c>b){//a maior,c meio,b menor.
a==maior;
c==meio;
b==menor;
}
printf("%s,%s,%s",maior,meio,menor);
break;

case 2 :
if(b>a,b>c,a>c){//b maior,a meio,c menor.
b==maior;
a==meio;
c==menor;
}
if(b>a,b>c,c>a){//b maior,c meio,a menor.
b==maior;
c==meio;
a==menor;
}
printf("%s,%s,%s",menor,meio,maior);
break;

case 3 :
if(c>a,c>b,a>b){//c maior,a meio,b menor.
c==maior;
a==meio;
b==menor;
}
if(c>a,c>b,b>a){//c maior,b meio,a menor.
c==maior;
b==meio;
a==menor;
}
printf("%s,%s,%s",maior,meio,menor);
break;

default :
printf("%Este numero nao e positivo,ou nao e um valor entre 1 e 3");
}


getch();
return 0 ;
}[/quote]
Avatar do usuário
MegaManx3
Mensagens: 1913
Registrado em: Ter Fev 21, 2006 4:38 pm
Answers: 0
18
Localização: Valparaiso de Goias
Gender:
Contato:
MegaManx3’s avatar
Loading…

Mensagem por MegaManx3 »

#include <stdio>
#include <conio>

int main ()
{
int maior,menor,meio,a,b,c,i;
printf("Digite o valor de A ");
scanf("d",&a);
printf("Digite o valor de B ");
scanf("d",&b);
printf("Digite o valor de C ");
scanf("d",&c);
printf("Digite o valor de I ");
scanf("d",&i);
switch(i){
case 1:
if(a>b &&a >c&& b>c){//a maior,b meio,c menor.
a==maior;
b==meio;
c==menor;
printf("%d,%d,%d",maior,meio,menor);
}
if(a>b && a>c && c>b){//a maior,c meio,b menor.
a==maior;
c==meio;
b==menor;
}
printf("%d,%d,%d",maior,meio,menor);
break;

case 2 :
if(b>a&& b>c&& a>c){//b maior,a meio,c menor.
b==maior;
a==meio;
c==menor;
printf("%d,%d,%d",maior,meio,menor);
}
if(b>a && b>c && c>a){//b maior,c meio,a menor.
b==maior;
c==meio;
a==menor;
}
printf("%d,%d,%d",menor,meio,maior);
break;
case 3 :
if(c>a && c>b &&a>b){//c maior,a meio,b menor.
c==maior;
a==meio;
b==menor;
printf("%d,%d,%d",maior,meio,menor);
}
if(c>a && c>b && b>a){//c maior,b meio,a menor.
c==maior;
b==meio;
a==menor;
}
printf("%d,%d,%d",maior,meio,menor);
break;
default :
printf("Este numero nao e positivo,ou nao e um valor entre 1 e 3");
}


getch();
return 0 ;
}
Avatar do usuário
Fabio914
Mensagens: 1757
Registrado em: Dom Mai 21, 2006 4:38 pm
Answers: 0
18
Localização: Sampa/Sanca
Contato:

Mensagem por Fabio914 »

Cara, primeiro que nos scanf tem problema na recepção, o certo é scanf("%d",&i); .

Também tem problema nas suas atribuições...

seria por exemplo:

if((a>b) && (a >c) && (b>c)){ //a maior,b meio,c menor.
maior=a;
meio=b;
menor=c;
printf("%d,%d,%d",maior,meio,menor);
}

Cara, eu não entendi ao certo o que você quer fazer, mas eu fiz um programa exemplo de como você pode organizar 3 numeros em ordem crescente...

Código: Selecionar todos


#include<stdio>
#include<stdlib>
#define NUMEROS 3

int main(void){
 
   int numero[NUMEROS],aux;
   int i,j;
   
   for(i=0;i<NUMEROS;i++)
      scanf("%d",&numero[i]);
   
   for(i=0;i<NUMEROS;i++)
      for(j=i;j<NUMEROS;j++)
            {
            
               aux=numero[i];
               numero[i]=numero[j];
               numero[j]=aux;
                                
            }
            
   for(i=0;i<NUMEROS;i++)
      printf(" %d",numero[i]);
      
   printf("\n");
   
   system("pause");
 
   return 0;
    
}

Projetos em andamento
the Core
Eclipse

Projetos parados
Doom 3 on GZDoom
FSD Project

PC
AMD Athlon 64 X2 5200+ (2x 2.6Ghz)
2GB RAM (2x 1GB DDR2)
240GB (160GB SATA + 80GB SATA)
XFX nVidia GeForce 8600 GT (600mhz 256mb)
Placa Mãe ASUS M2N4 SLI (2x PCI-E 16x SLI, 4x DDR2 800, nForce 4)
Fonte 500W reais (esqueci o nome da marca)
Monitor LG Flatron 19'' LCD
Avatar do usuário
MegaManx3
Mensagens: 1913
Registrado em: Ter Fev 21, 2006 4:38 pm
Answers: 0
18
Localização: Valparaiso de Goias
Gender:
Contato:
MegaManx3’s avatar
Loading…

Mensagem por MegaManx3 »

é bem simples,caso i seja 1,ordem cresente,caso se 2 ordem decrecente,caso seja 3,o menor valor no meio,diferente disso da nada,por isso joguei num switch.
Avatar do usuário
Fabio914
Mensagens: 1757
Registrado em: Dom Mai 21, 2006 4:38 pm
Answers: 0
18
Localização: Sampa/Sanca
Contato:

Mensagem por Fabio914 »

MegaManx3 escreveu:é bem simples,caso i seja 1,ordem cresente,caso se 2 ordem decrecente,caso seja 3,o menor valor no meio,diferente disso da nada,por isso joguei num switch.
Humm, com switch da certo sim, mas não precisa fazer com tantos ifs assim, da pra fazer de maneiras bem mais simples. Mas tome cuidado com a sintaxe, seu programa não estava funcionando por causa disso. Alias, não sabia que você ta estudando C, boa sorte ai :wink:
Projetos em andamento
the Core
Eclipse

Projetos parados
Doom 3 on GZDoom
FSD Project

PC
AMD Athlon 64 X2 5200+ (2x 2.6Ghz)
2GB RAM (2x 1GB DDR2)
240GB (160GB SATA + 80GB SATA)
XFX nVidia GeForce 8600 GT (600mhz 256mb)
Placa Mãe ASUS M2N4 SLI (2x PCI-E 16x SLI, 4x DDR2 800, nForce 4)
Fonte 500W reais (esqueci o nome da marca)
Monitor LG Flatron 19'' LCD
Avatar do usuário
MegaManx3
Mensagens: 1913
Registrado em: Ter Fev 21, 2006 4:38 pm
Answers: 0
18
Localização: Valparaiso de Goias
Gender:
Contato:
MegaManx3’s avatar
Loading…

Mensagem por MegaManx3 »

bom,consequi compilar e roda,mas no print da algo estranho,o que ele mostra é o endereço de memoria e não o numero digitado pelo usuario:
#include <stdio>
#include <conio>

int main ()
{
int maior,menor,meio,a,b,c,i;
printf("Digite o valor de (A)\n");
scanf("%d",&a);
printf("Digite o valor de (B)\n");
scanf("%d",&b);
printf("Digite o valor de (C)\n");
scanf("%d",&c);
printf("Digite o valor de (I)\n");
scanf("%d",&i);

if((a>b)&&(a>c)&&(b>c)){//a maior,b meio,c menor.
a=maior;
b=meio;
c=menor;
}
if((a>b)&& (a>c)&&(c>b)){//a maior,c meio,b menor.
a=maior;
c=meio;
b=menor;
}
if((b>a)&&(b>c)&&(c>b)){// b maior,c meio,a menor
b=maior;
c=meio;
a=menor;
}
if((b>a)&&(b>c)&&(b>c)){//b maior,a meio,c menor
b=maior;
a=meio;
c=menor;
}
if((c>a)&&(c>b)&&(b>a)){//c maior,b meio,a menor
c=maior;
b=meio;
a=menor;
}
if((c>a)&&(c>b)&&(a>b)){//c maior,a meio ,b menor
c=maior;
a=meio;
b=menor;
}
switch(i){
case 1:printf("%d,%d,%d",maior,meio,menor);
break;
case 2:printf("%d,%d,%d",menor,meio,maior);
break;
case 3:printf("%d,%d,%d",menor,maior,meio);
break;
default :printf("NUMERO INVALIDO");
break;
}
getch();
return 0;
}
Avatar do usuário
Fabio914
Mensagens: 1757
Registrado em: Dom Mai 21, 2006 4:38 pm
Answers: 0
18
Localização: Sampa/Sanca
Contato:

Mensagem por Fabio914 »

Cara, você ta fazendo a atribuição errada...

Se você quer que, por exemplo, maior receba a, você deve fazer:

maior=a;

Mas você esta fazendo a=maior, que repassa o valor de maior (que no caso é lixo, ou seja, qualquer valor) para a.

Troca a ordem das atribuições que vai funcionar. :wink:
Projetos em andamento
the Core
Eclipse

Projetos parados
Doom 3 on GZDoom
FSD Project

PC
AMD Athlon 64 X2 5200+ (2x 2.6Ghz)
2GB RAM (2x 1GB DDR2)
240GB (160GB SATA + 80GB SATA)
XFX nVidia GeForce 8600 GT (600mhz 256mb)
Placa Mãe ASUS M2N4 SLI (2x PCI-E 16x SLI, 4x DDR2 800, nForce 4)
Fonte 500W reais (esqueci o nome da marca)
Monitor LG Flatron 19'' LCD
Avatar do usuário
MegaManx3
Mensagens: 1913
Registrado em: Ter Fev 21, 2006 4:38 pm
Answers: 0
18
Localização: Valparaiso de Goias
Gender:
Contato:
MegaManx3’s avatar
Loading…

Mensagem por MegaManx3 »

esqueça a minha nubiçe...

Voltar para “Programação”