Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema de arrays

Estas en el tema de Problema de arrays en el foro de C/C++ en Foros del Web. Hola! Tengo un problemilla a ver si me lo podeís solucionar. Tengo un array de 0's y 1's, yo sé cuantos 1's hay pero me ...
  #1 (permalink)  
Antiguo 27/10/2012, 11:41
 
Fecha de Ingreso: abril-2009
Mensajes: 1
Antigüedad: 15 años
Puntos: 0
Problema de arrays

Hola!
Tengo un problemilla a ver si me lo podeís solucionar.
Tengo un array de 0's y 1's, yo sé cuantos 1's hay pero me gustaría poder sacar las posiciones donde se encuentran esos 1's, cómo podría hacerlo¿?
Pdta: tengo un mini-array donde guardaria esas posciones, yo he hecho algo pero me guarda el último que encuentra y no todos.

Dejo el code

for(int i=0;i<p; i++)
for(int j=0;i<genome.length();j++)
if(genome.gene(j)==1) almacenes[i]=j;

Thanks
  #2 (permalink)  
Antiguo 28/10/2012, 17:03
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 11 años, 9 meses
Puntos: 22
Respuesta: Problema de arrays

Cita:
Tengo un array de 0's y 1's, yo sé cuantos 1's hay pero me gustaría poder sacar las posiciones donde se encuentran esos 1's, cómo podría hacerlo¿?
Hola.

No especificas si estas trabajando en C o C++, te pongo un ejemplo en ambos de como obtener las posiciones (índice) donde se encuentran los "unos"

Código C:
Ver original
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <time.h>
  4.  
  5. #define MAX 20
  6.  
  7. int main(int argc, char* argv[]) {
  8.   char ceros_y_unos[MAX];
  9.   int *unos_inx;
  10.   int i, u=0;
  11.  
  12.   /* carga */
  13.   srand((unsigned) time(NULL));
  14.   for(i=0;i<MAX;i++) ceros_y_unos[i] = 48 + rand() % 2;
  15.   /* mostrar arreglo de ceros y unos */
  16.   printf("Arreglo\n");
  17.   for(i=0;i<MAX;i++) printf("%2c",ceros_y_unos[i]);
  18.  
  19.   /* guardar indices de unos */
  20.   unos_inx  = (int*)malloc(sizeof(int));
  21.   for(i=0;i<MAX;i++) {
  22.     if(ceros_y_unos[i]== '1') {
  23.       unos_inx[u++] = i;
  24.       unos_inx = (int*)realloc(unos_inx, sizeof(int)*(u+1));
  25.     }
  26.   }
  27.   /* mostrar posiciones */
  28.   printf("\n\nPosiciones en las que hay un uno\n");
  29.   for(i=0;i<u;i++) printf("%3d",unos_inx[i]);
  30.  
  31.   getchar();
  32.   free(unos_inx);
  33.   return 0;
  34. }

Código C++:
Ver original
  1. #include <iostream>
  2. #include <time>
  3. #include <vector>
  4.  
  5. #define MAX 20
  6.  
  7. using namespace std;
  8.  
  9. int main(int argc, char* argv[]) {
  10.   vector<char>ceros_y_unos;
  11.   vector<int>unos_inx;
  12.   srand(time(NULL));
  13.   /* carga */
  14.   for(int i=0;i<MAX;i++) ceros_y_unos.push_back(48+rand()%2);
  15.   cout << "Arreglo" << endl;
  16.   for(int i=0;i<MAX;i++) cout <<" "<< ceros_y_unos[i];
  17.  
  18.   /* guardar indices de unos */
  19.   for(int i=0;i<MAX;i++)
  20.     if(ceros_y_unos[i]=='1')
  21.       unos_inx.push_back(i);
  22.  
  23.   /* mostrar posiciones */
  24.   cout << endl << endl << "Posiciones en las que hay un uno" << endl;
  25.   for(int i=0;i<unos_inx.size();i++)
  26.     cout << " " << unos_inx[i];
  27.  
  28.   cin.get();
  29.   ceros_y_unos.clear();
  30.   unos_inx.clear();
  31.   return 0;
  32. }

Saludos.

Etiquetas: arrays
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:31.