помогите с задачей
Модератор: Модераторы
помогите с задачей
то что я пытаюсь сделать,но исправляя одни ошибки получаются другие
var a,x,pi,Q:real
begin
a:=1.65;
pi:=3.14;
readln(x);
if (x < 1.4) then
begin
Q=('pi*sqr(x-7/sqr(x))')
end
else if (x = 1.4) then
begin
Q=('a*(x*x*x)+7*sqrt(x)')
end
else if (x > 1.4) then
begin
Q=('ln(x+7*sqrt(abs(x+a)))')
end;
readln;
end.
вот сам пример
var a,x,pi,Q:real
begin
a:=1.65;
pi:=3.14;
readln(x);
if (x < 1.4) then
begin
Q=('pi*sqr(x-7/sqr(x))')
end
else if (x = 1.4) then
begin
Q=('a*(x*x*x)+7*sqrt(x)')
end
else if (x > 1.4) then
begin
Q=('ln(x+7*sqrt(abs(x+a)))')
end;
readln;
end.
вот сам пример
- Вложения
-
- 1.jpg (5.38 КБ) 27343 просмотра
-
- 2.jpg (2.12 КБ) 27343 просмотра
-
- 3.jpg (1.28 КБ) 27343 просмотра
- Little_Roo
- энтузиаст
- Сообщения: 639
- Зарегистрирован: 27.02.2009 18:56:36
- Откуда: Санкт-Петербург
xoma писал(а):var a,x,pi,Q:real
Точка с запятой в конце строки иде??
pi - это НЕ переменная, а константа. Ее объявлять не надо - зарезервированное слово.
xoma писал(а):Q=('pi*sqr(x-7/sqr(x))')
Это полная бредятина - вместо = используйте оператор присваивания :=
А в кавычках указывается переменная строкового типа
И откуда та-а-а-а-кие познания и заготовки якобы программ???
8-й класс чукотской школы при церковно-приходской яранге? (без обид - давно ТАКОГО не видел, даже у себя в гимназии - ну учитель я, каюсь)
В условии -- lg x -- это десятичный логарифм, по основанию 10.
В программе ln x -- это натуральный логарифм, по основанию e.
Переход от основания e к основанию 10: lg(x) это ln(x)/ln(10).
В программе ln x -- это натуральный логарифм, по основанию e.
Переход от основания e к основанию 10: lg(x) это ln(x)/ln(10).
Little_Roo писал(а):xoma писал(а):var a,x,pi,Q:real
Точка с запятой в конце строки иде??
pi - это НЕ переменная, а константа. Ее объявлять не надо - зарезервированное слово.
xoma писал(а):Q=('pi*sqr(x-7/sqr(x))')
Это полная бредятина - вместо = используйте оператор присваивания :=
А в кавычках указывается переменная строкового типа![]()
И откуда та-а-а-а-кие познания и заготовки якобы программ???![]()
8-й класс чукотской школы при церковно-приходской яранге? (без обид - давно ТАКОГО не видел, даже у себя в гимназии - ну учитель я, каюсь)![]()
![]()
вообще никогда не было информатики,щас поступила на вышку,пока время есть,препод на парах ничего не давал,так что полный ноль..
xoma писал(а):Q=('ln(x+7*sqrt(abs(x+a)))')
xoma писал(а):Q=('a*(x*x*x)+7*sqrt(x)')
xoma писал(а):Q=('pi*sqr(x-7/sqr(x))')
xoma писал(а):pi:=3.14;
Если Вам поставят пару, то это комплимент. Вообще, есть куда расти.
Присваивание := Сравнение = (это Вы правильно пишите)
Pi - не обязательно делать переменной, если не хотите снизить точность вычислений - пи и в африке пи, подключите math - это функция.
Например, вот это
Код: Выделить всё
Q=('pi*sqr(x-7/sqr(x))')Садитесь, два. Оценка будет справедлива и логична - программировать Вы не умеете на паскале.
Как исправить - очень просто - читать доку или/и книги, читать чужие программы, пытаться писать самой, пока не получиться.
Дарю:
Код: Выделить всё
const
eps = 1E-7;
a = 1.65;
b = 1.4;
var
x, q: real;
begin
write('Введите x: '); readln(x);
if abs(x - b) < eps then
q := a * sqr(x) * x + 7 * sqrt(x)
else if x < b then
q := pi * sqr(x) - 7 / sqr(x)
else
q := ln(x + 7 * sqrt(abs(x + a))) / ln(10);
writeln('Q = ', q);
end.
Последний раз редактировалось bormant 21.12.2012 12:30:46, всего редактировалось 3 раза.
Little_Roo писал(а):pi - это НЕ переменная, а константа.
Код: Выделить всё
function pi : ValReal;[internproc:fpc_in_pi_real];Little_Roo писал(а):без обид - давно ТАКОГО не видел, даже у себя в гимназии - ну учитель я
Вот такие вы все учителя периода капитализма - троечники. А ученики - двоечники, что логично. Без обид, но учитель должен хоть посмотреть, что такое пи.
У меня учитель по информатике в школе был гений, а я отличник
- Vapaamies
- постоялец
- Сообщения: 292
- Зарегистрирован: 24.07.2012 22:37:59
- Откуда: Санкт-Петербург
- Контактная информация:
stikriz писал(а):Код: Выделить всё
function pi : ValReal;[internproc:fpc_in_pi_real];
Внезапно. Даже я не знал. В Turbo Pascal вроде была константа. В старых учебниках по Turbo Pascal тоже везде говорится, что константа. Но если бы я был учителем, то посмотрел бы в справке.
Посмотрел заодно, как в моем Delphi 6. Оказалось, что в System ее нет, а в коде развертывается компилятором. Т. е. фактически это константа, но теперь развертываемая компилятором в зависимости от заданной точности выражения (как понимаю) -- Single, Double или Extended. Оказалось также, что даже есть команда сопроцессора FLDPI, которую Delphi не использует.
bormant писал(а):Дарю:Код: Выделить всё
const
eps = 1E-7;
a = 1.65;
var
x, q: real;
begin
write('Введите x: '); readln(x);
if (abs(x) > 1.4 - eps) and (abs(x) < 1.4 + eps) then
q := pi * sqr(x) - 7 / sqr(x)
else if x < 1.4 then
q := a * sqr(x) * x + 7 * sqrt(x)
else
q := ln(x + 7 * sqrt(abs(x + a))) / ln(10);
writeln('Q = ', q);
end.
благодарю))
- Little_Roo
- энтузиаст
- Сообщения: 639
- Зарегистрирован: 27.02.2009 18:56:36
- Откуда: Санкт-Петербург
stikriz писал(а):У меня учитель по информатике в школе был гений, а я отличник
Да я физик вообще-то
Так что обид нет, сам потихоньку учусь... когда я учился, на матфаке были только Минск-32, Наири и ... у-у-у-у-у... ЕС-1020 (но это для гуру). А расчеты наши МНСы аж в Алма-Ату летали считать (там БЭСМ-6 стояла - и за ленинградские шоколадки можно было у ...по-нынешнему - админа... выпросить 72 часа машинного времени в сутки
Little_Roo писал(а):ЕС-1020 (но это для гуру).
На этом нас и учили - 15 терминалов и машинный зал с самим компом, АЦПУ, жестким диском и кондиционером
- Хочешь научить человека плохому и уничтожить в нем программиста - научи его Бейсику. Итак, первое занятие мы познакомимся с языком программирования Бейсик...
И еще так, интересно длинючим пальцем показывал, как число заходит в стек, из чего было ясно, что Форт ему родной - число в стек заходило снизу вверх
эту я написала,ток у меня вот как получилось:
Добавлено спустя 22 минуты 35 секунд:
2 задача
подскажите как сделать что бы начиналось не с x = 0,000 y = 0,000, а с x = 0,5
Код: Выделить всё
program zad1_var4;
user crt;
const
a=1.65;
var
x, q: real;
begin
clrscr;
writeln (' a= ',a:4:2);
write ('Vvedite x = ');readln(x);
if x < 1.4 then q:=pi*sqr(x)-7/sqr(x) else
if (x = 1.4) and (x > 1.4) then q:=a*(exp(3*ln(a)))+7sqrt(x)
else q:=ln(x+7*sqrt(abs(x+a)))/ln(10);
writeln ('Q= ',q:7:3);
writeln ('-----------');
readln;
end.Добавлено спустя 22 минуты 35 секунд:
2 задача
Код: Выделить всё
program zad2_var3;
uses crt;
const
a=1.1;
var
i: integer;
b, x, y: real;
begin
clrscr;
writeln(' a=',a:3:1);
for i:= 1 to 11 do
begin
b:= 1+a*x;
y:= (sqr(ln(b)))/b;
write('pri x = ',x:7:3,' y = ',y:7:3);
x:= x+0.5;
readln;
end;
end.подскажите как сделать что бы начиналось не с x = 0,000 y = 0,000, а с x = 0,5
- Вложения
-
- условие
- задача 2.jpg (8.25 КБ) 27237 просмотров
Получилось ли? Ведь оно 1) не скомпилируется, 2) если исправить ошибки синтаксиса, будет считать несколько иную функцию, проверьте калькулятором, 3) условие (x = 1.4) and (x > 1.4) ложно при любых значениях x, 4) возведение в целую степень n при помощи x^n = e^(n ln x) -- не ошибка, но из пушки по воробьям, кроме того, попробуйте ввести отрицательное значение xxoma писал(а):эту я написала,ток у меня вот как получилось:
По поводу сравнения действительных чисел на равенство, вот вам нехитрый тест для размышления (single, double, extended -- действительные типы одинарной, двойной и расширенной точности, real может быть одним из них или между single и double (в Borland/Turbo Pascal)):
Код: Выделить всё
var
xr: real;
xs: single;
xd: double;
xe: extended;
begin
xr := 1.4; xs := 1.4; xd := 1.4; xe := 1.4;
if 1.4 = 1.4 then writeln('1.4 = 1.4') else writeln('1.4 <> 1.4');
if xr = 1.4 then writeln('r1.4 = 1.4') else writeln('r1.4 <> 1.4');
if xs = 1.4 then writeln('s1.4 = 1.4') else writeln('s1.4 <> 1.4');
if xd = 1.4 then writeln('d1.4 = 1.4') else writeln('d1.4 <> 1.4');
if xe = 1.4 then writeln('e1.4 = 1.4') else writeln('e1.4 <> 1.4');
end.
Код: Выделить всё
1.4 = 1.4
r1.4 <> 1.4
s1.4 <> 1.4
d1.4 <> 1.4
e1.4 = 1.4
Пойду вверху тоже поправлю на короткий вариант... И да, в первоначальном варианте была ошибка, имелось в виду, как вы уже конечно догадались, if (x > 1.4 - eps) and (x < 1.4 + eps) then, или, как пишут математики, 1.4 - eps < x < 1.4 + eps.
Добавлено спустя 5 минут 40 секунд:
До цикла задайте желаемое начальное значение для x.xoma писал(а):чтобы начиналось ... с x = 0,5
bormant писал(а):Получилось ли? Ведь оно 1) не скомпилируется, 2) если исправить ошибки синтаксиса, будет считать несколько иную функцию, проверьте калькулятором, 3) условие (x = 1.4) and (x > 1.4) ложно при любых значениях x, 4) возведение в целую степень n при помощи x^n = e^(n ln x) -- не ошибка, но из пушки по воробьям, кроме того, попробуйте ввести отрицательное значение xxoma писал(а):эту я написала,ток у меня вот как получилось:.
По поводу сравнения действительных чисел на равенство, вот вам нехитрый тест для размышления (single, double, extended -- действительные типы одинарной, двойной и расширенной точности, real может быть одним из них или между single и double (в Borland/Turbo Pascal)):и тестовый прогон:Код: Выделить всё
var
xr: real;
xs: single;
xd: double;
xe: extended;
begin
xr := 1.4; xs := 1.4; xd := 1.4; xe := 1.4;
if 1.4 = 1.4 then writeln('1.4 = 1.4') else writeln('1.4 <> 1.4');
if xr = 1.4 then writeln('r1.4 = 1.4') else writeln('r1.4 <> 1.4');
if xs = 1.4 then writeln('s1.4 = 1.4') else writeln('s1.4 <> 1.4');
if xd = 1.4 then writeln('d1.4 = 1.4') else writeln('d1.4 <> 1.4');
if xe = 1.4 then writeln('e1.4 = 1.4') else writeln('e1.4 <> 1.4');
end.Как видите, 1.4 очень часто не равно 1.4Код: Выделить всё
1.4 = 1.4
r1.4 <> 1.4
s1.4 <> 1.4
d1.4 <> 1.4
e1.4 = 1.4Поэтому проверка на равенство превращается в if abs(x - 1.4) < eps then.
Пойду вверху тоже поправлю на короткий вариант... И да, в первоначальном варианте была ошибка, имелось в виду, как вы уже конечно догадались, if (x > 1.4 - eps) and (x < 1.4 + eps) then, или, как пишут математики, 1.4 - eps < x < 1.4 + eps.
Добавлено спустя 5 минут 40 секунд:До цикла задайте желаемое начальное значение для x.xoma писал(а):чтобы начиналось ... с x = 0,5
вот обе они у меня идут без ошибок
1- сделала по примеру препода(по циклу if которая),наконец то отрыла в методичках, а ваш "eps",простите, не понимаю(( ну нет у меня знаний по информатике((
2 - если с 0,5 начинать, i - в нецелочисленные записывать, ошибку выдает 97 на записи for i:= 0.5 to 11 do
Добавлено спустя 8 минут:
ой))со второй разобралась))
с просони сначала не дошло
xoma писал(а):обе они у меня идут без ошибок
Верю, возможно просто на форум скопировали неправильно, ибо если скопировать ваш вариант и попробовать скомпилировать, получим:
Код: Выделить всё
Compiling task.pas
task.pas(2,5) Fatal: Syntax error, "BEGIN" expected but "identifier USER" found
Fatal: Compilation aborted
Ваши результаты: Q(1.4) = 2.586, Q(-2) = 10.816, Q(2) = 1.187
Берём куркулятор, считаем Q(1.4) = 1.65 * 1.4^3 + 7 * √1.4 = 4.5276 + 8.2825 = 12.810.
Не сходится, однако. Согласны?
