ПОМОГИТЕ СРОЧНО!!! МНОГО БАЛЛОВ!!!
Измените программу и текст файла исходных данных isdan.txt таким образом, чтобы исчезла необходимость указывать количество значений Х. Пожалуйста с объяснениями.
МАССИВ isdan.txt:
2.0 4.0 7
3.0
1.5
2.0
1.0
5.0
7.0
10.0
ТЕКСТ ПРОГРАММЫ:
program prog_2_5;
type vx=array[1..10] of real;
var fl1,fl2:text;{описание файловых переменных}
x,y:vx;
a,b:real;
i,n:integer;
begin
assign(fl1,'C:\Users\Valera\Desktop\Занятия\Информатика\Лабараторные\2_см\Лабараторная 6\isdan.txt');
assign(fl2,'C:\Users\Valera\Desktop\Занятия\Информатика\Лабараторные\2_см\Лабараторная 6\rezult.txt');
reset(fl1);{открытие файла для чтения}
rewrite(fl2);{открытие файла для записи}
readln(fl1,a,b,n);
for i:=1 to n do readln(fl1,x[i]);
close(fl1);{закрытие файла isdan.dat}
for i:=1 to n do
begin
y[i]:=a/sqrt(b*b+x[i]*x[i]);
writeln(fl2,x[i]:10:5,y[i]:10:5);
end;
close(fl2);{закрытие файла rezult.txt}
End.
Answers & Comments
Verified answer
Program prog_2_5;var fl1,fl2:text;{описание файловых переменных}
a,b,x,y:real;
begin
assign(fl1,'isdan.txt');
assign(fl2,'rezult.txt');
reset(fl1);{открытие файла для чтения}
rewrite(fl2);{открытие файла для записи}
readln(fl1,a,b);
while not eof(fl1) do // пока не конец файла
begin
readln(fl1,x);
y:=a/sqrt(b*b+x*x);
writeln(fl2,x:10:5,y:10:5);
end;
close(fl1);{закрытие файла isdan.dat}
close(fl2);{закрытие файла rezult.txt}
End.
Пример:
Файл isdan.txt:
2.0 4.0
3.0
1.5
2.0
1.0
5.0
7.0
10.0
Файл rezult.txt:
3.00000 0.40000
1.50000 0.46816
2.00000 0.44721
1.00000 0.48507
5.00000 0.31235
7.00000 0.24807
10.00000 0.18570
Verified answer
Varf: text;{описание файловых переменных}
x: array[1..10] of real; {тут нет никакого смысла в создании нового типа}
a, b, y: real;
i, n: integer;
begin
assign(f, 'isdan.txt'); {если надо прописываем полный путь файла. Если он лежит возле екзешника, то хватит просто имени файла}
reset(f); {открытие файла для чтения}
readln(f, a, b); {считается что в файле обязательно записаны эти данные}
n := 0;
while not Eof(f) do
begin{пока не достигли конца файла}
n := n + 1;
readln(f, x[n]);{считываем следующий элемент}
end;
close(f); {закрываем файл ввода}
assign(f, 'rezult.txt'); {асоциируем файл для вывод а с той же переменной - экономим память}
rewrite(f); {открытие файла для записи}
for i := 1 to n do
begin
y := a / sqrt(b * b + x[i] * x[i]); {нет никакой надобности в массиве}
writeln(f, x[i]:10:5, y:10:5);
end;
close(f);{закрытие файла вывода}
end.
текст файла ввода
2.0 4.0
3.0
1.5
2.0
1.0
5.0
7.0
10.0