Dev - C++ - No se en que falla mi codigo de c

 
Vista:

No se en que falla mi codigo de c

Publicado por hola123 (1 intervención) el 15/05/2021 21:30:42
No entiendo por que no termina de ejecutarse, tambien a veces salen numeros extraños y no entiendo el por que.
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
//Ejercicio 1
 
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#define lambda 0.13
 
int main(){
	int anos,x,suma,h,i,j,N,M,Aj;
 
	//Pedimos variables
 
	printf("Numero de nucleos (N): ");
	scanf("%d", &N);
	fflush(stdin);
	printf("Numero de simulaciones (M): ");
	scanf("%d", &M);
	fflush(stdin);
	printf("Intervalo de pasos (Aj): ");
	scanf("%d", &Aj);
	fflush(stdin);
	printf("Limite de años: ");
	scanf("%d", &anos);
	fflush(stdin);
 
	//Definimos el numero de pasos necesarios
 
	int pasos=anos*(lambda*N);
	int limite = pasos/Aj;
 
//Definimos estos dos arrays
 	int promedio[limite];
 		float intervalo[limite][M],t[limite];
 
 		//La variable intervalo contiene el numero de nucleos activos al cabo de [pasos][simulación]
 
 	for(i=0;i<limite;i++){
		intervalo[i][M]=0;
	}
	for(i=0;i<limite;i++){
		promedio[i]=0;
	}
//Randomizamos mediante el tiempo que marca el ordenador
	srand(time(NULL));
 
	int n[N];
 
	//Aqui empieza el bucle para M simulaciones
	for(int k=0;k<M;k++){
		printf("\n\nSimulacion numero %d\n\n",k+1);
 
		j=0;
		int x=0;
	for(i=0;i<N;i++){
		n[i]=1;
	}
 
 
 
	for(i=0;i<N;i++){
			suma += n[i];
		}
 
	do{
		if (j%Aj==0){
			printf("\nNucleos activos en %i pasos: %i\n",x*Aj,suma);
 
		intervalo[x][k]=suma;
		x++;
 
		}
		suma=0;
		j=j+1;
		i=rand()%(N+1);
		if(n[i]==1){
			n[i]=0;
		}
		for(i=0;i<N;i++){
			suma += n[i];
		}
		}while(suma!=0);
		//Queremos que nos de valores hasta que la suma del total sea 0, es decir que no quede ningun nucleo
 
	}
	//Declaramos el fichero donde almacenaremos los datos
	FILE *fichero;
	fichero= fopen("datos1.dat","w");
	printf("\n\n\n");
 
	int f=0;
	for (int x=0;x<=limite;x++){
		int suma1=0;
 
	for(int k=0;k<M;k++){
		suma1=suma1+intervalo[x][k];
	}
	promedio[x]=suma1/M;
	t[x]=(x*Aj)/(N*lambda);
	fprintf(fichero,"%f		%i\n",t[x],promedio[x]);
	f++;
	}
 
	fclose(fichero);
		printf("Tu archivo con los datos ha sido creado");
 
	system("pause");
	return 0;
}
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
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

No se en que falla mi codigo de c

Publicado por Rodrigo (539 intervenciones) el 17/05/2021 07:44:50
Pon atencion a los indices que usas,
por ejemplo el arreglo intervalo que esta definido en la linea 34 define 2 dimensiones, las que solo tienen indices validos de 0 al tamano 1

El primer indice de ese arreglo solo puede llegar a limite-1
y el segundo indice solo puede llegar a M-1,

pero ahi esta la linea 39 usando el segundo indice con valor M.

Tal vez haya mas problemas como este en tu codigo, revisalo.
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