Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: sleepy.lito en 21 Noviembre 2018, 18:27 pm



Título: Necesito saber por que no me funciona.
Publicado por: sleepy.lito en 21 Noviembre 2018, 18:27 pm
Tengo un hacer un programa que cumpla con lo siguiente:

1. Generar la Tarjeta de Coordenadas en forma aleatoria. Para ello, debe generar el número que formará
parte de la tarjeta. Ese número Sólo formará parte de ella si es un número primo.
2. Generar aleatoriamente la posición donde guardar ese número primo. Por ejemplo, si el número generado es
el 02, se debe validar que es primo y luego asignarle una posición en la tarjeta (Matriz). Debe obtener dicha
posición en forma aleatoria.
3. Una vez generada la tarjeta en forma íntegra, se debe mostrar por pantalla el contenido de la tarjeta, es decir,
mostrar en pantalla la tarjeta resultante.
4. Realizar tres transacciones bancarias en las cuales le solicite autorizar dicha transacción pidiendo y validando
3 coordenadas aleatorias de la Tarjeta.

 Para la Solución de esta problemática NO DEBE UTILIZAR:
o SENTENCIA FOR
o SENTENCIA CASE (SWITCH)
o PROCEDIMIENTOS O FUNCIONES.


La verdad es que llevo muchas horas intentando corregir errores, si alguien encuentra algo en lo que me pueda ayudar lo agradecería bastante.


#include<stdio.h>
#include<time.h>
int main () {
   int cont, primo, n, numero, x, y, c, j, cd, ok, trans, fil, col,aux;
   int matriz [4][6];
   c,j,cont,cd=0;
   while (c<=3){
      while (j<=5){
         matriz[c][j]=0; //aqui se asigna 0 a todas las posiciones de la matriz para inicializarla.
         j++;
      }
      c++;
      j=0;
   }
   primo=2;
   while (primo<100 && cont<=24){ // limite de primos menores a 100 y hasta el primo numero 24.
      n=1;
      cd=0;
      while (n<=primo){ // ciclo de comprobacion de numero primo.
         if (primo%n==0){
            cd++; //incrementados de contador de divisores
         }
         n++;
      }
      if (cd==2){
         cont++;
         ok=0;
         while (ok==0){ // controlador
            x= 0 + rand() % ((5+1)-0); // generacion aleatoria de la posicion x.
            y= 0 + rand() % ((3+1)-0); // generacion aleatoria de la posicion y.
            if(matriz[y]
  • ==0){ // comprobacion de que la ubicacion encontrada no se encuentre asignada.
               matriz[y]
  • =primo;
               ok++; // incremento del controlador para salir del bucle
            }
         }
      }
   primo++; //incrementador del numero a comprobar
   } //omitir de aqui en adelante ya que no esta terminado.
   
   printf("Bienvenido al banco, a continuacion se le otorgara una tarjeta de transferencias ICICARD.");
   printf("\n");
   x,y=0;
   while (y<=3){
      while (x<=5){
         printf("%d",matriz[y]
  • );
         j++;
      }
      c++;
      j=0;
   }
   printf("ABCDEF\n");
   printf("%d\n", matriz[y]
  • );
   printf("Desea realizar una transaccion?\n1-si\n0-no");
   scanf("%d", trans);
   if (trans==1){
      printf("Ingrese las coordenadas que aparecen a continuacion\n");
      col= 0 + rand() % ((5+1)-0);
   }
}


Título: Re: Necesito saber por que no me funciona.
Publicado por: srWhiteSkull en 21 Noviembre 2018, 19:00 pm
Si hay error indica el error y la línea, algo que sale cuando compilas. Y si es porque el comportamiento no es el que se espera usa la depuración. Para depurar sencillamente imprime por pantalla las variables que participan en el programa en los diversos puntos de proceso de este, como cuando los introduces, aplicas condiciones o realizas algún tipo de operación. Recuerda poner un mensaje tipo "*** Aquí llega X con el valor tal ***" etc... para que tengas una idea de que estás mostrando y en que parte del programa se encuentra. Cuando aprendas a depurar verás que ni tendrás que asomarte a un foro a preguntar porque no funciona el programa que desarrolles. De nada.