C/Visual C - Necesito ayuda:

 
Vista:
sin imagen de perfil
Val: 13
Ha aumentado su posición en 4 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Necesito ayuda:

Publicado por SV (4 intervenciones) el 15/05/2019 16:50:56
Buenas tardes, estoy dando mis primeros pasos en programación y me gustaría hacer un programa que imprimiera fibonacci en inverso, lo máximo que consigo es esto :

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
//Serie Fibonacci inversa.
 
#include<stdio.h>
#include<stdlib.h>
 
int main(){
	int numero,j,i;
	int arreglo[numero];
 
	printf("Introduzca el numero de elementos:\n");
	scanf("%i",&numero);
 
	if(numero<0){
		printf("El numero debe ser positivo");
    }
 
	else{
	for(i=0;i<=numero;i++){
		if(i==0 || i==1){
		arreglo[i]=i;
		}
		else{
			arreglo[i]=arreglo[i-2]+arreglo[i-1];
		}
	}
}
	for(j=numero;j>=0;j--){
		printf("%i, ",arreglo[j]);
	}
 
return 0;
}


¿Por qué no funciona correctamente?.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
sin imagen de perfil
Val: 88
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Necesito ayuda:

Publicado por Thanatos (29 intervenciones) el 16/05/2019 09:25:27
Los problemas en tu código comienzan desde las dos primeras líneas de la función main.

En la línea 7 declaraste tres variables que no han sido inicializadas: numero, i y j. Cuando esta línea termina de ejecutarse, no se puede determinar el valor que está almacenado en las posiciones de memoria que se les asignó al momento de declararlas. Podrían contener cualquier número: 0, 2, -100, 500, 99999, etc. Esto es especialmente importante para la variable numero, por el uso que le das en la siguiente línea.

En la línea 8 declaras el array arreglo usando el valor indeterminado de la variable numero. En otras palabras, el tamaño del array es desconocido.

En la línea 11 el usuario ingresa un nuevo valor para la variable numero. Esto no modifica el tamaño que se le asignó al array en la línea 8.

Como es el usuario quien determina el número de elementos de la serie de Fibonacci, puedes almacenarlos usando memoria dinámica:

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
#include <stdio.h>   // printf(), scanf(), fprintf()
#include <stdlib.h>  // EXIT_FAILURE, EXIT_SUCCESS, malloc(), free()
 
int main(void) {
    int *array = NULL;
    int prev = 1;
    int sgte = 0;
    int fibo = 0;
    int cantidad;
 
    printf("Ingrese la cantidad de elementos: ");
    scanf("%i", &cantidad);
 
    if (cantidad < 0) {
        fprintf(stderr, "* La cantidad debe ser positiva *\n");
        return EXIT_FAILURE;
    }
 
    array = malloc((size_t) cantidad * sizeof *array);
 
    if (array == NULL) {
        fprintf(stderr, "* Error al reservar memoria *\n");
        return EXIT_FAILURE;
    }
 
    for (int cont = 0, i = cantidad - 1; cont < cantidad; ++cont, --i) {
        array[i] = fibo;
        fibo = prev + sgte;
        prev = sgte;
        sgte = fibo;
    }
 
    for (int i = 0; i < cantidad; ++i) {
        printf("%i  ", array[i]);
    }
 
    free(array);
 
    return EXIT_SUCCESS;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 13
Ha aumentado su posición en 4 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Necesito ayuda:

Publicado por SV (4 intervenciones) el 17/05/2019 16:09:41
Muy aclarador. Gracias Thanatos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar