Помощь - Поиск - Пользователи - Календарь
Полная версия: подскажите решение проблемы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Dorash87
Подскажите как зделать. Вот простая задача:
Program 1
var
x: integer;
a,b,c,d,e,f: real;
begin
write('x=');
read(x);
a:=......
b:=......
c:=......
d:=......
begin
if x<740 then
e:=......
if x>=740 then
e:=.....
end;
f:=....
writeln ('a=',.....)
writeln ('b=',.....)
writeln ('c=',.....)
writeln ('d=',.....)
writeln ('e=',.....)
writeln ('e=',.....)
writeln ('f=',.....)
end.

При вводе значения х надо вывести вычисления a,b,c,d,e,f но не получаеться с значением e подскажите как зделать!
Человек_Без_Имени
если правильно понял, то в зависимости от х е будет вычислятся по разным формулам? тогда лучше используй конструкцию if x<740 then e:=f(x) else e:=g(x);
Sozialist
А чего не получается? Расставь везде ";", внутренние begin end не нужны. Ну и перед завершающим END, как я понимаю, надо readln добавить.
Адель
вместо этого
Цитата
write('x=');
read(x);

попробуй
write('x=');
readдт(x);


а также:
writeln ('a=',.....);
writeln ('b=',.....);
writeln ('c=',.....);
writeln ('d=',.....);
writeln ('e=',.....);
writeln ('f=',.....);


и begin\end при выпоре "е" вродь как не нужен
Dorash87
to человек без имени ты правильно понял только как это в этой програме записать?
Человек_Без_Имени
примерно так

 
Program 1
var
x: integer;
a,b,c,d,e,f: real;
begin
write('x=');
read(x);
a:=......;
b:=......;
c:=......;
d:=......;
if x<740 then e:=......
else e:=.....;
f:=....;
writeln ('a=',.....);
writeln ('b=',.....);
writeln ('c=',.....);
writeln ('d=',.....);
writeln ('e=',.....);
writeln ('e=',.....);
writeln ('f=',.....);
readln;
end.


заметь, что перед else точка с запятой не нужна
Sozialist
To Адель
Посты набиваем? yes2.gif
Dorash87
спасибо но програма все равно считает е по первой формуле даже когда значение х больше 740 в чем ошибка?
Sozialist
Цитата(Dorash87 @ 21.03.2007 22:48) *

спасибо но програма все равно считает е по первой формуле даже когда значение х больше 740 в чем ошибка?

Ошибок нет, давай полное условие, напишем за 5 мин, если есть желание wink.gif
Гость
Sozialist, почувстовоал себя модератором? (я про пост №7)? Напрасно...
Dorash87
там нет условия мне просто надо что бы програма вычисляла все эти значения но почемуто не могу зделать чтобы е вычислялось по второй формуле когда параметр х выше 740 в этом и вся проблема
Sozialist
Т.е. ты пишешь, сама не зная чего, раз нет условия. Все верно.
Dorash87
ну во первых я он а во вторых я знаю что пишу я не могу понять почему е не вычесляеться по другой формуле
Адель
все же попробуй сдлатб, что я тебе написала...у меня все нормально работает.
или же привиди полный код без "......."
Dorash87
Адель ты же вроде написала все как у меня или я чигото не понял
Tan
Дораш, приведи условие задачи, тогда тебя и тебе будет проще понять !
Человек_Без_Имени
Цитата(Dorash87 @ 21.03.2007 22:48) *

спасибо но програма все равно считает е по первой формуле


выложи этот код, в нем возможно есть другие ошибки, или дай условие(если конкретного нет-сочини сам).
Dorash87
 if x<740 then
e:=(d-200)*0.0015
else
e:=d*0.005;

Tan
В этом отрывке всё верно, ты можешь свой код выложить полностью или дать условие ? а то вслепую не очень.
Dorash87
Нашел в чем ошибка в строчке writeln('e=',.......) как правильно записать вывод информации?
Program 1
var
x:integer;
a,b,c,d,e,f:real;
begin
write('x=');
readln (x);
a:=(525*0.005)+(x-525)*0.02;
b:=x*0.005;
c:=x*0.01;
d:=x-a-b-c;
if x<740 then
e:=(d-200)*0.0015
else e:=d*0.005;
f:=d-e;
writeln('a=',(525*0.005)+(x-525)*0.02);
writeln('b=',(x*0.005);
writeln('c=',(x*0.01);
writeln('d=',(d:=x-a-b-c);
writeln('e=',(d-200)*0.0015);
writeln('f=',(d-e);
end.

мисс_граффити
ошибок тут много - и компилятор их радостно подчеркивает.
ну, во-первых, такого имени у программы быть не может - да и точки с запятой в первой строке не хватает.
writeln('b=',(x*0.005);
writeln('c=',(x*0.01);


посчитай скобочки в каждой из строк...
writeln('d=',(d:=x-a-b-c);

что за попытка присваивания? так нельзя.

и вообще, что за извращения с выводом? есть переменные, значения которых интересуют - их и выводи, а не считай заново:
writeln('d=',d);
Sozialist
Кол-во скобок кратно 2. В выводе не присваивают, записывай просто выражение.
мисс_граффити
Цитата
Кол-во скобок кратно 2.

с каких это пор 3 кратно 2?!
в выделенных мной строках именно по 3 скобочки.
Dorash87
мис граффити спасибо большое все работает (единственая ошибка была в выводах в книге какойто"умной" так было написано. а со всем остальным все у меня правильно)
Sozialist
Цитата(мисс_граффити @ 22.03.2007 1:11) *

с каких это пор 3 кратно 2?!
в выделенных мной строках именно по 3 скобочки.

Это что, особенность турбо паскаля?
мисс_граффити
Что именно? 3 не кратно 2 вне зависимости от компилятора, насколько мне известно.
И даже четность количества скобок - не гарантия успешной компиляции.
Dorash87
Теперь раскажите пожалуйста как зделать что бы этот код перенести в обычную програмку? или дайте ссылки на материал где про это можно почитать
мисс_граффити
Что есть "обычная программка"? ехе-шник?
Человек_Без_Имени
скопируй код в блокнот, сохрани, затем смени разрешение: txt на pas, затем открывай паскаль и запускай.
или exe надо?
мисс_граффити
Цитата
затем смени разрешение

blink.gif расширение, может?
Человек_Без_Имени
Цитата(мисс_граффити @ 22.03.2007 16:35) *

blink.gif расширение, может?

wink.gif оговорился
Dorash87
человек без имени да надо обычная ехе програмка
Tan
скомпилируй свой готовый код в паскале, запусти (убедись что работает) и в папке с паскалем появится exe
Человек_Без_Имени
в разделе Compile в Destination должно стоять Disk. далее жми F9 или Run->make. exe-шник появится в папке с паскалем.
P.S. в Options->Directories строке EXE & TPU directory должна быть указана папка в которую помещать экзешник


Sorry, Tan, набирал и не видел твоего ответа...
Dorash87
спасибо всем все работает. Теперь хотелось бы понять и научиться как для этого ехе-шника зделать оболочку (имееться ввиду интерфейс програмы) как такое создаеться и с помощью чиго?
Tan
Ну ничего очень красивого не получится если делаешь на паскале, можно создать простенькое текстовое меню с оператором CASE OF . А если хочешь что - то поинтересней пиши в поиске меню, выриантов достаточно.
Dorash87
я пока хочу попробовать простое что то типа 1.Ввод данных 2.вывод. как это можно зделать?
Алена
Цитата
Ну ничего очень красивого не получится если делаешь на паскале
Ну, это как сказать... Если ты не умеешь складывать числа, то ты ни на счетах, ни на пальцах не посчитаешь... Точно так же и меню - если ТЫ не умеешь делать это красиво - не говори...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.