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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  numero aleatorios en matriz 3*3 sin repetir
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: numero aleatorios en matriz 3*3 sin repetir  (Leído 7,095 veces)
creiko

Desconectado Desconectado

Mensajes: 44


Ver Perfil
numero aleatorios en matriz 3*3 sin repetir
« en: 18 Mayo 2016, 09:27 am »

Código
  1. Dev c++
  2.  
  3. Hola la cosa es la siguiente
  4. debo hacer el cubo magico de 3*3 usando numero aleatorios, sin que se repitan
  5. del 1 A 9
  6. Tengo este codigo
  7. pero tengo problemas que solo me coje los mismo números
  8. no me los rota
  9. Mis numero
  10. 8 1 6
  11. 3 5 7
  12. 4 9 2
  13. He visto otro orden
  14. 2 9 4
  15. 7 5 3
  16. 6 1 8
  17.  
  18. Como hago para que me den esos números en diferentes posiciones y suman 15
  19. en filas , columnas y diagonales
  20.  
  21. #include <stdio.h>
  22. #include"stdlib.h"
  23. #include"conio.h"
  24. #include"time.h"
  25. #include"iostream"
  26.  
  27. int main()
  28. {
  29.  
  30.    int a[3][3];
  31.    int contador=0;
  32.    int i;
  33.    int j;
  34.    int vi=0;
  35.    int vj=0;
  36.    int limite=3*3;
  37.    int limitei=3-1;
  38.    int limitej=3-1;
  39.    int sum1=0,sum2=0,sum3=0,sum4=0,sum5=0,sum6=0,sum7=0,sum8=0;
  40.     srand(time(NULL));
  41.    for( i=0;i<3;i++)
  42.    {
  43.       for( j=0;j<3;j++ )
  44.         {
  45.         a[i][j]=1+rand()%(9);
  46.         a[i][j]=0;
  47.        }
  48.    }
  49.    i = 3/ 2;
  50.    j = 0;
  51.  
  52.    for(contador=1;contador<=limite;contador++)
  53.    {
  54.  
  55.        a[j][i] = contador;
  56.  
  57.        vi = i;
  58.        vj = j;
  59.  
  60.        i++;
  61.        if(  i> limitei ) i = 0;
  62.  
  63.        j--;
  64.        if( j < 0 ) j= limitej;
  65.  
  66.        if (a[j][i]>0)
  67.        {
  68.  
  69.            i = vi;
  70.           j = vj +1 ;
  71.        }
  72.    }
  73.  
  74.    printf("\n MATRIZ 3X3 \n");
  75.    for( i=0 ; i<3 ; i++)
  76.    {
  77.         for( j=0 ; j<3 ; j++ )
  78.         {
  79.              printf("  %d ",a[i][j]);
  80.         }
  81. printf("  \n");
  82.    }
  83.  
  84.  
  85.    for(i=0;i<=2;i++)
  86. {
  87. for(j=0;j<=2;j++)
  88. {
  89. if(i==0)
  90. {
  91. sum1=sum1+a[i][j];
  92. }
  93. if(i==1)
  94. {
  95. sum2=sum2+a[i][j];
  96. }
  97. if(i==2)
  98. {
  99. sum3=sum3+a[i][j];
  100. }
  101. if(j==0)
  102. {
  103. sum4=sum4+a[i][j];
  104. }
  105. if(j==1)
  106. {
  107. sum5=sum5+a[i][j];
  108. }
  109. if(j==2)
  110. {
  111. sum6=sum6+a[i][j];
  112. }
  113. }
  114. }
  115.  
  116. for(i=0;i<=2;i++)
  117. {
  118. for(j=0;j<=2;j++)
  119. {
  120. if(i==j)
  121. sum7=sum7+a[i][j];  
  122. if(i==2-j)
  123. sum8=sum8+a[i][j];  
  124.  
  125. }
  126. }
  127.  
  128.  
  129. printf("\n\n");
  130.  
  131. printf("SUMA DE LAS FILAS \n\n");
  132.  
  133. printf("%d",sum1);
  134. printf("\n\n");
  135. printf("%d",sum2);
  136. printf("\n\n");
  137. printf("%d",sum3);
  138.  
  139. printf("\n\n");
  140. printf("*********************************************** \n");
  141. printf("\n\n");
  142.  
  143. printf("SUMA DE LAS COLUMNAS \n\n");
  144.  
  145. printf("%d",sum4);
  146. printf("\n\n");
  147. printf("%d",sum5);
  148. printf("\n\n");
  149. printf("%d",sum6);
  150.  
  151. printf("\n\n");
  152. printf("*********************************************** \n");
  153. printf("\n\n");
  154.  
  155. printf("SUMA DE LAS DIAGONALES \n\n");
  156.  
  157. printf("%d",sum7);
  158. printf("\n\n");
  159. printf("%d",sum8);
  160. printf("\n\n");
  161. }
  162.  
  163.  


« Última modificación: 18 Mayo 2016, 09:35 am por creiko » En línea

FurioMoltisanti

Desconectado Desconectado

Mensajes: 39



Ver Perfil
Re: numero aleatorios en matriz 3*3 sin repetir
« Respuesta #1 en: 18 Mayo 2016, 17:34 pm »

Encuentro tu código bastante confuso, creo que deberías empezar de cero. Intenta plantear el problema paso a paso.

Mi forma seria:

Debemos llenar una matriz con números aleatorios comprobando que cada numero que insertamos no exista previamente en ella.
A continuación comprobamos si la suma de toda columna/fila/diagonal da 15, si es así mostramos por pantalla la matriz si no volvemos a llenar la matriz hasta que se de el caso.

Te pongo como he empezado yo(en este ejemplo he usado he empleado un vector en lugar de una matriz):
Código
  1.    do{
  2.      //ponemos la matriz a cero
  3.          //bucle con el que llenamos de números aleatorios la matriz
  4.          //dentro del bucle cada vez que generamos un numero
  5.          //comprobamos si ya existe para que no se repitan
  6. }while(empleados[0]+empleados[1]+empleados[2] != 15 ||
  7. empleados[3]+empleados[4]+empleados[5] != 15 ||
  8. empleados[6]+empleados[7]+empleados[8] != 15 ||
  9. empleados[0]+empleados[3]+empleados[6] != 15 ||
  10. empleados[1]+empleados[4]+empleados[7] != 15 ||
  11. empleados[2]+empleados[5]+empleados[8] != 15 ||
  12. empleados[0]+empleados[4]+empleados[8] != 15 ||
  13. empleados[6]+empleados[4]+empleados[2] != 15);
  14.  


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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