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:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main ()
{
/* Definición de datos */
int calculosxciclo, ciclos, resultado, total;
float x, y, pceros, punos;
int cero = 0, uno = 0;
char c;
/* Programa */
printf("PROGRAMA V. 1.0\n");
printf("Introduce el número de cálculos por ciclo: ");
scanf( "%d", &calculosxciclo);
printf("Introduce el número de ciclos: ");
scanf ( "%d", &ciclos);
while (ciclos != 0) {
while (calculosxciclo != 0) {
x = rand() / 32768.0;
resultado = (2 * x);
/*Si sale 0 ó 1... */
if (resultado == 0) {
++cero;
}
if (resultado == 1) {
++uno;
}
--calculosxciclo;
}
printf("\nNúmero de ceros: %u", cero);
printf("\nNúmero de unos: %u", uno);
total = (cero + uno);
printf("\nTotal: %d", total);
pceros = ((cero * 100) / total);
punos = ((uno * 100) / total);
printf("\nPorcentaje de ceros: %f", pceros);
printf("\nPorcentaje de unos: %f", punos);
c = getchar();
--ciclos;
}
}
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!