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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / ordenamieno burbuja en: 12 Diciembre 2018, 23:12 pm
Necesito que mi programa ingrese unos datos a una base y las ordene mediante ordenamiento burbuja, el problema es que no me ordena los libros ingresados, si alguien me pudiese señalar donde tenga el error el prgrama porfavor.

Adjunto mi codigo:
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <conio.h>
  4.  
  5. #define MAXLIN 80
  6. #define MAXTIT 40
  7. #define MAXAUT 40
  8. #define MAXEDIT 40
  9. #define MAXREV 40
  10.  
  11. #define MAXTXT 100
  12.  
  13. enum {anadir=1, listartodo, listarano, salir};
  14.  
  15.  
  16.  
  17. struct texto {
  18. char titulo[MAXTIT];
  19. char autor[MAXAUT];
  20. char editorial[MAXEDIT];
  21. char revista[MAXREV];
  22. int numref;
  23. int numed;
  24. int auxref;
  25. int anyo;
  26. int clase;
  27. };
  28.  
  29. struct biblioteca {
  30. struct texto txt[MAXTXT];
  31. int cantidad;
  32. };
  33.  
  34. int main (void) {
  35.  
  36. struct biblioteca mistxt;
  37. int opcion, opc, i, j, ano, aux;
  38. char titulo[MAXTIT];
  39. char autor[MAXAUT];
  40. char linea[MAXLIN];
  41.  
  42.     mistxt.cantidad = 0;
  43.  
  44. do{
  45. do{
  46. printf("-------------------------------------\n");
  47. printf("Biblioteca Universidad de Valparaisio\n");
  48. printf("-------------------------------------\n");
  49. printf("1) Anadir Libro/Revista.\n");
  50. printf("2) Listar todos los textos.\n");
  51. printf("3) Listar por ano.\n");
  52. printf("4) Salir.\n");
  53. printf("\n");
  54. printf("Elija una opcion: \n");
  55. gets(linea); sscanf (linea, "%d", &opcion);
  56. if (opcion<1 || opcion>5){
  57. printf("La opcion ingresada es incorrecta, intente otra vez.\n");
  58. }
  59. }   while (opcion <1 || opcion >5);
  60.     printf("\n");
  61. switch (opcion) {
  62. case anadir:
  63. if (mistxt.cantidad == MAXTXT) {
  64. printf("La base de datos esta llena. Lo sentimos.\n");
  65. } else {
  66.  
  67. printf("Ingrese el numero de referencia: \n");
  68. gets(linea); sscanf(linea, "%d", &mistxt.txt[mistxt.cantidad].numref);
  69. mistxt.txt[mistxt.cantidad].auxref = mistxt.txt[mistxt.cantidad].numref;
  70. printf("Ingrese el titulo: \n");
  71. gets(mistxt.txt[mistxt.cantidad].titulo);
  72. printf("Ingrese el autor: \n");
  73. gets(mistxt.txt[mistxt.cantidad].autor);
  74. printf("Ingrese la editorial: \n");
  75. gets(mistxt.txt[mistxt.cantidad].editorial);
  76. printf("Ingrese ano de publicacion: \n");
  77. gets(linea); sscanf(linea, "%d", &mistxt.txt[mistxt.cantidad].anyo);
  78. do{
  79. printf("Ingrese la clase de texto que es: \n1) Libro \n2) Revista\n");
  80. printf("Elija la opcion: 1 o 2\n");
  81. gets(linea); sscanf (linea, "%d", &opc);
  82. if (opc<1 || opc>2){
  83. printf("La opcion ingresada es incorrecta, intente otra vez.\n");
  84. }
  85. } while (opcion <1 || opcion >2);
  86. switch (opc) {
  87.  
  88. case 1:
  89. mistxt.txt[mistxt.cantidad].clase= 1;
  90. printf("Ingrese el numero de edicion: \n");
  91. gets(linea); sscanf(linea, "%d", &mistxt.txt[mistxt.cantidad].numed);
  92. break;
  93.  
  94. case 2:
  95. mistxt.txt[mistxt.cantidad].clase= 2;
  96. printf("Ingrese el nombre de la revista: \n");
  97. gets(mistxt.txt[mistxt.cantidad].revista);
  98. break;
  99. }
  100.  
  101. for(i=0;i<mistxt.cantidad;i++){
  102. for(j=0;j<mistxt.cantidad;j++){
  103. if(mistxt.txt[j].auxref>mistxt.txt[j+1].auxref){
  104. aux = mistxt.txt[j].auxref;
  105. mistxt.txt[j].auxref = mistxt.txt[j+1].auxref;
  106. mistxt.txt[j+1].auxref=aux;
  107. }
  108. }
  109. }
  110. printf("\n\n");
  111. mistxt.cantidad++;
  112. }
  113. break;
  114.  
  115. case listartodo:
  116.  
  117. for (i=0; i<mistxt.cantidad; i++){
  118. printf("---------------------------\n");
  119. printf("%d", i);
  120. printf("Numero de referencia: %d\n", mistxt.txt[i].numref);
  121. printf("Titlulo: %s\n", mistxt.txt[i].titulo);
  122. printf("Autor: %s\n", mistxt.txt[i].autor);
  123. printf("Editorial: %s\n", mistxt.txt[i].editorial);
  124. printf("Año de publicacion; %d\n", mistxt.txt[i].anyo);
  125. if(mistxt.txt[i].clase == 1){
  126. printf("Tipo de texto: Libro\n");
  127. printf("N° de edicion: %d\n", mistxt.txt[i].numed);
  128. }
  129. if(mistxt.txt[i].clase == 2){
  130. printf("Tipo de texto: Revista\n");
  131. printf("Nombre de la revista: %s\n", mistxt.txt[i].revista);
  132. }
  133. printf("---------------------------\n");
  134. }
  135. break;
  136.  
  137. case listarano:
  138. printf("Ingrese el ano a buscar: \n");
  139. scanf("%d", ano);
  140. for (i=0; i<mistxt.cantidad; i++){
  141. if (mistxt.txt[i].anyo==ano){
  142. printf("---------------------------\n");
  143. printf("%d", i);
  144. printf("Numero de referencia: %d\n", mistxt.txt[i].numref);
  145. printf("Titlulo: %s\n", mistxt.txt[i].titulo);
  146. printf("Autor: %s\n", mistxt.txt[i].autor);
  147. printf("Editorial: %s\n", mistxt.txt[i].editorial);
  148. printf("Año de publicacion; %d\n", mistxt.txt[i].anyo);
  149. if(mistxt.txt[i].clase == 1){
  150. printf("Tipo de texto: Libro\n");
  151. printf("N° de edicion: %d\n", mistxt.txt[i].numed);
  152. }
  153. if(mistxt.txt[i].clase == 2){
  154. printf("Tipo de texto: Revista\n");
  155. printf("Nombre de la revista: %s\n", mistxt.txt[i].revista);
  156. }
  157. printf("---------------------------\n");
  158. }
  159. }
  160. break;
  161. }
  162. } while (opcion != salir);
  163. return 0;
  164. }
  165.  
2  Programación / Programación C/C++ / Necesito saber por que no me funciona. 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);
   }
}
3  Programación / .NET (C#, VB.NET, ASP) / Matriz aleatoria en: 20 Noviembre 2018, 21:50 pm
Estimados tengo una duda de como poder hacer para asignar una valor obtenido a una matriz y que los números que vayan generándose contiguamente se asignen en la siguiente casilla y así sucesivamente hasta completar la matriz de 6x4, debo recalcar que no puedo usar la sentencia for.
Esto es lo que llevo hasta el momento pero estoy complicado con ese tema.

Código
  1. #include<stdio.h>
  2. #include<time.h>
  3. int main () {
  4. int cont, primo, n, numero, x, y, c;
  5. int matriz [6][4];
  6. cont=0;
  7. while (cont<=24) {
  8. n=1;
  9. x,y,c=0;
  10. srand (time(NULL));
  11. while (x<6) {
  12. while (y<4) {
  13. numero = 1 + rand () % ((81+1)-2);
  14. while (n<=numero) {
  15. if (numero%n==0) {
  16. n++;
  17. c++;
  18. }
  19. }
  20. if (c==2) {
  21. cont++;
  22. }
  23. }
  24. }
  25. }
  26. }

Espero atentamente su respuesta.

Es en #c

MOD: Etiquetas GeSHi. No hacer doble post. Usa el botón modificar.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines