elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Intercalacion de numeros pares e impares en vectores
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Intercalacion de numeros pares e impares en vectores  (Leído 5,201 veces)
angelaarousse

Desconectado Desconectado

Mensajes: 2



Ver Perfil
Intercalacion de numeros pares e impares en vectores
« en: 19 Abril 2016, 18:35 pm »

Hola! Me gustaría poder intercalar números de un vector T en 4 (o más) subvectores tx. Ya logré intercalar pares e impares usando "mod" en 2 subvectores pero no he podido completar la secuencia, por ejemplo:

Código:
T = 12;
tx0    tx1    tx2    tx3
 0       1      2      3
 4       5      6      7   y así sucesivamente hasta completar el total de las posiciones de T.
El código que les voy a mostrar esta en C++ usando la librería IT++ que es para telecomunicaciones  :xD (La sintaxis es similar a MATLAB en el manejo de arrays)

Código:
int f = 0, h = 0, i = 0;
    for(i = 0; i < Long_simbolos_qam; i++)
       {
          if (mod(i, 2) == 0)
            {
              tx0(f) = simbolos_qam(i); //Num par
      f = f+1;
            }
          else
            {
              tx1(h) = simbolos_qam(i); //Num impar
      h = h+1;
            }
        }
Es una simple intercalación de números pares e impares. Si alguien sabe hacer esto en C++ agradecería mucho su ayuda!!  :D


En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: Intercalacion de numeros pares e impares en vectores
« Respuesta #1 en: 19 Abril 2016, 19:12 pm »

En si....

Código
  1. MIENTRAS (TRUE)
  2. {
  3.    SI (NO HAY DATOS) BREAK;
  4.    next(dato)
  5.    PUSH (dato, vector1)
  6.  
  7.    SI (NO HAY DATOS) BREAK;
  8.    next(dato)
  9.    PUSH (dato, vector2)
  10.  
  11.    SI (NO HAY DATOS) BREAK;
  12.    next(dato)
  13.    PUSH (dato, vector3)
  14.  
  15.    SI (NO HAY DATOS) BREAK;
  16.    next(dato)
  17.    PUSH (dato, vector4)
  18. }
  19.  

Puedes hacer un solo bucle o dividirlo en N bucles si tienes N-vectores o arreglos, ejemplo en C:

Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. using namespace std;
  5.  
  6. const int elems = 20;
  7. const int nv = 4;
  8.  
  9. int main ()
  10. {
  11.    int ary[] = { 1,2,3,4,
  12.                  5,6,7,8,
  13.                  9,10,11,12,
  14.                  13,14,20
  15.                };
  16.  
  17.    int* vec[nv];    
  18.    int dl[nv]; // dimesiones logicas
  19.    int i,j, limit;
  20.  
  21.    // reserva de memoria (new) e inicializaciones
  22.    for (j=0;j<nv;j++){
  23.        vec[j] = (int*) malloc(elems * sizeof(int));
  24.        dl[j] = 0;
  25.    }      
  26.  
  27.    limit = sizeof(ary)/sizeof(ary[0]);
  28.  
  29.    for (j=0;j<nv;j++)    
  30.        for (i=j; i< sizeof(ary)/sizeof(ary[0]) ;){
  31.       vec[j][dl[j]] = ary[i];  
  32.   i+=nv;dl[j]++;
  33.    }    
  34.  
  35.  
  36.    // Imprimo
  37.  
  38.    for (j=0;j<nv;j++){
  39.        cout << "V1 = ";
  40.        for (i=0; i<dl[j]; i++)
  41.           cout << vec[j][i] << " ";
  42.        cout << endl;
  43.    }    
  44.  
  45.  
  46.    return 0;
  47. }
  48.  
  49.  

