Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2009, 21:28   #1
Студент заочник
 
Регистрация: 25.12.2008
Сообщений: 8
По умолчанию Две задачи (Pascal). Возникли вопросы, помогите разобраться.

Две задачи на Pascal.

Проверьте всё ли верно, если что подскажите.

Задачи из книги И.Г. Семакин, А.П. Шестаков "Основы программирования".

Первая задача. (Задача №11 стр. 311 из раздела "Задачи по теме "Развилка" под раздел "Текстовые задачи").

Задача:
Услуги телефонной сети оплачиваются по следующему правилу: за разговоры до А минут в месяц - В руб., а разговоры сверх установленной нормы оплачиваются из расчета С руб. за минуту. Написать программу, вычисляющую плату за пользование телефоном для введенного времени разговоров за месяц.

Моё решение задачи:
Код:
Program Telefon;
Var A,B,C,M,Rez:Longint;
Y:Char;
Begin
While Y<>'Y' Do
Begin
WriteLn ('Vvedite A:');
ReadLn (A);
WriteLn ('Vvedite B:');
ReadLn (B);
WriteLn ('Vvedite C:');
ReadLn (C);
WriteLn ('Vvedite M:');
ReadLn (M);
Rez:=(M-A)*C+B;
WriteLn ('Itogo v etom mesyace za ' ,M, ' minut razgovorov vi dolgni: ' ,Rez, ' rub.');
WriteLn ('Vihod? (Y/N)');
ReadLn (Y);
End;
End.
Набирал код в турбо паскаль, компилировал, запускал, вроде считает. Пробовал разные версии турбо паскалей, но к сожалению в них нельзя написать по-русски например,
Код:
WriteLn ('Введите количество минут тарифа:');
Посоветуйте какую-нибудь версию, где это возможно сделать или если есть у вас такой турбо паскаль дайте пожалуйста ссылки на скачивание.

Конечно, хотелось чтобы решение имело такой вид:
Код:
Program Telefon;
Var A,B,C,M,Rez:Longint;
Y:Char;
Begin
While Y<>'Y' Do
Begin
WriteLn ('Введите количество минут тарифа:');
ReadLn (A);
WriteLn ('Введите стоимость тарифа:');
ReadLn (B);
WriteLn ('Введите стоимость за разговоры сверх установленной нормы за минуту:');
ReadLn (C);
WriteLn ('Введите количество минут разговоров за месяц:');
ReadLn (M);
Rez:=(M-A)*C+B;
WriteLn ('Итого в этом месяце за ' ,M, ' минут разговоров по телефону вы должны заплатить: ' ,Rez, ' руб.');
WriteLn ('Выход? (Y/N)');
ReadLn (Y);
End;
End.
Кстати, что скажите? всё ли грамотно? Я пока лишь изучаю паскаль самостоятельно, поэтому если можно улучшить решение задачи, или есть ошибки (недочёты) пожалуйста, ткните носом, буду рад.

Вторая задача. (Задача №6 стр.321 из раздела "Задачи по теме "Циклы" под раздел "Цикл с параметром").

Задача:
Составить алгоритм решения задачи: сколько можно купить быков, коров и телят, платя за быка 10 руб., за корову - 5 руб., а за теленка - 0,5 руб., если на 100 руб. надо купить 100 голов скота?

Вот к этому даже не знаю как подступиться, думал два дня ничего не получилось, прошу помощи.

Хочу ещё спросить:
1. На Висте турбо паскаль не раскрывается на весь экран, такое маленькое окошечко, так и набираю в нём код. Есть ли для Висты турбо паскаль?

2. Существует ли русский турбо паскаль (т.е. русифицированный)?

3. Как правильно сохранять программы на трубо паскале? Вот, я открываю турбо паскаль, набираю код, откомпилировав, делаю Run, вбиваю значения, всё работает, вычисления правильные. Я сохраняю как обычно, пишу имя, сохранить, сохраняется файл .PAS , его можно открыть в турбо паскале и запустить. Ещё пытаюсь сохранить в формате .ехе, пишу имя файла добавляю .EXE, жму ОК, сохраняется файл ехе, (приложение), запускаю его как обычную программу, открывается окошко и сразу закрывается почему так происходит? Ведь на Паскале пишут программы, и их вроде можно запускать в виндовсе. Объясните новичку в чём подвох, сохранял так решение первой задачи

Код:
Program Telefon;
Var A,B,C,M,Rez:Longint;
Y:Char;
Begin
While Y<>'Y' Do
Begin
WriteLn ('Vvedite A:');
ReadLn (A);
WriteLn ('Vvedite B:');
ReadLn (B);
WriteLn ('Vvedite C:');
ReadLn (C);
WriteLn ('Vvedite M:');
ReadLn (M);
Rez:=(M-A)*C+B;
WriteLn ('Itogo v etom mesyace za ' ,M, ' minut razgovorov vi dolgni: ' ,Rez, ' rub.');
WriteLn ('Vihod? (Y/N)');
ReadLn (Y);
End;
End.
называл файл TELEFON.EXE, он открывается и закрывается. Я так понимаю такая программа, должна запускаться без турбо паскаля в виндовсе и делать вычисления? Но эта моя программа открывается, и сразу самопроизвольно закрывается. Что я делаю не так?

Последний раз редактировалось Студент заочник; 02.04.2009 в 21:37.
Студент заочник вне форума Ответить с цитированием
Старый 02.04.2009, 21:53   #2
VadEr
Форумчанин
 
Аватар для VadEr
 
Регистрация: 24.03.2009
Сообщений: 375
По умолчанию

Эта функция преобразует ANSI в ASCII, её задают перед VAR

Function Rusleng(st: string):string;
var
i: integer;
begin
for i:=1 to length(st) do
case st[i] of
'А'..'п' :st[i] := Chr(Ord(st[i]) - 64);
'р'..'я' :st[i] := Chr(Ord(st[i]) - 16);
end;
Rusleng := st;
end;

после, в коде (например) пишут WriteLn(Rusleng('Введите количество минут тарифа:'));
VadEr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Две похожие задачи помогите решить Rusl92 Общие вопросы Delphi 1 25.11.2008 13:25
Помогите решить две задачи на С++! Stager Общие вопросы C/C++ 8 23.11.2008 21:40
Помогите решить две задачи polukrovka Паскаль, Turbo Pascal, PascalABC.NET 6 22.10.2008 11:36
Помогите решить две задачи на С/С++ Сема Помощь студентам 3 24.12.2007 07:31