IPB

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  1 2 >  
Ответить в эту темуОткрыть новую тему
> Программирование в Турбо Паскале, Проверьте, пожалуйста задачу.
Марина Игоревна
сообщение 18.7.2010, 6:05
Сообщение #1


Студент
**

Группа: Продвинутые
Сообщений: 177
Регистрация: 19.2.2009
Город: Славгород
Учебное заведение: НГАСУ
Вы: студент



Добрый день. Необходимо составить программу для вычисления и вывода вычисленного значения на принтер и экран дисплея в виде: Функция равна <числовое значение>.

z=x^2+(|1+y|)^{1/2},

где у= a^2+b^2, если a^2<b^2,
-12.8, если a^2=b^2,
a, если a^2>b^2.

Программа:

Program kz1;
Uses Printer;
Var
a,b,x,y,z: real;
begin
writeln ('введите число а,b');
read(y);
if sqr(a)<sqr(b) then y:=sqr(a)+sqr(b);
if sqr(a)=sqr(b) then y:=-12.8;
if sqr(a)>sqr(b) then y:=a;
write('y=',y);
writeln (введите число х);
read(z);
if y=sqr(a)+sqr(b) then z:=sqr(x)+sqrt(abs(1+sqr(a)+sqr(b)));
if y=12.8 then z:=sqr(x)+sqrt(abs(1-12.8));
if y=a then z:=sqr(x)+sqrt(abs(1+a));
write('z=',z);
end.

Проверьте, пожалуйста, верно ли я составила программу, точнее алгоритм?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
граф Монте-Кристо
сообщение 18.7.2010, 8:02
Сообщение #2


Доцент
******

Группа: Преподаватели
Сообщений: 3 840
Регистрация: 27.9.2007
Из: Старый Оскол
Город: Москва
Учебное заведение: МФТИ/МАИ
Вы: другое



По алгоритму - последние три иф'а немного не понятны. Зачем они вообще? Не проще просто подставить у и х в заданную функцию?
По реализации - много ошибок. printer - для вывода на принтер? Если так, то Вы это нигде не используете. Потом, вводите а и b, а считываете зачем-то в одну переменную, да ещё и в у. В общем, ещё разбираться и разбираться.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Марина Игоревна
сообщение 11.9.2010, 13:56
Сообщение #3


Студент
**

Группа: Продвинутые
Сообщений: 177
Регистрация: 19.2.2009
Город: Славгород
Учебное заведение: НГАСУ
Вы: студент



Добрый вечер. Разбиралась с паскалем. Вот что получилось:
(IMG:http://s43.radikal.ru/i100/1009/47/ebd9deb63cce.jpg)
(IMG:http://i057.radikal.ru/1009/7f/d46444a8d6e4.jpg)
Еще необходимо по усмотрению выбрать числовые значения , ввести их с клавиатуры и определить какая ветвь вычислений "проработает" при введенных значениях. Это просто можно будет записать числа и указать какая ветвь сработает?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Vahappaday
сообщение 11.9.2010, 16:21
Сообщение #4


Аспирант
***

Группа: Продвинутые
Сообщений: 334
Регистрация: 26.4.2009
Город: Липецк
Учебное заведение: ЛГТУ
Вы: студент



угу)) теперь как-то так)) Хотя и if'ы немного необычно расположены, но всё будет работать))

Как проверять - зависит от преподавателя.... Как на мой вкус, Вашей проверки вполне достаточно...

Программку проверяли сами, работает?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Марина Игоревна
сообщение 12.9.2010, 2:22
Сообщение #5


Студент
**

Группа: Продвинутые
Сообщений: 177
Регистрация: 19.2.2009
Город: Славгород
Учебное заведение: НГАСУ
Вы: студент



Да, проверяла) Работает, просто оценка со стороны знающих людей мне не помешает, тем более что университет за 400 км от меня, к педагогу точно не скоро попаду. Спасибо Вам (IMG:style_emoticons/default/smile.gif)
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Марина Игоревна
сообщение 13.9.2010, 13:20
Сообщение #6


Студент
**

Группа: Продвинутые
Сообщений: 177
Регистрация: 19.2.2009
Город: Славгород
Учебное заведение: НГАСУ
Вы: студент



Добрый вечер. Еще одна задача. Не могли бы Вы ее проверить?
Задача:
Составить две программы вычисления и вывода на принтер значений аргумента и функции y=f(x). Первая программа вычисляет у для х, изменяющегосяв заданном интервале с указанным шагом х. Во второй программе значения аргумента задаются массивом. В первой программе цикл организовать с помощью условного оператора FOR, во второй - с использованием оператора цикла DO.
x^3+2sin^2*(x+3)^2
а)0(<=)x(<=)5, dx=0.5
б)х=|1,2;2,2;3,0;8,0;3,4|

