Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: miketru en 9 Septiembre 2010, 00:23 am



Título: Ayuda con array... (Resuelto)
Publicado por: miketru en 9 Septiembre 2010, 00:23 am
Bueno tengo que hacer un programa en c++ donde el usuario ingrese el tamaño de un arreglo bidimensional... y me pide que el usuario también ingrese los valores de este arreglo...

Esto es lo que llevo hasta ahora:
Código:
using namespace std; 
void main()
{
int x;
int y;

cout << "A continuación se pedirá que indiques el tamaño de un arreglo de 2 dimensiones" << endl;

cout << "Primer valor del arreglo" << endl;
cin >> x;

cout << "Segundo valor del arreglo" << endl;
cin >> y;

cout << "el tamaño del arreglo es: " << x << " por " << y << endl;

int arreglo[x][y];

system("PAUSE");


}

Y el ejercicio que me piden es el siguiente:
Citar
Desarrolla un programa que solicite al usuario la cantidad de renglones y de columnas de un arreglo de 2 dimensiones y luego pida los datos para llenar el arreglo.

El programa sirve para decirle al usuario si un dato dado se encuentra o no en el arreglo, y si se encuentra indicar en qué posición se encuentra.

Por ejemplo:

Supón que los datos del arreglo son los siguientes:

2 4 6 8
3 5 7 9

Si el usuario teclea el valor 5, el programa le dirá: El dato 5 se encuentra en el renglón 1 columna.

Alguien me puede ayudar?


-----


Antes que nada gracias por la ayuda a Leo Gutierrez...

Bueno, ya resolví esto, y creo que no quedó "perfecto" pero bueno sirve para su propósito. Dejo el código por si alguien tiene un problema similar o si ven algo que pueda mejorar también pónganlo.
Código:
#include "stdafx.h"
#include <iostream>
#include<cstdlib>

using namespace std;

typedef int* ApuntArregloInt;
 
void llenar_filas(int a[], int tamanio)
{
   cout << "Escriba " << tamanio << " enteros";
   for(int indice=0; indice<tamanio; indice++)
        cin>>a[indice];

}
void llenar_columnas(int a[], int tamanio)
{
cout << "Escriba " << tamanio << " enteros: ";
   for(int indice=0; indice<tamanio; indice++)
        cin>>a[indice];
}

int main()
{
cout << "Este programa es un arreglo dinamico..." << endl;

int tamanio_arreglo;
int *p;

cout << "Ingresa el tamaño de las filas en enteros : " << endl;
cin >> tamanio_arreglo;
p = new int[tamanio_arreglo];
if(p==NULL)
{
cout << "No hay memoria suficiente..." << endl;
exit(1);
}
llenar_filas(p, tamanio_arreglo);

cout << "Los numeros del arreglo son..."  << endl;
for(int i=0; i<tamanio_arreglo; i++)
cout << p[i] << endl;


cout << "Ingresa el tamaño de las columnas en enteros : " << endl;
cin >> tamanio_arreglo;
p = new int[tamanio_arreglo];
if(p==NULL)
{
cout << "No hay memoria suficiente..." << endl;
exit(1);
}
llenar_columnas(p, tamanio_arreglo);

cout << "Los numeros del arreglo son..."  << endl;
for(int i=0; i<tamanio_arreglo; i++)
cout << p[i] << endl;



system ("PAUSE");
}


Título: Re: Ayuda con array...
Publicado por: leogtz en 9 Septiembre 2010, 01:05 am
Necesitas asignación dinámica de memoria para esto, ya que el usuario dará la cantidad de filas y columnas.

Código
  1. #include <iostream>
  2. using std::cout;
  3. using std::endl;
  4. using std::cin;
  5. int main(void)
  6. {
  7.    unsigned int filas, columnas;
  8.    cout << "Filas : ";
  9.    cin >> filas;
  10.    cout << "Columnas : ";
  11.    cin >> columnas;
  12.    signed int **matriz = new int*[filas];
  13.    for(unsigned int i = 0; i < filas; i++)
  14.    matriz[i] = new int[columnas];
  15.    // Algoritmo para lo demás
  16.    for(unsigned int i = 0; i < filas; i++)
  17.    delete[] matriz[i];
  18.    delete[] matriz;
  19.    return 0;
  20. }
  21.  

Solo falta el algoritmo para saber en qué posición está el número, publica tus avances y te ayudaremos.


Título: Re: Ayuda con array...
Publicado por: miketru en 9 Septiembre 2010, 01:12 am
No entendí mucho lo del algoritmo, podrías explicarme mas?


Título: Re: Ayuda con array...
Publicado por: leogtz en 9 Septiembre 2010, 01:14 am
Es decir, como saber en qué posición está el elemento.

Dí si no sabes hacerlo para ayudarte.


Título: Re: Ayuda con array...
Publicado por: miketru en 9 Septiembre 2010, 01:20 am
No no se hacerlo,  :-(


Título: Re: Ayuda con array...
Publicado por: leogtz en 9 Septiembre 2010, 01:32 am
Simplemente es una busqueda secuencial, vas recorriendo las filas y columnas y comparando con el valor a buscar, si son iguales guardas las filas y guardas las columnas, algo así:

Código
  1. void encontrar(const int **m, const int& f, const int &c, const int &valor)
  2. {
  3.    int posF = -1, posC = -1;
  4.    for(unsigned int i = 0; i < f; i++)
  5.        for(unsigned int j = 0; j < c; j++)
  6.            if(m[i][j] == valor)
  7.            {
  8.                posF = i;
  9.                posC = j;
  10.                break;
  11.            }
  12.    if(posF != -1)
  13.    cout << "El dato " << valor << " se encuentra en la fila " << posF << " columna " << posC << endl;
  14.    else
  15.    cout << "Valor no encontrado" << endl;
  16. }


Título: Re: Ayuda con array...
Publicado por: miketru en 9 Septiembre 2010, 01:35 am
Muchas gracias!