elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Cómo agregar varios arreglos en un arreglo de dos dimensiones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cómo agregar varios arreglos en un arreglo de dos dimensiones  (Leído 3,631 veces)
UmbraNoche

Desconectado Desconectado

Mensajes: 11


Persevera y Triunfarás


Ver Perfil
Cómo agregar varios arreglos en un arreglo de dos dimensiones
« en: 5 Febrero 2015, 20:35 pm »

Buenas gente, soy nuevo en esto de la programación en C++. Les escribo para saber si me pueden ayudar con esta duda, he estado tratando por todos lados pero no lo consigo. Les doy las gracias de antemano

Mi duda es la siguiente cómo puedo hacer para agregar varios arreglos de tipo char a un arreglo char de 10x10. Mi idea es hacer que estos arreglos se agreguen al arreglo 10x10 para luego hacer que el contenido de los mismos aparezcan en posiciones aleatorias tanto en vertical como en horizontal.

Aquí les dejo mi código y les pido disculpas de antemano porque está malísimo lo que hice pero es lo que humildemente pude hacer hasta ahora

Código
  1. #include <iostream>
  2. #include <ctime>
  3. #include <cstdlib>
  4. #include <string>
  5.  
  6. using namespace std;
  7.  
  8. int main(){
  9.  
  10.    char matriz[10][10];
  11.  
  12.    char A1[][] = "AAAA";
  13.    char C1[][] = "CC";
  14.  
  15.    for(int fila = 0; fila < 10; fila++){
  16.        for(int columna = 0; columna < 10; columna++)
  17.            matriz[fila][columna] = C1[];
  18.    }
  19.  
  20.    for(int f = 0; f < 10; f++){
  21.        for(int c = 0; c < 10; c++)
  22.            cout << matriz[f][c];
  23.  
  24.        cout << endl;
  25.    }
  26.  
  27.    for(int i = 0; i < 10; i++){
  28.        for(int j = 0; j < 10; j++)
  29.            matriz[i][j] = A1[];
  30.    }
  31.  
  32.    for(int x = 0; x < 10; x++){
  33.        for(int y = 0; y < 10; y++)
  34.            cout << matriz[x][y];
  35.    }
  36.  
  37.    return 0;
  38. }
  39.  


En línea

"Si tienes un sueño entonces aferrate a el con constancia, sacrificio y dedicación".
Orubatosu


Desconectado Desconectado

Mensajes: 2.515


Ver Perfil WWW
Re: Cómo agregar varios arreglos en un arreglo de dos dimensiones
« Respuesta #1 en: 5 Febrero 2015, 21:47 pm »

No puedes crear un arreglo de mas de una dimensión sin especificar al menos las dimensiones que tiene, excepto la última

Código
  1. char A1[][] = "AAAA";
  2.    char C1[][] = "CC";
  3.  

Eso no puedes hacerlo, es mas, debe de decirtelo claramente el compilador


En línea

"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998
_Enko


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: Cómo agregar varios arreglos en un arreglo de dos dimensiones
« Respuesta #2 en: 5 Febrero 2015, 22:31 pm »

Hola, me parece que estas enfocando el tema distinto.

No creo que necesitas poner C1[][] en matriz[][]. Sino el contenido de c1[][] en la matriz[][].
De lo contrario matriz[][] en vez de ser de char, tendria que ser de punteros a c1[][];

Supongamos que matriz[][] contiene todo '0'; (10x10)
Citar
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000

Luego tienes c1, que contiene todo A, pero con un tamaño de 5x5
Citar
AAAAA
AAAAA
AAAAA
AAAAA
AAAAA

Entonces si por ejemplo quieres colocar c1[][] en la esquina inferior derecha, harias
Código
  1. int pos_x = 5;
  2. int pos_y = 5;
  3. for(int i=0; i<=4; ++i)
  4.   for(int j=0; j<=4; ++j)
  5.          matriz[pos_x+i][pos_y+j] = c1[i][j];
  6.  

Y te queda algo como
Citar
0000000000
0000000000
0000000000
0000000000
0000000000
00000AAAAA
00000AAAAA
00000AAAAA
00000AAAAA
00000AAAAA


Saludos.
En línea

UmbraNoche

Desconectado Desconectado

Mensajes: 11


Persevera y Triunfarás


Ver Perfil
Re: Cómo agregar varios arreglos en un arreglo de dos dimensiones
« Respuesta #3 en: 5 Febrero 2015, 22:34 pm »

Gracias por el dato Orubatosu, tienes toda la razón. Aquí hice la corrección pero decidí hacer los arreglos string, para no liarme con los indices, pero igual al hacer eso no logro agregar los string a mi arreglo de 10x10. De antemano gracias

Código
  1. #include <iostream>
  2. #include <ctime>
  3. #include <cstdlib>
  4. #include <string>
  5.  
  6. using namespace std;
  7.  
  8. int main(){
  9.  
  10.    string matriz[10][10];
  11.  
  12.    string A1 = ("AAAA");
  13.    string C1 = ("CCC");
  14.  
  15.    for(int fila = 0; fila < 10; fila++){
  16.        for(int columna = 0; columna < 10; columna++)
  17.            matriz[fila][columna] = A1;
  18.    }
  19.  
  20.    for(int f = 0; f < 10; f++){
  21.        for(int c = 0; c < 10; c++)
  22.            cout << matriz[f][c];
  23.  
  24.        cout << endl;
  25.    }
  26.  
  27.    for(int i = 0; i < 10; i++){
  28.        for(int j = 0; j < 10; j++)
  29.            matriz[i][j] = C1;
  30.    }
  31.  
  32.    for(int x = 0; x < 10; x++){
  33.        for(int y = 0; y < 10; y++)
  34.            cout << matriz[x][y];
  35.    }
  36.  
  37.    return 0;
  38. }
  39.  
En línea

"Si tienes un sueño entonces aferrate a el con constancia, sacrificio y dedicación".
UmbraNoche

Desconectado Desconectado

Mensajes: 11


Persevera y Triunfarás


Ver Perfil
Re: Cómo agregar varios arreglos en un arreglo de dos dimensiones
« Respuesta #4 en: 5 Febrero 2015, 22:44 pm »

Hola, me parece que estas enfocando el tema distinto.

No creo que necesitas poner C1[][] en matriz[][]. Sino el contenido de c1[][] en la matriz[][].
De lo contrario matriz[][] en vez de ser de char, tendria que ser de punteros a c1[][];

Supongamos que matriz[][] contiene todo '0'; (10x10)
Luego tienes c1, que contiene todo A, pero con un tamaño de 5x5
Entonces si por ejemplo quieres colocar c1[][] en la esquina inferior derecha, harias
Código
  1. int pos_x = 5;
  2. int pos_y = 5;
  3. for(int i=0; i<=4; ++i)
  4.   for(int j=0; j<=4; ++j)
  5.          matriz[pos_x+i][pos_y+j] = c1[i][j];
  6.  

Y te queda algo como

Saludos.


Muchas gracias _Enko, de verdad me haz iluminado, sólo una pregunta entonces para meter el contenido de los arreglo a la matriz 10x10 debo hacerlo mediante punteros? Gracias de antemano
En línea

"Si tienes un sueño entonces aferrate a el con constancia, sacrificio y dedicación".
_Enko


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: Cómo agregar varios arreglos en un arreglo de dos dimensiones
« Respuesta #5 en: 5 Febrero 2015, 22:57 pm »

Hola, si quieres colocar el contenido de c1 en la matriz, entonces no, no necesitas de punteros. Solo debes usar dos for y hacer
Código:
matriz[i][j] = c1[i][j].

Ahora, si quieres hacer algo como
Código:
matriz[i][j] = c1
Entonces si toca usar punteros. Pero realmente no le veo sentido  practico ya que hay dos opciones:
1)matriz sería en realidad matriz[][][][]... de 4 dimensiones, demasiado rebuscado.
2)matriz aun siendo matriz[][][][] tendria 2 dimensiones y cada celda guardaria otras dos celdas. Es decir, tendrias matriz[][] que contiene adentro otras.
Si por ejemplo ambas son de 10x10. Tendrias matriz[1][1] contendria una matriz de 10x10.
Y pienso yo, en este caso, no seria mas conveniente hacer matriz 100x100? Si vas a meter un 10x10 para cada celda de matriz, tendrias en realidad una matriz de 100x100 en vez de 10x10 guardando otros 10x10.

En el caso 1, 4 dimensiones es poco practico al menos que estes haciendo un ejercicio de fisica avanzada y necesitas un grafico de 4 dimensiones.

En el caso 2, nuevamente poco practico ya que solucionas haciendo la matriz original mas grande.

Saludos.
« Última modificación: 5 Febrero 2015, 23:00 pm por _Enko » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como agregar un arreglo de tipo persona en un Archivo en java.
Java
rub'n 7 8,148 Último mensaje 30 Marzo 2011, 17:10 pm
por rub'n
Ordenar un arreglo de dos dimensiones aplicando el ordenamiento burbuja
Programación C/C++
UmbraNoche 0 2,800 Último mensaje 25 Octubre 2015, 03:31 am
por UmbraNoche
Como Guardar Varios elementos en un arreglo?
Programación C/C++
Sword9K 1 1,819 Último mensaje 1 Diciembre 2018, 17:02 pm
por CalgaryCorpus
retornar varios arreglos
Programación C/C++
luispad 3 3,119 Último mensaje 11 Enero 2020, 18:01 pm
por K-YreX
agregar varios datos en un MAP
Programación C/C++
elcout 3 2,944 Último mensaje 7 Diciembre 2020, 03:44 am
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines