Ir para conteúdo

POWERED BY:

Arquivado

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

rogerss_7

[Resolvido] Algorítmo lê valores, separa em dois vetores: pares e

Recommended Posts

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.