Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ подскажите решение проблемы

Автор: Dorash87 22.03.2007 1:56

Подскажите как зделать. Вот простая задача:

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 подскажите как зделать!

Автор: Человек_Без_Имени 22.03.2007 2:21

если правильно понял, то в зависимости от х е будет вычислятся по разным формулам? тогда лучше используй конструкцию if x<740 then e:=f(x) else e:=g(x);

Автор: Sozialist 22.03.2007 2:31

А чего не получается? Расставь везде ";", внутренние begin end не нужны. Ну и перед завершающим END, как я понимаю, надо readln добавить.

Автор: Адель 22.03.2007 2:33

вместо этого

Цитата
write('x=');
read(x);

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


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


и begin\end при выпоре "е" вродь как не нужен

Автор: Dorash87 22.03.2007 2:33

to человек без имени ты правильно понял только как это в этой програме записать?

Автор: Человек_Без_Имени 22.03.2007 2:39

примерно так

 
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 22.03.2007 2:46

To Адель
Посты набиваем? yes2.gif

Автор: Dorash87 22.03.2007 2:48

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

Автор: Sozialist 22.03.2007 2:51

Цитата(Dorash87 @ 21.03.2007 22:48) *

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

Ошибок нет, давай полное условие, напишем за 5 мин, если есть желание wink.gif

Автор: Гость 22.03.2007 2:53

Sozialist, почувстовоал себя модератором? (я про пост №7)? Напрасно...

Автор: Dorash87 22.03.2007 2:55

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

Автор: Sozialist 22.03.2007 2:58

Т.е. ты пишешь, сама не зная чего, раз нет условия. Все верно.

Автор: Dorash87 22.03.2007 3:01

ну во первых я он а во вторых я знаю что пишу я не могу понять почему е не вычесляеться по другой формуле

Автор: Адель 22.03.2007 3:04

все же попробуй сдлатб, что я тебе написала...у меня все нормально работает.
или же привиди полный код без "......."

Автор: Dorash87 22.03.2007 3:13

Адель ты же вроде написала все как у меня или я чигото не понял

Автор: Tan 22.03.2007 3:16

Дораш, приведи условие задачи, тогда тебя и тебе будет проще понять !

Автор: Человек_Без_Имени 22.03.2007 3:22

Цитата(Dorash87 @ 21.03.2007 22:48) *

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


выложи этот код, в нем возможно есть другие ошибки, или дай условие(если конкретного нет-сочини сам).

Автор: Dorash87 22.03.2007 3:35

 if x<740 then
e:=(d-200)*0.0015
else
e:=d*0.005;


Автор: Tan 22.03.2007 3:37

В этом отрывке всё верно, ты можешь свой код выложить полностью или дать условие ? а то вслепую не очень.

Автор: Dorash87 22.03.2007 4:47

Нашел в чем ошибка в строчке 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.


Автор: мисс_граффити 22.03.2007 5:07

ошибок тут много - и компилятор их радостно подчеркивает.
ну, во-первых, такого имени у программы быть не может - да и точки с запятой в первой строке не хватает.

writeln('b=',(x*0.005);
writeln('c=',(x*0.01);


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

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

и вообще, что за извращения с выводом? есть переменные, значения которых интересуют - их и выводи, а не считай заново:
writeln('d=',d);

Автор: Sozialist 22.03.2007 5:09

Кол-во скобок кратно 2. В выводе не присваивают, записывай просто выражение.

Автор: мисс_граффити 22.03.2007 5:11

Цитата
Кол-во скобок кратно 2.

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

Автор: Dorash87 22.03.2007 5:21

мис граффити спасибо большое все работает (единственая ошибка была в выводах в книге какойто"умной" так было написано. а со всем остальным все у меня правильно)

Автор: Sozialist 22.03.2007 5:27

Цитата(мисс_граффити @ 22.03.2007 1:11) *

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

Это что, особенность турбо паскаля?

Автор: мисс_граффити 22.03.2007 5:29

Что именно? 3 не кратно 2 вне зависимости от компилятора, насколько мне известно.
И даже четность количества скобок - не гарантия успешной компиляции.

Автор: Dorash87 22.03.2007 5:54

Теперь раскажите пожалуйста как зделать что бы этот код перенести в обычную програмку? или дайте ссылки на материал где про это можно почитать

Автор: мисс_граффити 22.03.2007 11:31

Что есть "обычная программка"? ехе-шник?

Автор: Человек_Без_Имени 22.03.2007 20:08

скопируй код в блокнот, сохрани, затем смени разрешение: txt на pas, затем открывай паскаль и запускай.
или exe надо?

Автор: мисс_граффити 22.03.2007 20:35

Цитата
затем смени разрешение

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

Автор: Человек_Без_Имени 22.03.2007 20:56

Цитата(мисс_граффити @ 22.03.2007 16:35) *

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

wink.gif оговорился

Автор: Dorash87 23.03.2007 1:12

человек без имени да надо обычная ехе програмка

Автор: Tan 23.03.2007 1:25

скомпилируй свой готовый код в паскале, запусти (убедись что работает) и в папке с паскалем появится exe

Автор: Человек_Без_Имени 23.03.2007 1:29

в разделе Compile в Destination должно стоять Disk. далее жми F9 или Run->make. exe-шник появится в папке с паскалем.
P.S. в Options->Directories строке EXE & TPU directory должна быть указана папка в которую помещать экзешник


Sorry, Tan, набирал и не видел твоего ответа...

Автор: Dorash87 23.03.2007 1:45

спасибо всем все работает. Теперь хотелось бы понять и научиться как для этого ехе-шника зделать оболочку (имееться ввиду интерфейс програмы) как такое создаеться и с помощью чиго?

Автор: Tan 23.03.2007 2:12

Ну ничего очень красивого не получится если делаешь на паскале, можно создать простенькое текстовое меню с оператором CASE OF . А если хочешь что - то поинтересней пиши в поиске меню, выриантов достаточно.

Автор: Dorash87 23.03.2007 3:33

я пока хочу попробовать простое что то типа 1.Ввод данных 2.вывод. как это можно зделать?

Автор: Алена 23.03.2007 3:38

Цитата
Ну ничего очень красивого не получится если делаешь на паскале
Ну, это как сказать... Если ты не умеешь складывать числа, то ты ни на счетах, ни на пальцах не посчитаешь... Точно так же и меню - если ТЫ не умеешь делать это красиво - не говори...