Andre0111
Members-
Total de itens
4 -
Registro em
-
Última visita
Reputação
0 ComumSobre Andre0111
-
Dicas para melhor algoritmo--> números divisíveis por 2 e por 3
Andre0111 respondeu ao tópico de Andre0111 em C/C++
Consegui melhorar o código, mas ainda acho que deve ter outra forma de fazer isso. #include<stdlib.h> #include<stdio.h> #include<locale.h> #include<conio.h> //Divisível por 2 e por 3 //var int a,b,c,d,i=0,ii=0,s=0,x,y,z,e,f; main(){ //locale setlocale(LC_ALL,"Portuguese"); //input && processing && output printf("Informe 4 números inteiros para saber quais deles são divisíveis por 2 por 3: "); scanf("%d %d %d %d",&a,&b,&c,&d); if((a%2==0)&&(a%3==0) || (b%2==0)&&(b%3==0) || (c%2==0)&&(c%3==0) || (d%2==0)&&(d%3==0)){ if((a%2==0)&&(a%3==0)){ i=1;//contador para uso do singular s=s+i;//acumulador para uso do plural } if((b%2==0)&&(b%3==0)){ i=2;//contador para uso do singular s=s+i;//acumulador para uso do plural } if((c%2==0)&&(c%3==0)){ i=10;//contador para uso do singular s=s+i;//acumulador para uso do plural } if((d%2==0)&&(d%3==0)){ i=14;//contador para uso do singular s=s+i;//acumulador para uso do plural } } else{ printf("Nenhum dos números informados é divisível por 2 e por 3"); } if((s!=0)&&(i!=0)){ if((s==i)){ //apenas 1 dos números é divisível por 2 e por 3 if((a%2==0)&&(a%3==0)){ printf("Somente o número %d é divisível por 2 e por 3",a); } if((b%2==0)&&(b%3==0)){ printf("Somente o número %d é divisível por 2 e por 3",b); } if((c%2==0)&&(c%3==0)){ printf("Somente o número %d é divisível por 2 e por 3",c); } if((d%2==0)&&(d%3==0)){ printf("Somente o número %d é divisível por 2 e por 3",d); } } else{ if((a%2==0)&&(a%3==0)){ if((a==b)||(a==c)||(a==d)){ x=1; }else{//(a!=b)&&(a!=c)&&(a!=d) y=1; } } if((b%2==0)&&(b%3==0)){ if(b==a){ x=1; } if(b==c){ x=2; } if(b==d){ x=10; } if((b!=a)&&(b!=c)&&(b!=d)){ z=1; } } if((c%2==0)&&(c%3==0)){ if(c==a){ x=1; } if(c==b){ x=2; } if(c==d){ x=14; } if((c!=a)&&(c!=b)&&(c!=d)){ e=1; } } if((d%2==0)&&(d%3==0)){ if(d==a){ x=1; } if(d==b){ x=10; } if(d==c){ x=14; } if((d!=a)&&(d!=b)&&(d!=c)){ f=1; } } if((x==1)||(y==1)){ ii++; } if((x==2)||(z==1)){ ii++; } if((x==14)||(e==1)){ ii++; } if((f==1)||(x==10)){ ii++; } if(ii==1){ printf("O número divisível por 2 e por 3 é: \n"); }else if(ii>1){ printf("Os números divisíveis por 2 e por 3 são: \n"); } if((x==1)||(y==1)){ printf("%d \n",a); } if((x==2)||(z==1)){ printf("%d \n",b); } if((x==14)||(e==1)){ printf("%d \n",c); } if((f==1)||(x==10)){ printf("%d \n",d); } } } } -
Dicas para melhor algoritmo--> números divisíveis por 2 e por 3
Andre0111 postou um tópico no fórum C/C++
Pessoal, Fiz esse algoritmo em C para receber 4 números inteiros e dizer quais são divisíveis por 2 e por 3. Algo simples, porém tem um detalhe. Eu preciso que quando somente 1 número atenda essa condição, apareça apenas "O número tal é divisível por 2 e por 3" e quando for mais de 1 número, apareça: "Os números divisíveis por 2 e por 3 são: tal tal tal ..." Eu consegui fazer isso, porém acho que deve existir uma forma mais simples de conseguir a mesma solução. Alguém conhece algo melhor para se fazer nesse caso? Segue o código: #include<stdlib.h> #include<stdio.h> #include<locale.h> #include<conio.h> //Algoritmo_divisivel_2_e_3 //var int a,b,c,d,i=0,s=0; main(){ //locale setlocale(LC_ALL,"Portuguese"); //input && processing && output printf("Informe 4 números inteiros: "); scanf("%d %d %d %d",&a,&b,&c,&d); printf("\n"); if((a%2==0)&&(a%3==0) || (b%2==0)&&(b%3==0) || (c%2==0)&&(c%3==0) || (d%2==0)&&(d%3==0)){ if((a%2==0)&&(a%3==0)){ i=1; //i==> contador para uso do singular (O número %d é divisível por 2 e por 3) s=s+i; //s==> acumulador para uso do plural (Os números divisíveis por 2 e por 3 são:) } if((b%2==0)&&(b%3==0)){ i=2; s=s+i; } if((c%2==0)&&(c%3==0)){ i=10; s=s+i; } if((d%2==0)&&(d%3==0)){ i=14; s=s+i; } } else{ printf("Nenhum dos números informados é divisível por 2 e por 3"); } if((s==1) || (s==2) || (s==10) || (s==14)){ if(i==1){ printf("O número %d é divisível por 2 e por 3",a); } if(i==2){ printf("O número %d é divisível por 2 e por 3",b); } if(i==10){ printf("O número %d é divisível por 2 e por 3",c); } if(i==14){ printf("O número %d é divisível por 2 e por 3",d); } } else if((s==3) || (s==11) || (s==12) || (s==13) || (s>14)){ //s==3 --> a e b / s==11--> a e c / s==12--> b e c / s==13--> a,b e c //s>14--> todas as outras combinações printf("Os números divisíveis por 2 e por 3 são: \n"); if((a%2==0)&&(a%3==0)){ printf("%d \n",a); } if((b%2==0)&&(b%3==0)){ printf("%d \n",b); } if((c%2==0)&&(c%3==0)){ printf("%d \n",c); } if((d%2==0)&&(d%3==0)){ printf("%d \n",d); } } getch(); }