Parece que no puedo averiguar qué hacer. Estoy tratando de practicar con rand () en C, pero no sé cómo hacer la otra parte.
Quiero que la salida se vea como:
Monedas: Tirones: 10 Cabezas: 40% Cola: 60%
Ahora mismo tengo esto como mi código:
#include #include int main() { int i, value; for(i=0; i < 10; i++){ value = rand()%2; printf("Coin:\n____\n Flips: 10\n"); } return 0; }
Quiero que genere caras o colas y luego muestre un porcentaje de lo que tenía. ¿Alguna ayuda?
El problema es que está imprimiendo durante las pruebas cuando solo debería imprimir una vez que se hayan completado. Prueba esto:
#include #include int main() { int i, value; int heads = 0; srand(time(NULL)); /* seed for rand */ for(i=0; i < 10; i++){ value = rand() % 2; if (value == 1) { heads++; } } printf("Coin:\n____\n Flips: 10\n"); printf(" Heads: %d%%\n", heads * 10); printf(" Tails: %d%%\n\n", (10 - heads) * 10); return 0; }
Hay algo de malo en esto. No estás haciendo un seguimiento de nada para obtener los porcentajes. Tenga en cuenta que esto es más “pseudocódigo”. No lo he probado, por lo que podría tener un error tipográfico.
int main() { int i, value; int headsCount = 0; int tailsCount = 0; for(i=0; i < 10; i++){ value = rand()%2; if (value == 0) headsCount++; else tailsCount++; printf("Coin:\n____\n Flips: %d\n", i+1); printf(" Heads: %d%%\n", (headsCount * 100) / (i+1))); printf(" Tails: %d%%\n\n", (tailsCount * 100) / (i+1))); } return 0; }
value / value
será igual a 1 o causará una división por cero.
value / 10
le dará un resultado menor o igual a 1, pero cualquier valor menor que 1 se redondeará a cero porque es un número entero.
value * 100 / 10
le dará un resultado menor o igual a 100 (un porcentaje).
100 - value * 100 / 10
le dará un porcentaje opuesto.