Решение:
(IMG:http://s59.radikal.ru/i165/1009/26/e7f8aa69f53f.jpg)
(IMG:http://s001.radikal.ru/i194/1009/53/ffb0e78eac2b.jpg)
(IMG:http://i072.radikal.ru/1009/35/b114528e9692.jpg)
(IMG:http://i072.radikal.ru/1009/54/2008e48e8c74.jpg)

Верно ли я решила задачу?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Vahappaday
сообщение 13.9.2010, 15:58
Сообщение #7


Аспирант
***

Группа: Продвинутые
Сообщений: 334
Регистрация: 26.4.2009
Город: Липецк
Учебное заведение: ЛГТУ
Вы: студент



Перепутали местами FOR и DO))
Всё наоборот, в первом случае решено через DO, во втором через FOR)
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Марина Игоревна
сообщение 14.9.2010, 11:35
Сообщение #8


Студент
**

Группа: Продвинутые
Сообщений: 177
Регистрация: 19.2.2009
Город: Славгород
Учебное заведение: НГАСУ
Вы: студент



Ну, получается мне просто программки местами надо поменять?))
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
julia_lisha
сообщение 14.9.2010, 12:18
Сообщение #9


Студент
**

Группа: Продвинутые
Сообщений: 147
Регистрация: 19.12.2009
Из: Omsk
Город: omsk
Учебное заведение: ОмГУ



FOR и DO это циклы)
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Марина Игоревна
сообщение 14.9.2010, 12:34
Сообщение #10


Студент
**

Группа: Продвинутые
Сообщений: 177
Регистрация: 19.2.2009
Город: Славгород
Учебное заведение: НГАСУ
Вы: студент



Значит просто поменять местами строки в программе, я тут запуталась, хотя действительно по невнимательности ошибку сделала
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Марина Игоревна
сообщение 14.9.2010, 12:56
Сообщение #11


Студент
**

Группа: Продвинутые
Сообщений: 177
Регистрация: 19.2.2009
Город: Славгород
Учебное заведение: НГАСУ
Вы: студент



Или я опять не права??
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Vahappaday
сообщение 14.9.2010, 12:59
Сообщение #12


Аспирант
***

Группа: Продвинутые
Сообщений: 334
Регистрация: 26.4.2009
Город: Липецк
Учебное заведение: ЛГТУ
Вы: студент



А можно текстом программку?)) Блок-схемы ладно, а вот программки разглядывать не очень удобно)) Да и копировать вставить иногда хочется)
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Марина Игоревна
сообщение 14.9.2010, 13:52
Сообщение #13


Студент
**

Группа: Продвинутые
Сообщений: 177
Регистрация: 19.2.2009
Город: Славгород
Учебное заведение: НГАСУ
Вы: студент



Program zad_2_1;
USES PRINTER;
Var x, y: real;
Begin
x:=0;
for x<=5 do
begin
y:=x*x*x + 2sqr(sin(sqr(x+3)));
writeln ('x=', x:6:2, 'y=', y:6:2);
writeln (LST, 'x=', x:6:2, 'y=',y:6:2);
x:=x+0,5:
end;
End.




Program zad_2_2;
USES PRINTER;
Var x,y: real;
i: integer;
a: array [1..5] of real;
Begin
a[1]:=1.2;
a[2]:=2.2;
a[3]:=3.0;
a[4]:=8.0;
a[5]:=3.4;
while i:=1 to 5 do
begin
y:=a[i]*a[i]*a[i]+2*sqr(sin(sqr(a[i]+3)));
writeln ('a[',i,']=', a[i]:6:2, 'y=',y:6:2);
writeln (LST, 'y=', y:6:2);
end;
End.

Вот, попыталась исправить.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Vahappaday
сообщение 14.9.2010, 15:44
Сообщение #14


Аспирант
***

Группа: Продвинутые
Сообщений: 334
Регистрация: 26.4.2009
Город: Липецк
Учебное заведение: ЛГТУ
Вы: студент



Во-первых,
Код
x:=x+0,5:
- точку поправьте на запятую, двоеточие - на точку с запятой.
Во-вторых, конструкции вида
Код
for x<=5 do
и
Код
while i:=1 to 5 do
в Паскале недопустимы.

Код
while условие do

или
Код
for счётчик = ... to ... do

Кстати, сразу подумайте, как сделать в FOR нецелое увеличение счётчика. Готовых средств в паскале не нашёл, а раз вам обязательно нужно именно через FOR, то придётся увеличивать максимальное значение в 2 раза, а в итерации делить значение счётчика на два))
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Julia
сообщение 15.9.2010, 2:34
Сообщение #15


Ассистент
****

Группа: Julia
Сообщений: 593
Регистрация: 23.2.2007
Город: Улан-Удэ
Учебное заведение: БГУ
Вы: преподаватель



Цитата(Марина Игоревна @ 13.9.2010, 22:20) *

Добрый вечер. Еще одна задача. Не могли бы Вы ее проверить?
Задача:
Составить две программы вычисления и вывода на принтер значений аргумента и функции y=f(x). Первая программа вычисляет у для х, изменяющегосяв заданном интервале с указанным шагом х. Во второй программе значения аргумента задаются массивом. В первой программе цикл организовать с помощью условного оператора FOR, во второй - с использованием оператора цикла DO.
x^3+2sin^2*(x+3)^2
а)0(<=)x(<=)5, dx=0.5
б)х=|1,2;2,2;3,0;8,0;3,4|



Вы уверены, что задание записано правильно? Цикл с параметром FOR - это БЕЗусловный оператор. Логичней в этой задаче использовать условный оператор WHILE. Во второй задаче логичней воспользоваться циклом с параметром.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Марина Игоревна
сообщение 15.9.2010, 10:18
Сообщение #16


Студент
**

Группа: Продвинутые
Сообщений: 177
Регистрация: 19.2.2009
Город: Славгород
Учебное заведение: НГАСУ
Вы: студент



Задание списано с методички, а верно ли его составили я уж не знаю( Хорошо, буду думать как правильно исправить
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Марина Игоревна
сообщение 29.9.2010, 14:59
Сообщение #17


Студент
**

Группа: Продвинутые
Сообщений: 177
Регистрация: 19.2.2009
Город: Славгород
Учебное заведение: НГАСУ
Вы: студент



Program zad_2_2;
USES PRINTER;
Var x,y: real;
i: integer;
a: array [1..5] of real;
Begin
a[1]:=1.2;
a[2]:=2.2;
a[3]:=3.0;
a[4]:=8.0;
a[5]:=3.4;
while i>=1 and <= 5 do
begin
y:=a[i]*a[i]*a[i]+2*sqr(sin(sqr(a[i]+3)));
writeln ('a[',i,']=', a[i]:6:2, 'y=',y:6:2);
writeln (LST, 'y=', y:6:2);
end;
End.

Program zad_2_1;
USES PRINTER;
Var x, y: real;
Begin
x:=0;
for x:=5 to 1 do
begin
y:=x*x*x + 2sqr(sin(sqr(x+3)));
writeln ('x=', x:6:2, 'y=', y:6:2);
writeln (LST, 'x=', x:6:2, 'y=',y:6:2);
x:=x+0,5:
end;
End.
А теперь правильно?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Julia
сообщение 30.9.2010, 12:15
Сообщение #18


Ассистент
****

Группа: Julia
Сообщений: 593
Регистрация: 23.2.2007
Город: Улан-Удэ
Учебное заведение: БГУ
Вы: преподаватель



Program zad_2_2;
USES PRINTER;
Var x,y: real;
i: integer;
a: array [1..5] of real;
Begin
a[1]:=1.2;
a[2]:=2.2;
a[3]:=3.0;
a[4]:=8.0;
a[5]:=3.4;
while (i>=1) and (i<= 5) do
begin
y:=a[i]*a[i]*a[i]+2*sqr(sin(sqr(a[i]+3)));
writeln ('a[',i,']=', a[i]:6:2, 'y=',y:6:2);
writeln (LST, 'y=', y:6:2);
end;
End.

Вторая задача неверна, поскольку x - параметр цикл, он не может быть вещественным числом.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Марина Игоревна
сообщение 30.9.2010, 13:38
Сообщение #19


Студент
**

Группа: Продвинутые
Сообщений: 177
Регистрация: 19.2.2009
Город: Славгород
Учебное заведение: НГАСУ
Вы: студент



Program zad_2_1;
USES PRINTER;
Var y: real;
x: integer;
Begin
x:=0;
for x:=5 to 0 do
begin
y:=x*x*x + 2sqr(sin(sqr(x+3)));
writeln ('x=', x:6:2, 'y=', y:6:2);
writeln (LST, 'x=', x:6:2, 'y=',y:6:2);
x:=x+0,5:
end;
End.

А если так исправить? посмотрела подобные примеры вроде бы так должно быть.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Julia
сообщение 30.9.2010, 14:07
Сообщение #20


Ассистент
****

Группа: Julia
Сообщений: 593
Регистрация: 23.2.2007
Город: Улан-Удэ
Учебное заведение: БГУ
Вы: преподаватель



В 2_2 еще ошибка: i не меняется.
В 2_1 при первом же проходе цикла x станет 5,5 - не integer. Отделите параметр цикла от аргумента функции, используйте разные переменные.

Если в цикле с параметром первое значение больше второго, то вместо to используется downto.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 



- Текстовая версия Сейчас: 29.3.2024, 13:14

Книжки в помощь: "Сборник заданий по высшей математике" Кузнецов Л.А., "Сборник заданий по высшей математике" Чудесенко В.Ф., "Индивидуальные задания по высшей математике" Рябушко А.П., и другие.




Зеркало сайта Решебник.Ру - reshebnik.org.ru