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

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

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

> Обьясните в чем ошибка?
сообщение
Сообщение #1





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

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


Помогите разобратся где ошибка и как её решить?

Есть задача: Человек работает на работе в 3 смены, и получает з/п по бонусной системе в зависимости от того какой обьем работы он сделал за данную смену (обьем работы измеряется в метрах), оплата в укр. гривнах.
Тоисть: если он сделал до 649 метров - ему считают по 0,2 грн., если от 650-829, считают по 0,45 грн., свыше 830 по 0,6 грн. (это за смену), при чем только для 1 и 2 смены. Для 3й смены расчет должен быть таким 0-749м по 0,2 грн., 750-949 по 0,45 грн., свыше 950 по 0,6 грн. Программа должна пока что правильно считать з/п за смену путем ввода метража смены и номера смены.
Я начинаю изучать Паскаль и применил: для выбора расчета 'по какой тарифной сетке расчитывать' заработок за данную смену => оператор выбота if...then...else. Зависимость выбора расчета смены реализована оператором варианта case.

 
uses crt;

label m1,m2,m3,m4;
VAR d,a,sm: Integer; {d-день месяца, а-метраж смены,sm-# смены}
b1,b2,b3,c : Real; {Фиксированая константа оплаты,с-результат за смену}

BEGIN
clrscr;
b1:=0.2;
b2:=0.45;
b3:=0.6;
d:=1;
write (d, ' число ’);
m1: if d<=31 then goto m3 {цикл для месяца}
else goto m2;
write (’Введите метраж ’);
m3: Read (a);
m4: write ('# смены (1. .3) ’);
Readln (sm);
case sm of 1,2:
begin
if a>=650 then if a<=831 then c:=a*b2
else c:=a*b3
else c:=a*b1 end;
3:
begin
if a>=750 then if a<=951 then c:=a*b2
else c:=a*b3
else c:=a*b1 end;
else Writeln (’ Ошибка ввода смены !!! (всего 3)’);
goto m4;
end;
writeln ('Заработок за смену ',c :15:2,' грн.');
writeln;

d:=d+1;
write (d,' число');
goto m1;

m2: readln;
END.



Программа неправильно делает расчет для 3й смены 950м считает по 0,45, подозреваю что в работу не включается реализация расчета для 3й смены, непойму только почему, неправильно записал синтаксис оператора? Спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 





- Текстовая версия 15.09.2025 22:49
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name