Помощь - Поиск - Пользователи - Календарь
Полная версия: 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:
, тогда ошибки не будет...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.