Dev - C++ - Duda acerca programa - algoritmo

 
Vista:

Duda acerca programa - algoritmo

Publicado por Javier (1 intervención) el 28/09/2009 02:28:25
Buenas noches,

Tengo una duda a la hora de compilar un programa.

Las instrucciones a compilar son las siguientes:

const
FISEQ: real = -1.0;
fconst
algoritmo triangulosRectangulos
var
n: entero;
alt, base, hipotenusa: real;
fvar
{Pre: En la entrada estandar hay una secuencia: < aa1 ba1 ha1 aa2 ba2 ha2... aan ban han -1>}
n := 0;
alt := leerEntero();
mientras alt ≠ FISEQ hacer
base := leerReal();
hipotenusa :=leerReal();
si alt*alt + base*base = hipotenusa*hipotenusa entonces
n :=n+1;
fsi
alt := leerReal();
fmientras
escribirEntero(n);
falgorismo
{Post: Se ha escrito en la salida estandar el valor del número de triangulos rectangulos encontrados en la secuencia}
Se pide:

Codificar, compilar i probar en lenguaje C el algoritmo dado.


Yo lo he codificado de la manera siguiente:

#include <stdio.h>

/* Declaración de constantes */

#define FISEQ -1.0

/* algoritmo triangulosRectangulos */

/* Pre: En la entrada estandar hay una secuencia: < aa1 ba1 ha1 aa2 ba2 ha2... aan ban han -1> */

int main ()
{
int n;
float alt, base, hipotenusa;
n=0;

scanf ("%f", &alt);

while (alt != FISEQ)
{
if (alt*alt+base*base == hipotenusa*hipotenusa);

scanf ("%f", &base);
scanf ("%f", &hipotenusa);
{


n=n+1;
}
}
scanf ("%f", &alt);


printf ("%d ", n);
return 0;
}



/* Post: Se ha escrito en la salida estandar el valor del número de triangulos rectangulos encontrados en la secuencia). */

La condición while, si no me equivoco, se cumple siempre, por lo que el programa no funciona.

¿Alguién podría explicarme donde está el error, y cuál seria la forma correcta de codificarlo?

Muchas gracias por la ayuda.
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

RE:Duda acerca programa - algoritmo

Publicado por manuel (1 intervención) el 20/10/2009 11:20:19
Hola Javier, no creo que el programa no se ejecute por la razon que tu piensas, casi seguro lo hace porque no estas vaciando el buffer del teclado, prueba a poner

fflush(stdin);

antes de cada scanf

Ahora una duda tonta que tengo, cuando dices que en la entrada estandar se tiene una secuencia, se refiere a que vas a introducir tu manualmente esa secuencia por teclado
cierto? Es decir uno a uno con los scanf vas recogiendo los datos no? 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