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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Unir dos matrices en una matriz mas grande en c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Unir dos matrices en una matriz mas grande en c  (Leído 2,760 veces)
JosselynGreen

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Unir dos matrices en una matriz mas grande en c
« en: 3 Diciembre 2019, 08:09 am »

Hola! muy buen dia. Estoy haciendo una funcion que tiene que unir el valor de dos matrices en una sola.
Intente hacer dos ciclos for, para recorrer la matriz de 10 filas x 5 columnas, con un if, si el  valor de la columna es menor a 5, que introduzca el primer arreglo, pero tengo problema al poner el sigguiente arreglo  o matriz en la parte que resta del arreglo. Dejo la funcion que crea las matrices y la que las une. ¿como podria resolverlo?



Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. void  menu();
  6. void  crearMatriz();
  7. void  suma();
  8. void  intersec();
  9. void  restaab();
  10. void  restaba();
  11. void  exclusion();
  12. void  buscar();
  13. void  destruir();
  14. //numeros aleatorios diferentes
  15.  int o, p;
  16.      int n,m,j,i;
  17.      int matriz[5][5];
  18.      int matriz1[5][5];
  19.      //variable a agregar
  20.  
  21. //Funcion principal
  22. int main()
  23. {
  24. menu();
  25.    return 0;
  26. }
  27.  
  28. //Funcion menu, en donde mandamos a llamar las demas funciones dentro del switch
  29. void  menu(){
  30.    int opc;
  31.    int op=1;
  32.    do{
  33.        int opSwitch=0;
  34.        printf("0. Salir\n");        
  35.        printf("1. Crear Conjuntos A y B\n");
  36.        printf("2. Union de A y B\n");  
  37.        printf("3. Interseccion de A y B\n");
  38.        printf("4. Resta de A-B\n");
  39.        printf("5. Resta de B-A\n");
  40.        printf("6. Exclusion\n");
  41.        printf("7. Buscar numero en los conjuntos\n");        
  42.        printf("8. Destruir Conjuntos\n");
  43.        printf("Selecciona una opcion:\n");
  44.  
  45.        scanf("%d",&opSwitch);
  46.  
  47.        switch(opSwitch){
  48.  
  49.            case 0:{
  50.                op=0;
  51.            }
  52.            break;
  53.            case 1:
  54.             if(matriz[1][1]>0 && matriz1[1][1]>0){
  55. printf("\nLa matriz debe ya tiene valores y debe ser destruida para poder ser creada nuevamente!");
  56. printf("\nPara regresar al menu principal oprima 1");
  57. scanf("%d",&opc);
  58. switch(opc){
  59. case 1:
  60. menu();
  61. break;
  62. default: printf("\nOpcion invalida\n");
  63. }
  64.  
  65. }
  66. else{
  67.             crearMatriz();
  68. }
  69.            break;
  70.            case 2:
  71.  
  72.             if(matriz[1][1]==0 && matriz1[1][1]==0)
  73.             {
  74. printf("\nLa matriz no tiene valores, debe ser creada primeramente!");
  75. printf("\nPara regresar al menu principal oprima 1");
  76. scanf("%d",&opc);
  77. switch(opc){
  78. case 1:
  79. menu();
  80. break;
  81. default: printf("\nOpcion invalida\n");
  82. }
  83.  
  84. }
  85. else{
  86.             suma();
  87. }
  88.            break;
  89.            case 3:
  90.             if(matriz[1][1]==0 && matriz1[1][1]==0)
  91.             {
  92. printf("\nLa matriz no tiene valores, debe ser creada primeramente!");
  93. printf("\nPara regresar al menu principal oprima 1 ==>:");
  94. scanf("%d",&opc);
  95. switch(opc){
  96. case 1:
  97. menu();
  98. break;
  99. default: printf("\nOpcion invalida\n");
  100. }
  101.  
  102. }
  103. else{
  104.    intersec();
  105. }
  106.            break;
  107.            case 4:
  108.             if(matriz[1][1]==0 && matriz1[1][1]==0)
  109.             {
  110. printf("\nLa matriz no tiene valores, debe ser creada primeramente!");
  111. printf("\nPara regresar al menu principal oprima 1 ==>:");
  112. scanf("%d",&opc);
  113. switch(opc){
  114. case 1:
  115. menu();
  116. break;
  117. default: printf("\nOpcion invalida\n");
  118. }
  119.  
  120. }
  121. else{
  122.    restaab();
  123. }
  124.            break;
  125.            case 5:
  126.             if(matriz[1][1]==0 && matriz1[1][1]==0)
  127.             {
  128. printf("\nLa matriz no tiene valores, debe ser creada primeramente!");
  129. printf("\nPara regresar al menu principal oprima 1 ==>:");
  130. scanf("%d",&opc);
  131. switch(opc){
  132. case 1:
  133. menu();
  134. break;
  135. default: printf("\nOpcion invalida\n");
  136. }
  137.  
  138. }
  139. else{
  140.    restaba();
  141. }
  142.            break;
  143.            case 6:
  144.             if(matriz[1][1]==0 && matriz1[1][1]==0)
  145.             {
  146. printf("\nLa matriz no tiene valores, debe ser creada primeramente!");
  147. printf("\nPara regresar al menu principal oprima 1 ==>:");
  148. scanf("%d",&opc);
  149. switch(opc){
  150. case 1:
  151. menu();
  152. break;
  153. default: printf("\nOpcion invalida\n");
  154. }
  155.  
  156. }
  157. else{
  158.    exclusion();
  159. }
  160.            break;
  161.            case 7:
  162.             if(matriz[1][1]==0 && matriz1[1][1]==0)
  163.             {
  164. printf("\nLa matriz no tiene valores, debe ser creada primeramente!");
  165. printf("\nPara regresar al menu principal oprima 1 ==>:");
  166. scanf("%d",&opc);
  167. switch(opc){
  168. case 1:
  169. menu();
  170. break;
  171. default: printf("\nOpcion invalida\n");
  172. }
  173.  
  174. }
  175. else{
  176.    buscar();
  177. }
  178.            break;
  179.            case 8:
  180.             if(matriz[1][1]==0 && matriz1[1][1]==0)
  181.             {
  182. printf("\nLa matriz no tiene valores, debe ser creada primeramente!");
  183. printf("\nPara regresar al menu principal oprima 1 ==>:");
  184. scanf("%d",&opc);
  185. switch(opc){
  186. case 1:
  187. menu();
  188. break;
  189. default: printf("\nOpcion invalida\n");
  190. }
  191.  
  192. }
  193. else{
  194.    destruir  ();
  195. }
  196.            break;            
  197.            default: printf("Opcion Invalida\n");
  198.        }
  199.  
  200.  
  201.        system("cls");
  202.    }while(op);    
  203.      system("pause");    
  204. }
  205.  
  206. //crear y Llenar las matrices con valores aleatorios
  207. void  crearMatriz(){
  208. srand(time(NULL));
  209. //Par de ciclos que rellenan las matrices con valores aleatorios
  210.        for(i=0;i<5;i++){
  211.               for(n=0;n<5;n++){
  212.                     matriz[i][n]= 1 + rand() % (51 - 1); //la matriz 1 es igual a los valores random entre 1 y 50
  213.                                              }
  214.                          }
  215.        for(j=0;j<5;j++){
  216.               for(m=0;m<5;m++){
  217.                     matriz1[j][m] = 1 + rand() % (51 - 1); //la matriz 2 es igual a los valores random entre 1 y 50
  218.                                              }
  219.                         }
  220.            //Par de ciclos que muestran las dos matrices guardadas            
  221.            printf("Las matrices guardadas son: \n\n");
  222.       printf("Matriz A\n");
  223.      for(i=0;i<5;i++){
  224.                for(n=0;n<5;n++){
  225.                      printf("[%02d]",matriz[i][n]);
  226. }
  227.                         printf("\n");
  228.                          }
  229.                          printf("\n");
  230.               printf("Matriz B\n");                          
  231.      for(j=0;j<5;j++){
  232.                for(m=0;m<5;m++){
  233.                      printf("[%02d]",matriz1[j][m]);
  234. }
  235.                         printf("\n");
  236.                          }
  237.  
  238.      system("pause");    
  239. }
  240.  
  241. //2. Unión de A y B
  242. void  suma(){
  243.  
  244. //ciclo que suma las dos matrices
  245. int sumam[10][5];
  246. for(o=0;o<10;o++){      
  247. for(p=0;p<5;p++){
  248.  
  249.         if(o<5){
  250.         sumam[o][p]= matriz[o][p];
  251. }
  252.  
  253. if(o>5){
  254. for(o=5; o<10; o++){
  255. for(p=0; p<5; p++){
  256. sumam[o][p]= matriz1[o][p];
  257. }
  258. }
  259. }
  260.                          }
  261.                   }
  262.            //Par de ciclos que muestran las dos matrices guardadas en la opcion 1            
  263.            printf("\nLas matrices guardadas en la opcion 1, son: \n\n");
  264.       printf("Matriz A\n");
  265.     for(i=0;i<5;i++){
  266.                for(n=0;n<5;n++){
  267.                      printf("[%02d]",matriz[i][n]);
  268. }
  269.                         printf("\n");
  270.                          }
  271.  
  272.                          printf("\n");
  273.                          printf("Matriz B\n");
  274.     for(j=0;j<5;j++){
  275.                for(m=0;m<5;m++){
  276.                      printf("[%02d]",matriz1[j][m]);
  277. }
  278.                         printf("\n");
  279.                          }      
  280.  
  281. //ciclo que muestra la matriz resultante de la union          
  282. printf("\nLa matriz resultante de la suma de la Matriz A y la Matriz B, es: \n\n");
  283.      for(o=0;o<10;o++){
  284.                for(p=0;p<5;p++){
  285.                      printf("[%02d]",sumam[o][p]);
  286. }
  287.                         printf("\n");
  288.                          }
  289.  
  290.      system("pause");


En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Unir dos matrices en una matriz mas grande en c
« Respuesta #1 en: 3 Diciembre 2019, 16:39 pm »

El problema está en la línea 256.
Estás accediendo fuera de los límites de matriz1 al empezar el bucle con o = 5.
Además esa función es muy ineficiente...


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines