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#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define MAX 20
int main(int argc, char* argv[]) {
char ceros_y_unos[MAX];
int *unos_inx;
int i, u=0;
/* carga */
for(i
=0;i
<MAX
;i
++) ceros_y_unos
[i
] = 48 + rand() % 2; /* mostrar arreglo de ceros y unos */
for(i
=0;i
<MAX
;i
++) printf("%2c",ceros_y_unos
[i
]);
/* guardar indices de unos */
unos_inx
= (int*)malloc(sizeof(int)); for(i=0;i<MAX;i++) {
if(ceros_y_unos[i]== '1') {
unos_inx[u++] = i;
unos_inx
= (int*)realloc(unos_inx
, sizeof(int)*(u
+1)); }
}
/* mostrar posiciones */
printf("\n\nPosiciones en las que hay un uno\n"); for(i
=0;i
<u
;i
++) printf("%3d",unos_inx
[i
]);
return 0;
}
Código C++:
Ver original#include <iostream>
#include <time>
#include <vector>
#define MAX 20
using namespace std;
int main(int argc, char* argv[]) {
vector<char>ceros_y_unos;
vector<int>unos_inx;
/* carga */
for(int i
=0;i
<MAX
;i
++) ceros_y_unos.
push_back(48+rand()%2); cout << "Arreglo" << endl;
for(int i=0;i<MAX;i++) cout <<" "<< ceros_y_unos[i];
/* guardar indices de unos */
for(int i=0;i<MAX;i++)
if(ceros_y_unos[i]=='1')
unos_inx.push_back(i);
/* mostrar posiciones */
cout << endl << endl << "Posiciones en las que hay un uno" << endl;
for(int i=0;i<unos_inx.size();i++)
cout << " " << unos_inx[i];
cin.get();
ceros_y_unos.clear();
unos_inx.clear();
return 0;
}
Saludos.