problema con programa en Pascal

Iniciado por SXF, 17 Enero 2011, 18:05 PM

0 Miembros y 1 Visitante están viendo este tema.

SXF

Buenas tengo un problemilla con un programa en pascal este es el algoritmo:

Código (pascal) [Seleccionar]
program ejemplo2;

var
 nota:integer;

begin

read(nota);

   case nota of
     '20': writeln('M. honor');
      '19','18': writeln('Sobresaliete');
      '17','16': writeln<'Notable');
      '15','14': writeln('Aprobado');
   else writeln('Suspenso');

   end

  end.


no se por que me tira error , lo que hace es sencillo comparar notas () utilizo el frepascal.

Garfield07

Cita de: SXF en 17 Enero 2011, 18:05 PM
      '17','16': writeln<'Notable');


no se por que me tira error , lo que hace es sencillo comparar notas () utilizo el frepascal.

1) Por que no usas esto:
Código (pascal) [Seleccionar]
        '17','16': writeln('Notable'); como en los demas?
2) Podrias explicar  tu error, al menos..


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

SXF

me tira muchos errores   Nose creo que el analisis de casos esta mal..lo que quiero hacer es compara las notas si es 20 (sobresaliente ) si es 19 o tal ... y asi...

Garfield07

Postea los errores, no una foto. No se ve nada bien...


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Khronos14

Así a simple vista, ya te digo yo que te faltan los "uses". Además, con read() estás leyendo un integer y en el case..of estás haciendo las comparaciones como si fuera una cadena.

Saludos.

SXF

gracias a todos ,el error estaba en que no hay que poner '' con numeros pero si con letras..las librerias no hace falta usarlas aki..

skapunky

Bieeeeen una pregunta de pascal, allá va, prueba lo siguiente:

Código (pascal) [Seleccionar]
program ejemplo2;
uses crt;
var
  nota:integer;

begin

read(nota);

    case nota of
       '20': writeln('M. honor');
       '18'..'19': writeln('Sobresaliete');
       '16'..'17': writeln<'Notable');
       '14'..'15': writeln('Aprobado');
    else
       writeln('Suspenso');
     end
end.


No tengo el compilador en este ordenador, pero el codigo debería funcionar.
Killtrojan Syslog v1.44: ENTRAR

Khronos14

skapunky, SFX ya dijo que lo solucionó. Además tu código está mal.

Código (pascal) [Seleccionar]
program ejemplo2;

uses crt;

var
  nota: integer;
begin

read(nota);

    case nota of
       20: writeln('M. honor');
       18,19: writeln('Sobresaliete');
       16,17: writeln('Notable');
       14,15: writeln('Aprobado');
    else
       writeln('Suspenso');
     end;
end.

skapunky

Cierto, se me colaron las comas al copiar el codigo original, pero en turbo pascal se puede poner un rango de numero de la siguiente manera:

1..n

Lo he probado y funciona en delphi 6 enterprise.
Killtrojan Syslog v1.44: ENTRAR