Y la otra forma que te comentaba (siempre en C)

Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. using namespace std;
  5.  
  6. const int elems = 20;
  7. const int nv = 4;
  8.  
  9. int main (void)
  10. {
  11.    int ary[] = { 1,2,3,4,
  12.                  5,6,7,8,
  13.                  9,10,11,12,
  14.                  13,14,20
  15.                };
  16.  
  17.    int* vec[nv];    
  18.    int dl[nv]; // dimesiones logicas
  19.    int i,j, limit;
  20.  
  21.    // reserva de memoria (new) e inicializaciones
  22.    for (j=0;j<nv;j++){
  23.        vec[j] = (int*) malloc(elems * sizeof(int));
  24.        dl[j] = 0;
  25.    }      
  26.  
  27.    limit = sizeof(ary)/sizeof(ary[0]);
  28.  
  29.    for (i=0;i<limit; ){    
  30.        for (j=0;j<nv;j++){        
  31.           vec[j][dl[j]] = ary[i];
  32.           dl[j]++; i++;
  33.           if (i==limit-1) goto outside;
  34.        }  
  35.    }
  36.  
  37.    outside:    
  38.  
  39.    // Imprimo
  40.  
  41.    for (j=0;j<nv;j++){
  42.        cout << "V1 = ";
  43.        for (i=0; i<dl[j]; i++)
  44.           cout << vec[j][i] << " ";
  45.        cout << endl;
  46.    }    
  47.  
  48.    return 0;
  49. }
  50.  

No uso vector y menos una libreria como T++ pero creo se puede ver la logica de cualquiera de los ejemplos.

Salu2


« Última modificación: 20 Abril 2016, 01:00 am por boctulus » En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
angelaarousse

Desconectado Desconectado

Mensajes: 2



Ver Perfil
Re: Intercalacion de numeros pares e impares en vectores
« Respuesta #2 en: 21 Abril 2016, 02:41 am »

Vale muchas gracias! voy a acomodarlo según la librería que estoy manejando  :D
En línea

crack81

Desconectado Desconectado

Mensajes: 222



Ver Perfil
Re: Intercalacion de numeros pares e impares en vectores
« Respuesta #3 en: 21 Abril 2016, 04:57 am »

boctulus Hola companero, muy buenos tus ejemplos solo mecionaria unos detalles a tener en cuenta.


Si estas trabajando en C++ evita importar bibliotecas de C como stdlib.h o stdio.h y utiliza sus equivalencias como cstdio y cstdlib, tambien procura liberar siempre la memoria allocada con malloc usando la funcion free(); ya que en tus dos ejemplos reservas memoria en el heap pero nunca la liberas.

Por ultimo aunque esto es mas bien en gustos, procura reservar la memoria dinamica usando NEW en lugar de malloc  ya que la primera es la nativa de C++ no olvidar igualmente liberar la memoria usando delete[] si es un arreglo o delete a secas si es un puntero.


Saludos...
En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: Intercalacion de numeros pares e impares en vectores
« Respuesta #4 en: 21 Abril 2016, 05:02 am »

Crack: tienes toda la razón, se me olvidó liberar la memoria y es muy importante hacerlo  ;)

En cuanto la forma de reservar la memoria (y liberarla) es propia de C como dices porque intenté hacer los ejemplos en C y no C++ para obligar a quien pregunta a "extraer" el concepto y no copiar código (que le serviría en C++)  >:D


Citar
Si estas trabajando en C++ evita importar bibliotecas de C como stdlib.h o stdio.h y utiliza sus equivalencias como cstdio y cstdlib, tambien procura liberar siempre la memoria allocada con malloc usando la funcion free(); ya que en tus dos ejemplos reservas memoria en el heap pero nunca la liberas.

Por ultimo aunque esto es mas bien en gustos, procura reservar la memoria dinamica usando NEW en lugar de malloc  ya que la primera es la nativa de C++ no olvidar igualmente liberar la memoria usando delete[] si es un arreglo o delete a secas si es un puntero.
« Última modificación: 21 Abril 2016, 05:04 am por boctulus » En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con programa numeros pares e impares:P « 1 2 »
.NET (C#, VB.NET, ASP)
<sylar> 18 28,847 Último mensaje 17 Abril 2009, 03:41 am
por <sylar>
Pares e impares
Programación C/C++
Anastacio 5 5,012 Último mensaje 7 Marzo 2012, 19:36 pm
por Eternal Idol
Números primos/ pares e impares.
Programación C/C++
iamedgarrios 2 3,314 Último mensaje 2 Agosto 2017, 20:11 pm
por iamedgarrios
aparte de sacar el promedio, tambien diga que numeros son pares e impares
Programación C/C++
marcosuag 2 3,248 Último mensaje 22 Agosto 2017, 06:03 am
por Serapis
Mostrar pares e impares en dos arreglos
Programación C/C++
gonezq 1 3,964 Último mensaje 27 Febrero 2021, 03:45 am
por AlbertoBSD
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines