Форум «Всё о Паскале» _ Задачи _ Задача на тему "Массивы"
Автор: 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
Благодарю, всё отлично работает! тока непонял зачем wincrt я заменил просто на crt