Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: creiko en 11 Mayo 2016, 17:25 pm



Título: Alguien que me revise esto y me diga si esta bien
Publicado por: creiko en 11 Mayo 2016, 17:25 pm
Código
  1. #include"stdlib.h"
  2. #include"conio.h"
  3. #include"time.h"
  4. #include"iostream"
  5.  
  6. int main()
  7. {
  8. int i,j,opc,num,a,n,p=0;
  9. printf("PROGRAMA MATRIZ CON MENU \n\n");
  10. printf("Digite la cantidad de filas y columnas en la matriz (solo positivos) \n\n");
  11. scanf("%d",&num);
  12.  
  13. int x[num][num];
  14.  
  15. int l=num+1;
  16.  
  17. srand(time(NULL));
  18. if(num>0)
  19. {
  20. printf("                     MENU                  \n\n");
  21. printf("*    Elija Una Opcion \n\n");
  22. printf("1. Colocar cero en ambas diagonales de la matriz \n");
  23. printf("2. Colocar cero en la primera y la última fila, y en la primera y la última columna de la matriz \n");
  24. printf("3. Llenar de números la matriz de tal forma que mat[i][j] sea igual a i+j. \n");
  25. printf("4. Llenar la diagonal principal de la matriz con los números 1,2,...N \n");
  26. printf("5. Llenar todas las filas pares con los números 1,2,3,...N, y las filas impares con los números N,N-1,N-2,...1. \n");
  27. printf("\n\n");
  28. printf("La opcion escojida es la numero: \n");
  29. scanf("%d",&opc);
  30. printf("\n\n");
  31. switch(opc)
  32. {
  33. case 1:
  34. for(i=1;i<=num;i++)
  35. {
  36. for(j=1;j<=num;j++)
  37. {
  38. if(i==j)
  39.            {
  40.            x[i][j]=0;
  41.  
  42.            }
  43.             else
  44.                if(i==l-j)
  45.            {
  46.            x[i][j]=0;
  47.            }
  48.             else
  49.             {
  50.                x[i][j]=1+rand()%(9);
  51.                }
  52. }
  53. }
  54.  
  55. for(i=1;i<=num;i++)
  56. {
  57. for(j=1;j<=num;j++)
  58. {
  59.                 printf("%d ",x[i][j]);
  60. }
  61. printf("\n");
  62. }
  63. break;
  64.  
  65. case 2:
  66. for(i=1;i<=num;i++)
  67. {
  68. for(j=1;j<=num;j++)
  69. {
  70. if(i==1)
  71. {
  72. x[i][j]=0;
  73. }
  74. else
  75. if(j==1)
  76. {
  77. x[i][j]=0;
  78. }
  79. else
  80. if(i==num)
  81. {
  82. x[i][j]=0;
  83. }
  84. else
  85. if(j==num)
  86. {
  87. x[i][j]=0;
  88. }
  89. else
  90. {
  91. x[i][j]=1+rand()%(9);
  92. }
  93. }
  94. }
  95.  
  96. for(i=1;i<=num;i++)
  97. {
  98.   for(j=1;j<=num;j++)
  99.   {
  100.     printf("%d ",x[i][j]);
  101.    }
  102.    printf("\n");
  103. }
  104. break;
  105.  
  106. case 3:
  107. for(i=1;i<=num;i++)
  108. {
  109. printf("\n\n");
  110. for(j=1;j<=num;j++)
  111. {
  112. x[i][j]=i+j;
  113. printf(" %d ",x[i][j]);
  114. }
  115. }
  116. break;
  117.  
  118. case 4:
  119. for(i=1;i<=num;i++)
  120. {
  121. for(j=1;j<=num;j++)
  122. {
  123. if(i==j)
  124.            {
  125.            x[i][j]=0+j;
  126.            }
  127.  
  128.             else
  129.             {
  130.                x[i][j]=1+rand()%(9);
  131.                }
  132. }
  133. }
  134.  
  135. for(i=1;i<=num;i++)
  136. {
  137. for(j=1;j<=num;j++)
  138. {
  139.                 printf("%d ",x[i][j]);
  140. }
  141. printf("\n");
  142. }
  143. break;
  144.  
  145. case 5:
  146. for (i=1;i<=num;i++)
  147.  {
  148.   p=0;
  149. a=1;
  150. for(j=1;j<=num;j++)
  151.  {
  152.   if(i %2==0)
  153.  {
  154.  
  155.   x[i][j]=a;
  156. a++;
  157.  }
  158.  else
  159.  {
  160.   x[i][j]=num-p;
  161.   p++;
  162.  }
  163. }
  164.  }
  165.  
  166.  for(i=1;i<=num;i++)
  167.  {
  168.   for(j=1;j<=num;j++)
  169.  {
  170.   printf("%d",x[i][j]);
  171.  }
  172.  printf("\n");
  173. }
  174. break;
  175.  
  176. default:
  177. printf("Opcion no valida");
  178. break;
  179. }
  180. }
  181. }


Mod: Los códigos deben ir en etiquetas GeSHi


Título: Re: Alguien que me revise esto y me diga si esta bien
Publicado por: abaadoon en 12 Mayo 2016, 01:21 am
esta mal amigo eso quedaria asi
Código
  1. #include"stdlib.h"
  2. #include"conio.h"
  3. #include"time.h"
  4. #include"iostream"
  5. #define NUM 50
  6. int main()
  7. {
  8.   int i,j,opc,num,a,n,p=0;
  9.   printf("PROGRAMA MATRIZ CON MENU \n\n");
  10.   printf("Digite la cantidad de filas y columnas en la matriz (solo positivos) \n\n");
  11.   scanf("%d",&num);
  12.  
  13.   int x[NUM][NUM];
  14.  
  15.   int l=num+1;
  16.  
  17.   srand(time(NULL));

ETC..........
jajajjajaj ya no le sigo por que yo tambien e venido a este foro a pedir ayuda :)


Mod: Los códigos deben ir en etiquetas GeSHi, 3ra advertencia


Título: Re: Alguien que me revise esto y me diga si esta bien
Publicado por: AlbertoBSD en 12 Mayo 2016, 15:03 pm
Muy buen dia.

A opcion que te mostraron anteiormente es valida pero lo limita a una matriz de 50 x 50.

Tu linea

Código
  1. int x[num][num];

No es valida en tiempo de ejecucion. por que el compilador necesita saber a priori cuanta memoria reservar. De lo contrario tienes que usar memoria dinamica para ello.

Código
  1. int *x = calloc(num*num,sizeof(int));

Y el acceso a la matriz se debe de hacer de forma mas o menos asi.

Código
  1. y = x[fila*num+ columna];