C/Visual C - dado dos vectores A y B meter en el vector c los pares de a y b

   
Vista:

dado dos vectores A y B meter en el vector c los pares de a y b

Publicado por maria (1 intervención) el 05/10/2014 00:14:24
por favor como hacer este arreglo en c++
dado dos vectores A y B meter en el vector c los pares de a y b y un cuarto vector los impares de ay b
A= [7,8,1,9,4,12,20,19]
B= [ 3,5,2,6,18,22,15,1]
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
información
Otras secciones de LWP con contenido de C/Visual C
- Código fuente de C/Visual C
- Cursos de C/Visual C
- Temas de C/Visual C
- Chat de C/Visual C
información
Códigos de C/Visual C
- Torres de Hanoi
- Acceso Datos C++
- Regla de Tres

dado dos vectores A y B meter en el vector c los pares de a y b

Publicado por D.C. (2 intervenciones) el 05/10/2014 18:44:18
/*********************************************************
* Web01.c
* D.C.
*
* Dado dos arreglos A, B meter en el vector C los pares
* de a y b y en un cuarto vector D los impares de a y b.
* *******************************************************/

#include<stdio.h>

int numPares(int *p, int tam);
void colocar(int *paux, int tamaux, int *pc, int *pd);
void mostrar(int *p, int tam);

int main()
{
int A[] = {7, 8, 1, 9, 4, 12, 20, 19};
int B[] = {3, 5, 2, 6, 18, 22, 15, 1};
int tamA = sizeof(A) / sizeof(A[0]), tamB = sizeof(B) / sizeof(B[0]);
int aux[tamA + tamB];
int i;
int pares;
int impares;

for(i=0; i<tamA; i++)
{
aux[i] = A[i];
}
for(i=tamA; i<tamA+tamB; i++)
{
aux[i] = B[i];
}

pares = numPares(aux, tamA + tamB);
impares = tamA + tamB - pares;

int C[pares], D[impares];

colocar(aux, tamA+tamB, C, D);
mostrar(C, pares);
mostrar(D, impares);
printf("\n");
return;
}

int numPares(int *paux, int tamaux)
{
int i;
int pares = 0;

for(i=0; i<tamaux; i++)
{
if(!(*paux % 2))
{
pares++;
}
paux++;
}
return pares;
}

void colocar(int *paux, int tamaux, int *pc, int *pd)
{
int i;

for(i=0; i<tamaux; i++)
{
if(*paux % 2)
{
*pd = *paux;
pd++;
}
else
{
*pc = *paux;
pc++;
}
paux++;
}
return;
}

void mostrar(int *p, int tam)
{
int i;

printf("\n");
for(i=0; i<tam; i++)
{
printf("%8d", *p);
p++;
}
return;
}

He compilado y ejecutado y parece funcionar, aunque hay que revisar.
Me gusta usar aritmética de punteros.

El programa está en C y no en C++ pero creo que es parecido.

El programa está hecho para tamaños genéricos de A y B.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

dado dos vectores A y B meter en el vector c los pares de a y b

Publicado por Chema (187 intervenciones) el 05/10/2014 23:15:29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
#define AR_SIZE(a) ((sizeof a) / (sizeof *a))
#define DVR (1U << 1)
#define PRT(a) (a)& (DVR - 1)
 
int A[] = {7, 8, 1, 9, 4, 12, 20, 19};
int B[] = {3, 5, 2, 6, 18, 22, 15, 1,77,777,7777,77777,33,33,333,99,13,17};
 
int main(void){
	int *pa, *pb, *pc, *pd;
	int a,b,*C, *D ,sizec = 0, sized = 0;
 
	a = AR_SIZE(A);
	b = AR_SIZE(B);
	C = malloc(a * b * sizeof(int) );
	D = malloc(a * b * sizeof(int) );
	pa = A, pb = B, pc = C, pd = D;
 
	for(; a; pa++, a--)
		  PRT(*pa) ? (*pc++ = *pa,sizec++) : (*pd++ = *pa, sized++) ;
 
	for(; b; pb++, b--)
		 PRT(*pb) ? (*pc++ = *pb  ,sizec++) : (*pd++ = *pb, sized++) ;
 
	for(pc = C; sizec; pc++, sizec--)
		 printf("C =  %d  \n",*pc);
 
	for(pd = D; sized; pd++, sized--)
		 printf(" D=  %d \n",*pd);
 
	free(C);
	free(D);
 
	return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar