RE:ayuda en ejercicio con while
Bueno, este código no tiene mucho sentido ;).
Me parece que lo que debes hacer es esto:
var
nota:real;
numNoPresentados,numSuspensos,numAprobados,numNotables,numsobresalientes,numMatriculasHonor:integer;
begin
clrscr;
write('escribe una nota (-1 para terminar: ');
readln(nota);
while (nota < 11) do
begin
if nota < 0 then
numNoPresentados:=numNoPresentados+1;
if (nota > 0) and (nota <5) then
numSuspensos:=numsuspensos+1;
if (nota >=5) and (nota <7) then
numAprobados:=numAprobados+1;
if (nota >=7) and (nota <9) then
numNotables:=numNotables+1;
if (nota = 9) then
numSobresalientes:=numSobresalientes+1;
if (nota = 10) then
numMatriculasHonor:=numMatriculasHonor+1;
write('escribe una nota (11 para terminar): ');
readln(nota);
end;
WriteLn('Resultados: ');
WriteLn('el numero de no presentados es: ',numNoPresentados);
WriteLn('el numero de suspensos es: ',numSuspensos);
WriteLn('el numero de aprobados es: ',numAprobados);
WriteLn('el numero de notables es: ',numNotables);
WriteLn('el numero de sobresalientes es: ',numSobresalientes);
WriteLn('el numero de matriculas de honor es: ',numMatriculasHonor);
WriteLn('Presione cualquier tecla para salir...');
repeat until keypressed;
end.
Nota que el ciclo while lo uso para pedir la nota continuamente mientras la nota sea menor a 11, si ingresas 11 sale del ciclo, mientras tanto voy comparando el valor para sumar al contador adecuado.
Finalmente muestro los sumadores una sola vez.
Además, los contadores los declaré de tipo integer porque siempre sumas +1. No es necesario que sean de tipo real.