Página 1 de 1
switch em C
Enviado: Seg Jun 15, 2009 11:45 am
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]
Enviado: Ter Jun 16, 2009 9:36 am
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 ;
}
Enviado: Dom Jun 21, 2009 9:48 pm
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;
}
Enviado: Seg Jun 22, 2009 12:48 pm
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.
Enviado: Seg Jun 22, 2009 11:25 pm
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

Enviado: Ter Jun 23, 2009 11:16 am
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;
}
Enviado: Ter Jun 23, 2009 12:40 pm
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.

Enviado: Ter Jun 23, 2009 12:42 pm
por MegaManx3
esqueça a minha nubiçe...