IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Error: duplicate case label, не пойму эту ошибку
Faab
сообщение 5.04.2013 15:05
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Мужской

Репутация: -  0  +


В нижеприведённом примере, выдаёться ошибка 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.                



Спасибо

Сообщение отредактировано: Faab - 5.04.2013 15:07
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 1)
IUnknown
сообщение 7.04.2013 22:09
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


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

Правильно задавать интервал вот так:
case (PERCENTAGE) of
90 .. 100:
begin
//
writeln('отличный результат');
end;
80 .. 89:
, тогда ошибки не будет...

Сообщение отредактировано: IUnknown - 7.04.2013 22:10
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 1.08.2025 18:56
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"