Duvida vetor

1. Duvida vetor

fabiano meireles dos santos
Fabiano_meireles

(usa Outra)

Enviado em 22/06/2008 - 17:26h

/* Programa que le dois vetores de elementos numéricos, contendo,
cada um 25 elementos numéricos. Após intercala os elementos destes dois
conjuntos formando um novo vetor de 50 elementos. Imprimindo o final,
os três vetores. */
#include<stdio.h>
#include<stdlib.h>
main()
{
int y,veta[25],vetb[25],vetc[50],x;
for (x=0;x<25;x++)
{
printf(" digite o %d valor do vetor \n",x+1);
scanf("%d",&veta[x]);

}//end for

for (x=0;x<25;x++)
{
printf(" digite o %d valor do vetor B \n",x+1);
scanf("%d",&vetb[x]);


}//end for
printf(" vetor a eh \n");
for (x=0;x<25;x++)
{
printf("%d- \n",veta[x]);
}//end for
printf(" vetor b eh \n");
for (x=0;x<25;x++)
{
printf("%d- \n",vetb[x]);
}//end for
printf(" vetor c eh \n");
for (x=0;x<25;x++)
{
vetc[x]=veta[x];
}//end for
for (y=25;y<50;y++)
{
for (x=0;x<25;x++)
{
vetc[y]=vetb[x];
}//end for

}//end for
for (x=0;x<50;x++)
{
printf("%d- \n",vetc[x]);
}

system("pause");
}

bom eu faço o vetor a e b tranquilamente, no vetor c que deveria ter o vetor a e b dentro dele eu consigo colocar o vetor a tranquilamente, da maneira que esta a parte que esta entrando do vetor b e apenas o ultimo indice, fiz um teste assim, digitei o vetor a com valores de 1 a 25, o vetor b coom valores de 26 a 50, entao o vetor c me mostrou os valores de 1 a 25 do primero vetor corretamente, porém o segundo vetor ele so mostrous o numero 50
tipo ficando assim
vetor a
1,2,3,4....
vetor b
25,26,27...
vetor c
1,2,3,4,5,... ate o 25, ap[os isto 50,50,50,50
alguem pode ajudar?


  


2. Re: Duvida vetor

M01$3$
moisesmad

(usa Arch Linux)

Enviado em 22/06/2008 - 18:16h

amigo troca aonde vc colocou
for (x=25;x<50;x++)
{
for (y=0;y<25;
{
vetc[x]=vetb[y];
}//end for
vc nao precisa de um for dentro do outro pq fazendo isto vetc[x] ira ficar com o valor 50 sempre com ele, entende o ultimo indice, assim sempre o ultimo numero que for digitado no vetor b , ficara aparecendo, isto e mais simples olhe:
primero faça sua variavel y receber zero la ond ela esta declarada int y=0
for (x=25;x<50;x++)
{

vetc[x]=vetb[y];
y++;
entao nesse for quando o indice for 25 o y sera 0 a primera vez, depois com y++ trocara para 1, assim dara certo, se não entender posta ai que tento te explicar melhor, boa sorte.


3. Re: Duvida vetor

fabiano meireles dos santos
Fabiano_meireles

(usa Outra)

Enviado em 22/06/2008 - 18:22h

valeu mesmo cara funcionou muito obrigado, eu entendi legal, vlw


4. Re: Duvida vetor

Geraldo José Ferreira Chagas Júnior
gjr_rj

(usa Debian)

Enviado em 26/06/2008 - 19:39h

Cara, não entendi muito bem. Pelo enunciado, "intercala os elementos destes dois
conjuntos". Deveria ficar 1,25,2,26,3,27,...
e não 1,2,3,...,25,26,27,...,50.

Da forma que você fez, você preenche da posição 25 a 49 toda com 26, depois preenche toda com 27, depois preenche toda com 28 ...

Da forma que o moisesmad explicou, funciona. Poderia usar um for apenas:

for (x=0,y=25;x<25;y++,x++)
{
vetc[x] = veta[x];
vetc[y] = vetb[x];
}

ou melhor ainda com relação a desempenho.

for (x=0;x<25;x++)
{
vetc[x] = veta[x];
vetc[x+25] = vetb[x];
}

Resultado:1,2,3,...,25,26,27,...,50

porém pelo enunciado seria assim

for (x=0;x<25;x++)
{
vetc[2*x] = veta[x];
vetc[2x+1] = vetb[x];
}

resultado: 1,25,2,26,3,27,...







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts