• Viernes 8 de Noviembre de 2024, 16:52

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - kult18

Páginas: [1]
1
C/C++ / 3 Problemas En Un Pequeño Programa
« en: Jueves 2 de Noviembre de 2006, 11:03 »
Hola, estoy haciendo un sencillo programa en C y me he encontrado con 3 problemillas, a ver si me podéis solucionar porque me vuelvo loco. Aquí pongo el código:
Código: Text
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. main ()
  6.  
  7. {
  8.  /* Definición de datos */
  9.  int calculosxciclo, ciclos, resultado, total;
  10.  float x, y, pceros, punos;
  11.  int cero = 0, uno = 0;
  12.  char c;
  13.  
  14.  /* Programa */
  15.  printf("PROGRAMA V. 1.0\n");
  16.  printf("Introduce el número de cálculos por ciclo: ");
  17.  scanf( "%d", &calculosxciclo);
  18.  printf("Introduce el número de ciclos: ");
  19.  scanf ( "%d", &ciclos);
  20.  while (ciclos != 0)    {
  21.        while (calculosxciclo != 0)   {
  22.              x = rand() / 32768.0;
  23.              resultado = (2 * x);
  24.              /*Si sale 0 ó 1... */
  25.              if (resultado == 0)     {
  26.                                      ++cero;
  27.                 }
  28.              if (resultado == 1)     {
  29.                                      ++uno;
  30.                 }
  31.              --calculosxciclo;
  32.        }
  33.       printf("\nNúmero de ceros: %u", cero);
  34.       printf("\nNúmero de unos: %u", uno);
  35.       total = (cero + uno);
  36.       printf("\nTotal: %d", total);
  37.       pceros = ((cero * 100) / total);
  38.       punos = ((uno * 100) / total);
  39.       printf("\nPorcentaje de ceros: %f", pceros);
  40.       printf("\nPorcentaje de unos: %f", punos);    
  41.       c = getchar();
  42.       --ciclos;
  43.  }
  44. }
  45.  
El programa genera un número de cadenas (especificado al principio del programa) de ceros y unos (el número de dígitos de cada cadena también se especifican al comienzo). Luego cuenta los ceros y los unos y te muestra los resultados.
Vale, los 3 errores con los que me encuentro son estos:
1º A pesar de usar la función rand, si ejecutáis el programa y ponéis por ejemplo 10 cálculos por ciclo y 5 ciclos, veréis que siempre hace la misma distribución: 6 ceros y 4 unos, a pesar de que debiera ser aleatorio y cada vez ofrecer una distribución distinta.
2º Al margen de la función rand, si pongo que quiero 5 ciclos, se supone que me debe mostrar los datos de cada ciclo cada vez que yo pulse una tecla. Al ejecutar el programa, los datos del primer y segundo ciclo me salen juntos y sin un espacio que los divida, luego ya salen todos bien.
3º Si pongo que sólo quiero un ciclo, éste lo muestra tan rápido que no da tiempo a verlo. ¿Cómo puedo hacer que también permanezca en pantalla hasta que yo pulse una tecla?

Espero que me podáis ayudar. Muchas gracias por adelantado!

Páginas: [1]