rogerss_7 0 Denunciar post Postado Outubro 29, 2007 O Código não está 100%. // Fazer um programa que leia diversos números inteiros fornecidos pelo usuário e distribua esses valores // entre dois vetores: o vetor dos ímpares e o vetor dos pares. Cada um terá tamanho 10. O término do // programa se dará quando o usuário digitar zero ou um dos vetores for totalmente preenchido. // Mostrar os dois vetores no final. #include <stdio.h> #include <stdlib.h> main() { int num[20], par[10], impar[10]; int i, x, y; // i = contador padrao | x = contador par | y = contador impar for (i=0; i<20; i++) { printf ("Informe valor: "); scanf ("%d",&num[i]); if (num[i] == 0) { printf ("\nEncerrado.\n"); break; } else { if (num[i]%2 == 0) { // se sobrar zero é par par[i] = num[i]; // par pega valor x++; if (x==10) {break;} else {continue;} } if (num[i]%2 == 1) { // senão é ímpar impar[i] = num[i]; // pega valor y++; if (y==10) {break;} else {continue;} } } // fim else } // fim laço printf ("\nNumeros pares: "); for (i=0; i<20; i++) { printf ("%d ", par[i]); } printf ("\nNumeros impares: "); for (i=0; i<20; i++) { printf ("%d ", impar[i]); } printf ("\n\n"); system("pause"); } Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Outubro 30, 2007 O correto seria voce apresentar os erros antes de analisarmos o código. O erro está. Voce utiliza o índice "i" para preencher a matriz num. Imagine o seguinte: Primeiro elemento = 1 num[0] = 1 impar[0] = 1 Segundo elemento = 2 num[1] = 2 par[1] = 2 Entendeu o erro? "i" não deve controlar o índice dos vetores par e ímpar. Veja a correção: inicie x e y com 0. if (num[i]%2 == 0) { // se sobrar zero é par par[x] = num[i]; // par pega valor x++; if (x==9) {break;} else {continue;} } if (num[i]%2 == 1) { // senão é ímpar impar[y] = num[i]; // pega valor y++; if (y==9) {break;} else {continue;} } Para mostrar o vetor par e ímpar voce deve informar corretamente o limite do vetor. Correção: printf ("\nNumeros pares: "); for (i=0; i<x; i++) { printf ("%d ", par[i]); } printf ("\nNumeros impares: "); for (i=0; i<y; i++) { printf ("%d ", impar[i]); } http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
rogerss_7 0 Denunciar post Postado Outubro 30, 2007 cara muito obrigado pela ajuda, fiz umas alterações, por exemplo, if (x==10) {break;}, se eu deixasse em if (x==9) {break;} no resultado final ele mostra apenas 9 números, nos contadores x e y coloquei = 0, como me pediu, muito obrigado mesmo, tá pronto. Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Outubro 30, 2007 Tem razão é isso mesmo. if (x==10) {break;}, se eu deixasse em if (x==9) {break;} no resultado final ele mostra apenas 9 números Foi nada. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif nos contadores x e y coloquei = 0, como me pediu, muito obrigado mesmo, tá pronto. Compartilhar este post Link para o post Compartilhar em outros sites