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

Ответы на вопрос

Отвечает Вишня Алина.
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
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



Отвечает Ярый Денис.
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
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



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Для того чтобы избавиться от указания количества значений Х в файле isdan.txt и упростить программу, можно воспользоваться следующим подходом:
- Удалите первую строку с числом n из файла isdan.txt.
- В программе, замените часть, где происходит чтение числа n из файла, инициализацией массива X на основе данных файла isdan.txt.
Переписанный текст программы с объяснениями:
pascalprogram 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); // Открытие файла для записи // Удаление чтения значения n из файла, так как оно больше не нужно readln(fl1, a, b); n := 0; // Инициализация переменной n // Чтение значений Х из файла isdan.txt while not eof(fl1) do begin n := n + 1; read(fl1, x[n]); end; 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.
Теперь программа автоматически определит количество значений Х в файле isdan.txt, прочитав его до конца. Это упрощает использование программы и избавляет от необходимости указывать количество значений вручную.


Похожие вопросы
Топ вопросов за вчера в категории Информатика

Информатика 566

Информатика 25

Информатика 22

Информатика 27

Информатика 34

Информатика 58

Информатика 63

Информатика 23
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili