UTNianos

Versión completa: [Consulta][Algoritmos] Módulo 1 - Ejercicio 29
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola, tengo un problemita con un ejercicio y supuse que me podrían ayudar =P

El enunciado dice:
Dado un conjunto de valores enteros, calcular e informar
a) Cuántos valores cero hubo
b) Promedio de valores positivos
c) Sumatoria de valores negativos

Por otro lado, una de las subconsignas es:
Se dan N valores, pero el proceso deberá finalizar si se procesan todos los valores o si la cantidad de ceros supera a cuatro.

Ahora, mi problema es que no sé cómo lograr que el programa pare cuando haya más de 4 ceros y me tire los resultados de los números hasta ese momento =/ Probé cosas pero no solo no se detiene el programa sino que cuando sale del for se cierra JAJAJA Les dejo abajo lo que hice de código para el problema de base...

Gracias por su tiempo! =)


Program M29;
var
cantceros,n,prom,sumpos,cantpos,k:word;
sumneg,valor:integer;
begin
cantceros:=0;
sumpos:=0;
sumneg:=0;
cantpos:=0;
writeln('Ingrese cantidad de valores');
readln(n);
for k:=1 to n do
begin
writeln('Ingrese valor');
readln(valor);
if valor = 0
then cantceros := cantceros + 1
else
begin
if valor > 0
then
begin
sumpos:= sumpos + valor;
cantpos := cantpos + 1
end
else sumneg:= sumneg + valor
end;
end;
writeln('Cantidad de ceros: ',cantceros);
prom:= sumpos div cantpos;
writeln('Promedio de números positivos: ',prom);
writeln('Suma de números negativos: ',sumneg);
end.

Una cosa:
- Pensá que capaz el for no es la manera más feliz de analizar eso. Vos no sabés exactamente en qué momento de tu ciclo for, vas a encontrar 4 ceros. El ciclo for es de repitición EXACTA, pero en realidad quizás eso no sea lo más correcto para plantear la solución

Qué otras estructuras podrías utilizar que no sean exactas para evaluar esa condición entonces?

Si no te sale te ayudo un poco más =)
Uh tenés razón!! Pasa que como era un ejercicio que después sufría muchas modificaciones como que me quedé enfrascada en cómo lo hice para la primera vez y no pensé en otras cosas xD Metí que k fuera sumando 1 en cada vuelta y en vez del for usé un repeat until hasta que k fuese igual a N o que la cantidad de ceros fuera mayor a 4 y anduvo bárbaro.
Muchas gracias! =D
URLs de referencia