Другие языки программирования и технологии

Помогите исправить код чтобы он считал балы теста Pascal

Помогите плз. Почему этот код не работает? Помогите исправить код чтобы он высчитывал балы. If(s<=5) then begin Writeln('Neudachno'); end; if(s>=5) and (s<=10) then begin Writeln('Udachno'); end; if(s>=10) and (s<=15) then begin Writeln('Super'); end; if(s>=15) and (s<=20) then begin Writeln('Klassno'); end;
сделай через Case
намного будет проще

case s of
1..
2..
3..
и т. д.
end;

case s of
1..5: Writeln('Neudachno');
6..10: Writeln('Udachno');
11..15: Writeln('Super');
16..20: Writeln('Klassno');
end;

вот и всё че тут вы мутите через какие то ифы "if"
Дмитрий Синцов
Дмитрий Синцов
1 525
Лучший ответ
блин даже я незнаю паскаля но блин посмотрите в учебнике как записывать if в паскале
if(s>=10) and (s<=15) then Writeln('Super');
зачем begin и end для одной операции ?(
BK
Bakitjan Kalimbetov
41 003
Потому что в как минимум лажа в твоей логике.
У тебя условие, как переменная S должна быть одновременно и больше и меньше! ? Вместо end поставь оператор or.
Нормально твоя работает если сделать так, кстати согласен с предыдущим постом. для одной операции begin end не нужен
var s:integer;
begin
readln(s);
if(s<=5) then
begin
Writeln('Neudachno');
end else
if(s>5) and (s<=10) then
begin
Writeln('Udachno');
end else
if(s>10) and (s<=15) then
begin
Writeln('Super');
end else
if(s>15) and (s<=20) then
begin
Writeln('Klassno');
end; readln;
end.

А вот так было бы более правильно :)
var s:integer;
begin
readln(s);
if(s<=5) then
Writeln('Neudachno')
else
if(s>5) and (s<=10) then
Writeln('Udachno')
else
if(s>10) and (s<=15) then
Writeln('Super')
else
if(s>15) and (s<=20) then
Writeln('Klassno') else write('ballov blo''she! ');
readln;
end.
Adolf Git
Adolf Git
20 142
У тебя если баллов 5 10 или 15 число попадает в два диапазона. Тоесть если 10 то получается и Удачно и Супер. Определись как тебе лучше и знак равенства лишний убери. И для одной функции Бигин и энд не нужны.

If(s<5) then
Writeln('Neudachno');
if(s>=5) and (s<10) then
Writeln('Udachno');
if(s>=10) and (s<15) then
Writeln('Super');
if(s>=15) and (s<=20) then
Writeln('Klassno');
А зачем проверка идет от 5 до 10 (включая) и от 10 до 15 включительно. Получается что при оценке десять одновременно УДАЧНО и СУПЕР. Кроме того если после ТХЕН одна команда то бегин и енд можно и не писать (на логике это не отразится).