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

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

Форум «Всё о Паскале» _ Задачи _ Задача на тему "Массивы"

Автор: kvadrat 16.05.2008 2:40

Условие:
Прикрепленное изображение

Моё решение:

program qwsdfew;
var x,y:integer;
begin
for x:=1 to 12 do
begin
y:=(6*ln(arctan(x)+1.5*sqrt(x)));
writeln('x:5:2,' ',y:5:2');
x:=x+0.05;
end;
end.

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

Автор: mind abuse 16.05.2008 3:44

И x и y должны быть вещественными, там же нецелые величины. Так всё в порядке, ошибки лишь на уровне случайных лагов.

Код
program qwsdfew;
var
i:integer;
x,y:real;
begin
x:=1;
for i:=1 to 12 do
begin
y:=(6*ln(arctan(x)+1.5*sqrt(x)));
writeln(x:5:2,'       ',y:5:2);
x:=x+0.05;
end;
readln;
end.



А вот где массивы, хм.... ну может быть так:

Код
program qwsdfew;
uses crt;
var
a, b: array[1..100] of real;
i:integer;
x,y:real;
begin
clrscr;
for i:=2 to 12 do
begin
a[1]:=1;
a[i]:=a[i-1]+0.05;
b[i]:=(6*ln(arctan(a[i])+1.5*sqrt(a[i])));
writeln(a[i],'       ',b[i]);
end;
readln;
end.


Только доделайте так, чтоб оно и x1=1 выводило.

Автор: kvadrat 16.05.2008 18:45

Вот несколько вопросов по решению

program qwsdfew;
uses crt;
var
a, b: array[1..100] of real;
i:integer;
x,y:real; {эти переменные тут ненужны думаю}
begin
clrscr;
for i:=2 to 12 do {почему c 2х а не с 1?}
begin
a[1]:=1; {что значит эта строчка?}
a[i]:=a[i-1]+0.05; {зачем тут минус один?}
b[i]:=(6*ln(arctan(a[i])+1.5*sqrt(a[i])));
writeln(a[i],' ',b[i]);
end;
readln;
end.


Автор: mind abuse 16.05.2008 19:45

Цитата(kvadrat @ 16.05.2008 15:45) *

Вот несколько вопросов по решению
program qwsdfew;
uses crt;
var
a, b: array[1..100] of real;
i:integer;
x,y:real; {эти переменные тут ненужны думаю}
begin
clrscr;
for i:=2 to 12 do {почему c 2х а не с 1?}
begin
a[1]:=1; {что значит эта строчка?}
a[i]:=a[i-1]+0.05; {зачем тут минус один?}
b[i]:=(6*ln(arctan(a[i])+1.5*sqrt(a[i])));
writeln(a[i],' ',b[i]);
end;
readln;
end.



Да, x,y не нужны, раз используем массивы. "a[i]:=a[i-1]+0.05" означает, что на каждой итерации значение нашего икса увеличивается на 0.05 по сравнению с предыдущим: x[2] = x[1] + 0.05 = 1+0.05=1.05; x[3]=x[2]+0.05 = 1.05+0.05=1.10, и т.д. "a[1]:=1;" - ну наш массив должен ведь с чего-то начинаться, первый элемент по условию x1=1. Почему i:=2 - не знаю, мозг не хотел думать, как заставить программу выводить первый элемент. Вот, посмотрите чуть исправленное, на этот раз выводит всё.

Код
program qwsdfew;
uses wincrt;
var
x, y: array[0..100] of real;
i:integer;

begin
clrscr;
for i:=1 to 12 do
begin
x[0]:=0.95;
x[i]:=x[i-1]+0.05;
y[i]:=(6*ln(arctan(x[i])+1.5*sqrt(x[i])));
writeln(x[i],'       ',y[i]);
end;
readln;
end.



Автор: kvadrat 17.05.2008 17:52

good.gif Благодарю, всё отлично работает! тока непонял зачем wincrt я заменил просто на crt