C/Visual C - ¿Dónde está el error?

 
Vista:

¿Dónde está el error?

Publicado por musiker (7 intervenciones) el 20/08/2013 11:48:02
Hola a todos. Estoy haciendo un programa que genera aleatoriamente ceros y unos. Cada vez se generan 5 números mezclando ambos. Quiero hacer 2 cosas:

1º contar las veces que sale el 0 (eso ya lo tengo conseguido),

2º y que el programa muestre los resultados de todas las tiradas (entendiendo por "tirada" las veces que se generan los 5 números).

Es decir, que si ha hecho 5 tiradas, que muestre por ejemplo:

en la tirada 1 hubo 3 ceros

en la tirada 2 hubo 5 ceros

en la tirada 3 hubo 1 cero

...

Lo que he intentado hacer para solucionarlo es guardar los resultados de cada tirada en un array, y luego mostrar los resultados almacenados, pero no sale. Sólo muestra los ceros totales, no los de cada "tirada". No sé dónde está el fallo y ya le he dado muchas vueltas... ¿Alguien me ayuda, por favor? (Está compilado en Turbo Borland C++ 4.5)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
 
int main(void)
{
	 int numeros=0, cajanumeros[100], cajadeceros[100], ceros=0, veces=0, i=0;
 
	 randomize();
 
 
	 printf("¿CUANTAS VECES DESEA GENERAR LOS NUMEROS?\n\n");
	 scanf (" %d", &veces);
 
 
 
	 for(numeros=1; numeros<=5; numeros++)
		{
			for(i=1; i<=veces; i++)
			{
				cajanumeros[numeros] = (rand() % 2);
 
				printf(" %d", cajanumeros[numeros]);
 
				if((cajanumeros[numeros])==0)
				{
					 ceros=ceros+1;
				}
 
			 }
		 }
 
	  for(i=1; i<=veces; i++)     //AQUI GUARDO LOS CEROS
		{
		cajadeceros[veces]=ceros;
		}
 
 
 for(i=1; i<=veces; i++)    //AQUI MUESTRO LOS CEROS DE CADA TIRADA (PROBLEMA)
		{
		cajadeceros[veces]=ceros;
		printf("\n\nEl numero de ceros es: %d ceros en esta tirada\n", cajadeceros[veces]);
		 }
 
 
} // MAIN





Muchas gracias por adelantado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

¿Dónde está el error?

Publicado por Tom (619 intervenciones) el 20/08/2013 13:33:27
Te has complicado un poco la vida. Mira esto (linux):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
 
/* */
int main(int argc, char *argv[]) {
	int	*tiradas, ntiradas, i, j;
 
	printf("Cuantas tiradas ?: ");
	scanf ("%d", &ntiradas);
 
	srand(time(NULL));
 
	tiradas = malloc(ntiradas * sizeof(int));
 
	for(i = 0; i < ntiradas; i++) {
		tiradas[i] = 0;
		for(j = 0; j < 5; j++) {
			if((rand() % 2) == 0) {
				tiradas[i]++;
			}
		}
	}
	for(i = 0; i < ntiradas; i++) {
		printf("%d: %d ceros\n", i, tiradas[i]);
	}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Dónde está el error?

Publicado por musiker (7 intervenciones) el 20/08/2013 15:07:33
Muchas gracias Tom, pero me da un error al compilar en la linea del malloc. Me dice: "cannot convert "void *" to "int *" in function main (int char * *)". Por qué puede ser??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Dónde está el error?

Publicado por Tom (619 intervenciones) el 21/08/2013 08:06:03
1
tiradas = (int*)malloc(ntiradas * sizeof(int));
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Dónde está el error?

Publicado por musiker (7 intervenciones) el 21/08/2013 10:58:22
Perfecto! Ahora sí! Muchísimas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar