Предмет: Информатика, автор: VALTIM

ПОМОГИТЕ СРОЧНО!!! МНОГО БАЛЛОВ!!!
Измените программу и текст файла исходных данных 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.


Мудрец7771: .....

Ответы

Автор ответа: petyaGavrikov
26
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

archery: ответ должен быть полный, программа должна работать и как минимум компилироваться
archery: читайте правила
VALTIM: Большое спасибо, особенно за разжеванность
Аноним: а вы не устали так много писать?
Автор ответа: archery
24
var
    f: 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


VALTIM: Большое спасибо
Похожие вопросы
Предмет: Алгебра, автор: anyanajdenova69