C/Visual C - Problema con condicional if-else en C

 
Vista:
Imágen de perfil de Anderson
Val: 8
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problema con condicional if-else en C

Publicado por Anderson (4 intervenciones) el 19/04/2020 02:01:36
Buenas tengo un problema. Estoy tratando de hacer una pequeña aplicación que me indique cuándo un número es parte de la secuencia de Fibonacci y cuándo no lo es.

El asunto es que no se ejecuta el último else del código el cual es la alternativa contraria a cuando encuentra un número que sí es parte de la secuencia de Fibonacci. Al ingresar en el programa un número que no pertenece a la secuencia de Fibonacci no muestra ningún mensaje.

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
#include <stdio.h>
#include <stdlib.h>
 
int main(){
  int a, b, i, limite, sumatoria;
 
  printf("Ingrese un numero: ");
  scanf("%d", &limite);
 
  a = 1;
  b = 1;
 
  for (sumatoria = a; sumatoria <= limite; sumatoria = a + b){
    if (limite == 1){
            printf("%d es parte de la secuencia Fibonacci", sumatoria);
            break;
    }else{
      if (sumatoria < limite){
            b = a;
            a = sumatoria;
            continue;
      }else{
          if (sumatoria == limite){
            printf("%d es parte de la secuencia Fibonacci", limite);
            break;
          }else
          printf("%d no es parte de la secuencia Fibonacci", limite);
      }
    }
  }
}
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: 350
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problema con condicional if-else en C

Publicado por Rodrigo (119 intervenciones) el 19/04/2020 02:30:51
Tu ciclo tiene como condicion de continuacion que sumatoria sea <= limite.
No hay manera que se ejecute si sumatoria > limite.
Dentro del ciclo consideras 2 condiciones: if sumatoria < limite o si sumatoria == limite, No es posible que ocurra algo distinto que esto.
El print que esperas que se imprima es imposible que ocurra, pues solo puede ocurrir si sumatoria es > limite.

La condicion limite == 1 deberia estar fuera del ciclo.

Ademas el continue en una de las condiciones es superfluo.
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
Imágen de perfil de Anderson
Val: 8
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problema con condicional if-else en C

Publicado por Anderson (4 intervenciones) el 22/04/2020 19:40:20
Sí, tienes razón. Tuve que replantear la lógica. Así fue como quedó:

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
#include <stdio.h>
#include <stdlib.h>
 
int main(){
  int limite, sumatoria, a, b;
  printf("Ingrese un numero: ");
  scanf ("%d", &limite);
 
  a = 0;
  b = 1;
  sumatoria = 0;
 
  while (limite >= sumatoria){
    sumatoria = a + b;
    if (sumatoria > limite){
    break;
    }else{
    a = b;
    b = sumatoria;
    }
  }
 
  if (b == limite)
  printf("\nEl numero %d pertenece a la secuencia de Fibonacci\n", limite);
  else
  printf("\nEl numero %d no pertenece a la secuencia de Fibonacci\n", limite);
 
  return 0;
}
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