
Найти ошибку в коде, не записывает данные в файл. УСЛОВИЕ: Создайте два файла, содержащих сведения
о десяти нападающих хоккейных команд: «Динамо» и «Спартак» соответственно: имена нападающих, число заброшенных ими шайб, сделанных голевых передач, заработанное штрафное время. program hockey; uses crt; type hk = record name : string[20]; shyiba: record gol_per : integer; gol : integer; straf_time : integer; end; end; var hokiyArray : array[1..100] of hk; hokiyArray01 : array[1..100] of hk; i,n : integer; f,f1: text; s : string; begin Assign(f,'D:/test.txt'); rewrite(f); write('ДИНАМО '); write('Введите количество нападающих : '); readln(n); for i:=1 to n do begin writeln('--------------------------'); writeln(' Введите данные ',i, 'нападающего'); write(' Введите имя : '); readln( hokiyArray[i].name); writeln('--------------------------'); writeln; write(' Количество заброшеніх шайб : '); readln( hokiyArray[i].shyiba.gol_per); write('Количество голевіх передач '); readln( hokiyArray[i].shyiba.gol); write(' Количество штрафного времени '); readln(hokiyArray[i].shyiba.straf_time); writeln; end; writeln; with hokiyArray[i] do for i:=1 to n do begin writeln('ДИНАМО',f,name,' ',shyiba.gol_per,' ',shyiba.gol,' ',shyiba.straf_time); close(f); end; begin Assign(f1,'D:/test01.txt'); rewrite(f1); write('СПАРТАК '); write('Введите количество нападающих : '); readln(n); for i:=1 to n do begin writeln('--------------------------'); writeln(' Введите данные ',i, 'нападающего'); write(' Введите имя : '); readln( hokiyArray01[i].name); writeln('--------------------------'); writeln; write(' Количество заброшеніх шайб : '); readln( hokiyArray01[i].shyiba.gol_per); write('Количество голевіх передач '); readln( hokiyArray01[i].shyiba.gol); write(' Количество штрафного времени '); readln(hokiyArray01[i].shyiba.straf_time); writeln; end; writeln; with hokiyArray01[i] do for i:=1 to n do begin writeln('СПАРТАК',f1,name,' ',shyiba.gol_per,' ',shyiba.gol,' ',shyiba.straf_time); close(f1); end; end; end.

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

uses
crt;
type
hk = record
name: string[20];
shyiba: record
gol_per: integer;
gol: integer;
straf_time: integer
end
end;
var
hokiyArray, hokiyArray01: array[1..100] of hk;
i, n: integer;
f: text;
begin
Assign(f, 'test.txt');
Rewrite(f);
Writeln('ДИНАМО ');
Write('Введите количество нападающих : '); Readln(n);
for i := 1 to n do
begin
Writeln('--------------------------');
Writeln(' Введите данные ', i, 'нападающего');
Write(' Введите имя : '); Readln(hokiyArray[i].name);
Writeln('--------------------------');
Writeln;
Write(' Количество заброшеніх шайб : ');
Readln(hokiyArray[i].shyiba.gol_per);
Write('Количество голевіх передач ');
Readln(hokiyArray[i].shyiba.gol);
Write(' Количество штрафного времени ');
Readln(hokiyArray[i].shyiba.straf_time);
Writeln
end;
Writeln;
for i := 1 to n do
begin
with hokiyArray[i] do
Writeln(f, 'ДИНАМО', name, ' ', shyiba.gol_per, ' ', shyiba.gol,
' ', shyiba.straf_time);
end;
Close(f);
Assign(f, 'test01.txt');
Rewrite(f);
Writeln('СПАРТАК ');
Write('Введите количество нападающих : '); Readln(n);
for i := 1 to n do
begin
Writeln('--------------------------');
Writeln(' Введите данные ', i, 'нападающего');
Write(' Введите имя : '); Readln(hokiyArray01[i].name);
Writeln('--------------------------');
Writeln;
Write(' Количество заброшеніх шайб : ');
Readln(hokiyArray01[i].shyiba.gol_per);
Write('Количество голевіх передач ');
Readln(hokiyArray01[i].shyiba.gol);
Write(' Количество штрафного времени ');
Readln(hokiyArray01[i].shyiba.straf_time);
Writeln
end;
Writeln;
for i := 1 to n do
begin
with hokiyArray01[i] do
Writeln(f, 'СПАРТАК', name, ' ', shyiba.gol_per, ' ', shyiba.gol,
' ', shyiba.straf_time);
end;
Close(f)
end.



