Pascal/Turbo Pascal - Segundo intento :(

 
Vista:

Segundo intento :(

Publicado por Noe (3 intervenciones) el 27/04/2006 19:58:44
Bueno... les cuento:

Este es el primer ejercicio que hice y como esperaba... ¡no funciona! Le agradezco muchísimo a la persona que me ayudó y me dió un ejemplo y agradeceré muchísimo si alguien puede pegarle una miradita y decirme qué esta mal (o si todo esta mal..) =(

Les dejo el enunciado:

"Dado un conjunto de numeros enteros, calcular:
a) cuántos valores cero hubo,
b) promedio de los valores positivos,
c) sumatoria de los valores negativos"

Millones y millones de gracias!
Noe

-----------------------------

PROGRAM EjercicioUNO;
VAR
n:CHAR;
cero,promposit,negativo,cantposit,sumposit,i,promedio,num:INTEGER;

PROCEDURE Iniciar;
BEGIN
cero:=0; promposit:=0; negativo:=0; cantposit:=0; sumposit:=0; i:=0; promedio:=0
END;

PROCEDURE Promediar;
BEGIN
for i:=1 to cantposit do
BEGIN
READLN(num);
sumposit:=sumposit + num;
END;
promedio:=sumposit div cantposit;
END;

PROCEDURE Sumar;
BEGIN
READLN(num);
negativo:=negativo + num;
END;

PROCEDURE Tratar;
BEGIN
IF (n='0') THEN cero:=cero+1
ELSE IF (n>0) THEN Promediar
ELSE IF (n<0) THEN sumar
END;

PROCEDURE recorrer;
BEGIN
WHILE NOT EOF DO
BEGIN
READ(n)
tratar
END
END;

PROCEDURE finalizar;
BEGIN
WRITELN;
WRITELN ('Cantidad de ceros', cero);
WRITELN ('Promedio de numeros positivos',promedio);
WRITELN ('Suma de numeros negativos',negativos)
END;

BEGIN
Iniciar;
Recorrer;
Finalizar;
END.
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:Segundo intento :(

Publicado por Gastón (3 intervenciones) el 27/04/2006 20:44:02
....primero.... en que momento se define el conjunto de números enteros a tratar???..... te agradecería especificar un poco más el problema??
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

RE:Segundo intento :(

Publicado por Diego Romero (996 intervenciones) el 28/04/2006 07:01:19
PROCEDURE recorrer;
BEGIN
WHILE NOT EOF DO
BEGIN
READ(n)
tratar
END
END;

¿While not eof?, ¿estás seguro que estás haciendo las cosas bien?, eof es una función que devuelve true cuando se alcanza el final de un archivo que se está leyendo, no veo ningún uso de archivo en tu programa :S.

A ver, no suelo hacer esto pero veo que todavía no tomas habilidad para programar.
El ejercicio dice "dado un conjunto de números", pero no dice cuántos números tiene ese conjunto, y además, a juzgar por los tipos de cálculos requeridos parece que es una cantidad arbitraria. Vamos a poner como condición de salida que el usuario ingresa el valor -999.

var
Dato: integer;
Contador: integer;
ContadorCeros: integer;
ContadorPositivos: integer;
SumadorPositivos: integer;
SumadorNegativos: integer;
Promedio: integer;

begin
Contador:=0;
Sumador:=0;
ContadorCeros:=0;
ContadorPositivos:=0;
repeat
write('Ingrese un número entero: ');
ReadLn(Dato)
if Dato <> -999 then
begin
Contador:=Contador+1;
if Dato > 0 then
begin
ContadorPositivos:=ContadorPositivos+1;
SumadorPositivos:=SumadorPositivos+Dato;
end
else
if Dato < 0 then
SumadorNegativos:=SumadorNegativos+Dato
else ContadorCeros:=ContadorCeros+1;
end;
until Dato = -999;
if Contador > 0 then
begin
if SumadorPositivos > 0 then
begin
Promedio:=SumadorPositivos div ContadorPositivos;
WriteLn('El promedio de los positivos es: ', Promedio);
end
else WriteLn('No se ingresaron números positivos.');
if ContadorCeros > 0 then
WriteLn('Se ingresaron ', ContadorCeros, 'ceros.')
else WriteLn('No se ingresaron ceros.');
if SumadorNegativos <> 0 then
WriteLn('La sumatoria de los números negativos es: ', SumadorNegativos)
else WriteLn('No se ingresaron números negativos.');
end
else WriteLn('No se han ingresado datos para calcular.');
end.
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