Помогите пожалуйста..Паскаль, мне нужно, чтобы вышла одна оценка в выводе, а выходят...

0 голосов
24 просмотров

Помогите пожалуйста..Паскаль, мне нужно, чтобы вышла одна оценка в выводе, а выходят сразу 3 при этом одна какая то из 4 не выходит к этим 3 ...как это исправить, что бы вообще одна оценка выходила? k-кол-во баллов если, что и критерии такие 18-20 баллов-оценка 5; 14-17 баллов 4; 10-14баллов- оценка 3 и меньше 10 баллов 2.Вообщем выглядит все так:
If k>17 then
Begin
Writeln('ваша оценка 5. Молодец!');
End;
If (k>13) or (k<18) then<br> Begin
Writeln('ваша оценка 4.');
End;
Begin
If(k>9) or (k<14) then<br> Writeln('ваша оценка 3.');
End;
If k<10 then<br> Begin
Writeln('ваша оценка 2.');
End;


Информатика (24 баллов) | 24 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

В паскале есть очень подходящий для данного случая оператор case:

case k of
 18..20: Writeln('ваша оценка 5. Молодец!');
 14..17: Writeln('ваша оценка 4.');
 10..13: Writeln('ваша оценка 3.');
 else Writeln('ваша оценка 2.');
end;

(194k баллов)
0

Мы такого пока, что не проходим

0 голосов

Or - "ИЛИ". Если одно из условий верно, то и все выражение принимает истину [ 0 or 1 = 1 ; 1 or 0 = 1; 1 or 1 = 0, 0 or 0 = 0], где 1 - истина, а 0 - ложь
у тебя условие 
If(k>9) or (k<14) then<br>условие k > 9 выполняется, а значит и все выражение верно
Нужно заменить "OR" на "AND" оператор "И". 
[ 1 and 1 = 1 ] при всех остальных - ложь

Вот код

var
k: integer;
begin
 readln(k);
  if k > 17 then
    Writeln('ваша оценка 5. Молодец!');
  if (k > 13) and (k < 18) then 
    Writeln('ваша оценка 4.'); 
if(k > 9) and (k < 14) then 
    Writeln('ваша оценка 3.'); 
if k < 10 then
    Writeln('ваша оценка 2.');
end.

(8.8k баллов)
0

Спасибо большое)) это я не учла...