Ayuda con array... (Resuelto)

Iniciado por miketru, 9 Septiembre 2010, 00:23 AM

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

miketru

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:
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:
CitarDesarrolla 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.

#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");
}


leogtz

Necesitas asignación dinámica de memoria para esto, ya que el usuario dará la cantidad de filas y columnas.

Código (cpp) [Seleccionar]
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
int main(void)
{
    unsigned int filas, columnas;
    cout << "Filas : ";
    cin >> filas;
    cout << "Columnas : ";
    cin >> columnas;
    signed int **matriz = new int*[filas];
    for(unsigned int i = 0; i < filas; i++)
    matriz[i] = new int[columnas];
    // Algoritmo para lo demás
    for(unsigned int i = 0; i < filas; i++)
    delete[] matriz[i];
    delete[] matriz;
    return 0;
}


Solo falta el algoritmo para saber en qué posición está el número, publica tus avances y te ayudaremos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

miketru

No entendí mucho lo del algoritmo, podrías explicarme mas?

leogtz

Es decir, como saber en qué posición está el elemento.

Dí si no sabes hacerlo para ayudarte.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

miketru


leogtz

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 (cpp) [Seleccionar]
void encontrar(const int **m, const int& f, const int &c, const int &valor)
{
    int posF = -1, posC = -1;
    for(unsigned int i = 0; i < f; i++)
        for(unsigned int j = 0; j < c; j++)
            if(m[i][j] == valor)
            {
                posF = i;
                posC = j;
                break;
            }
    if(posF != -1)
    cout << "El dato " << valor << " se encuentra en la fila " << posF << " columna " << posC << endl;
    else
    cout << "Valor no encontrado" << endl;
}
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

miketru