Вопрос задан 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.
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Вишня Алина.
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
0 0
Отвечает Ярый Денис.
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

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для того чтобы избавиться от указания количества значений Х в файле isdan.txt и упростить программу, можно воспользоваться следующим подходом:

  1. Удалите первую строку с числом n из файла isdan.txt.
  2. В программе, замените часть, где происходит чтение числа n из файла, инициализацией массива X на основе данных файла isdan.txt.

Переписанный текст программы с объяснениями:

pascal
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); // Открытие файла для записи // Удаление чтения значения 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, прочитав его до конца. Это упрощает использование программы и избавляет от необходимости указывать количество значений вручную.

0 0

Похожие вопросы

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

Последние заданные вопросы в категории Информатика

Задать вопрос