Помощь - Поиск - Пользователи - Календарь
Полная версия: Error: duplicate case label
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Faab
В нижеприведённом примере, выдаёться ошибка Error: duplicate case label
на строке:


70-79:


Сначало приведу пример CASE, а потом ниже всю программу, что бы удобнее было читать.

        case (PERCENTAGE) of
90-100:
begin
//
writeln('отличный результат');
end;
80-89:
begin
//
writeln('очень хорошо');
end;
70-79:
begin
//
writeln('хорошо');
end;
else
//
writeln('удовлетворительно');
end;



И вот вся программа.


program GRAAD;

// declare your variables here
VAR GESLAAGD: Boolean;
VAR I, AANTALVAKKEN, PERCENTAGE: Integer;
VAR TOTAALPUNTEN, PUNTEN: Real;
VAR NAAM: String;

begin
//
I := 0;
//
GESLAAGD := TRUE;
//
TOTAALPUNTEN := 0;
//
writeln('Добро пожаловать в программу по вычислению оценок у учеников!');
//
writeln();
//
writeln('Введите число учебных предметов:');
//
readln(AANTALVAKKEN);
//
repeat
//
writeln('Введите имя ученика:');
//
readln(NAAM);
//
if (NAAM = 'stop') then
begin
end
else
begin
//
while (AANTALVAKKEN > I) do
begin
//
writeln('Введите результат экзамена ', I, ' in (/20):');
readln(PUNTEN);
//
if (PUNTEN < 10) then
begin
//
GESLAAGD := FALSE;
end
else
begin
//
;
end;
//
TOTAALPUNTEN := TOTAALPUNTEN + PUNTEN;
//
I := I + 1;
end;
//
PERCENTAGE := Round((TOTAALPUNTEN * 5) / AANTALVAKKEN);
writeln('----------------------------------------');
//
writeln('Результат ученика ', NAAM,':');
//
if (PERCENTAGE < 60) OR (GESLAAGD = FALSE) then
begin
//
writeln('незачёт');
end
else
begin
//
case (PERCENTAGE) of
90-100:
begin
//
writeln('отличный результат');
end;
80-89:
begin
//
writeln('очень хорошо');
end;
70-79:
begin
//
writeln('хорошо');
end;
else
//
writeln('удовлетворительно');
end;
end;
//
writeln('Общий процент:', PERCENTAGE, '%.');
//
writeln('----------------------------------------');
end;
until (NAAM = 'stop');
writeln();
writeln('Нажми на <ENTER> что бы покинуть программу.');
readln();
end.



Спасибо
IUnknown
Всё правильно компилятор говорит:
90-100 = -10
80-89 = -9
70-79 = -9 // <--- Вот и вторая (-9), дубликат

Правильно задавать интервал вот так:
case (PERCENTAGE) of
90 .. 100:
begin
//
writeln('отличный результат');
end;
80 .. 89:
, тогда ошибки не будет...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.