В коде, который вы предоставили, есть несколько ошибок, из-за которых данные не записываются в файлы. Вот некоторые из них:
1. Отсутствие объявления переменных `f` и `f1` в разделе переменных. Эти переменные должны быть объявлены как тип `text`, чтобы использоваться для записи в файлы.
2. Неправильное использование оператора `writeln` вместо `write` при записи данных в файлы. Оператор `writeln` добавляет символ новой строки после каждой записи, что может привести к неправильному форматированию данных в файле. Вместо этого, используйте оператор `write`, чтобы записать данные без символа новой строки.
3. Неправильное использование оператора `close` внутри цикла `for`. Оператор `close` должен быть вызван после окончания записи данных в файлы, а не внутри цикла. Переместите оператор `close` за пределы цикла `for`, чтобы закрыть файлы после записи всех данных.
4. Отсутствие проверки на успешное открытие файлов перед записью данных. Проверьте, что файлы успешно открыты с помощью оператора `Assign` и `rewrite` перед записью данных в них.
Вот исправленный код с учетом указанных ошибок:
```pascal program hockey; uses crt;
type hk = record name: string[20]; shyiba: record gol_per: integer; gol: integer; straf_time: integer; end; end;
var hokiyArray: array[1..100] of hk; hokiyArray01: array[1..100] of hk; i, n: integer; f, f1: text; s: string;
begin Assign(f, 'D:/test.txt'); rewrite(f); write('ДИНАМО '); write('Введите количество нападающих: '); readln(n); for i := 1 to n do begin writeln('--------------------------'); writeln('+Введите данные ', i, ' нападающего'); write('+Введите имя: '); readln(hokiyArray[i].name); writeln('--------------------------'); writeln; write('+Количество заброшенных шайб: '); readln(hokiyArray[i].shyiba.gol_per); write('Количество голевых передач: '); readln(hokiyArray[i].shyiba.gol); write('+Количество штрафного времени: '); readln(hokiyArray[i].shyiba.straf_time); writeln; end; writeln; for i := 1 to n do begin with hokiyArray[i] do writeln('ДИНАМО', name, '+', shyiba.gol_per, '+', shyiba.gol, '+', shyiba.straf_time); end; close(f);
Assign(f1, 'D:/test01.txt'); rewrite(f1); write('СПАРТАК '); write('Введите количество нападающих: '); readln(n); for i := 1 to n do begin writeln('--------------------------'); writeln('+Введите данные ', i, ' нападающего'); write('+Введите имя: '); readln(hokiyArray01[i].name); writeln('--------------------------'); writeln; write('+Количество заброшенных шайб: '); readln(hokiyArray01[i].shyiba.gol_per); write('Количество голевых передач: '); readln(hokiyArray01[i].shyiba.gol); write('+Количество штрафного времени: '); readln(hokiyArray01[i].shyiba.straf_time); writeln; end; writeln; for i := 1 to n do begin with hokiyArray01[i] do writeln('СПАРТАК', name, '+', shyiba.gol_per, '+', shyiba.gol, '+', shyiba.straf_time); end; close(f1); end. ```
После внесения этих исправлений, данные должны быть записаны в файлы "D:/test.txt" и "D:/test01.txt" соответственно.


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