C++ busqueda en arreglo multidimensional

Iniciado por _Slash_, 26 Noviembre 2014, 00:28 AM

0 Miembros y 1 Visitante están viendo este tema.

_Slash_

Hola que tal.

El programa en si, es que se ingrese manualmente la dimensión del arreglo, luego de eso pide llenar manualmente los datos para el arreglo, al finalizar el llenado, se pregunta que numero se desea buscar en el arreglo (los cuales se acaban de ingresar), aquí es donde tengo problemas, ya que falla en la búsqueda del numero, algunas veces si encuentra el numero que ingreso, pero me da una posición incorrecta o me duplica mas posiciones en el arreglo, otras veces no me muestra ninguna coincidencia.

Espero puedan ayudarme.

Saludos.

Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;

int main() {
  int n, a = 0, b = 0, c = 0, x, y, z, multi[a][b][c];
 
  cout << "Digite 3 numeros separados con espacio (ejemplo: 3 3 3): ";
  cin >> a >> b >> c;
     
  for (x = 0; x < a; x++) {
     for (y = 0; y < b; y++) {
        for (z = 0; z < c; z++) {
           cout << "Digite el numero a ingresar para la posicion '" << x << " - " << y << " - " << z << "': ";
   cin >> n;
   multi[x][y][z] = n;
        }
     }
  }
 
  cout << "Digite el numero a buscar :";
  cin >> n;
 
  for (x = 0; x < a; x++) {
     for (y = 0; y < b; y++) {
        for (z = 0; z < c; z++) {
           if (n == multi[x][y][z]) {
              cout << "El numero se encuentro en la posicion '" << x << " - " << y << " - " << z << "': " << multi[x][y][z] << endl;
   }
}
     }
  }
}

Despierta del sueño en el que has estado siempre y date cuenta de la cruda y cruel realidad.

MeCraniDOS

#1
Hola,

El primer error que veo es este, fíjate

  int a = 0, b = 0, c = 0, multi[a][b][c];

Estas creando una matriz de 0x0x0

Revísalo, saludos




El recorrido es correcto, el único problema es el que te comento, creas la matriz con los valores de a, b y c, y luego asignas un valor diferente a esas 3 variables.

Revisa también que pasaria si introduces un numero negativo (en a,b,c).

Saludos
"La física es el sistema operativo del Universo"
     -- Steven R Garman

_Slash_

Hola que tal.

Tienes toda la razón MeCraniDOS, no me había fijado en ese pequeño detalle, ya corregí eso y funciona bien al realizar la búsqueda.

Esta fue la modificación que le hice al codigo:

Código (cpp) [Seleccionar]
int n, a, b, c, x, y, z;
   
cout << "Digite 3 numeros separados con espacio (ejemplo: 3 3 3): ";
cin >> a >> b >> c;
   
int multi[a][b][c];


Gracias por la observación MeCraniDOS.

Saludos.
Despierta del sueño en el que has estado siempre y date cuenta de la cruda y cruel realidad.