Ошибка undefined filename не найден, undefined filename не найден |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Ошибка undefined filename не найден, undefined filename не найден |
bel100 |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Юрий Репутация: 0 |
var //блок объявления переменных
f1:text; s,s1:string; str_array:array of string; names,subjects:array[1..4] of string; aa:array[1..4,1..4] of integer; i,j,n,sum:integer; begin //начало программы assign(f1, 'CSV.csv'); //связывание переменной f1 с файлом CSV.csv reset(f1); // открытие файла для чтения i:=1; while not(eof(f1)) do begin readln(f1,s); //чтение строк str_array:=s.Split(';'); {разделение строки на массив строк через разделитель} j:=0; {счётчик столбцов устанавливаем на 0} foreach f1 in str_array do {просматриваем все элементы массива, на каждом шаге подставляем элемент массива в контейнер s1} begin write(s1,' '); {вывод на экран всех значений} if (i=1)and(j>=1) then subjects[j]:=s1; {сохраняем названия предметов} if (i>1)and(j=0) then names[i-1]:=s1; {сохраняем фамилии} if (i>1)and(j>=1) then aa[i,j]:=StrSoInt(s1); {сохраняем оценки} j:=j+1; {увеличиваем счётчик столбцов} end; writeln(); {делаем новую строку} i:=i+1; {увеличиваем счётчик строк} end; close(f1); {закрытие файла} assign(f1, 'CSV_OUT.csv'); //{связывание переменной f1 с файлом CSV_OUT.csv} rewrite(f1); //открытие файла для записи for i:=1 to 4 do write(f1, subjects[i]); {выводим названия предметов} write(f1,';','Очки'); {добавляем название} writeln(f1,''); {отступаем строку} for i:=1 to 3 do begin sum:=0; {обнуляем переменнуя для накопления суммы} n:=0; {обнуляем переменнуя для накопления количества} for j:=0 to 4 do begin if j=0 then write(f1,names[i],';') {выводим в файл команды(нулевой столбец)} else begin sum:=sum+aa[i+1,j]; {добавляем к сумме значение элемента} n:=n+1; {увеличиваем количество на 1} end; end; write(f1,sum,';'); {выводим среднее арифметическое в последнем столбце} writeln(f1,''); {создаём новую строку} end; close(f1); end. В конце выдаёт undefined filename не найден хотя: в папке Pascal ABC и в документах есть?! Беларусь;0;;; Россия;;0;; Украина;;;0; Польша;;;;0 |
bel100 |
Сообщение
#2
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Юрий Репутация: 0 |
Переделал:var f1:text;
s,s1:string; str_array:array of string; names,subjects:array[1..4]of string; aa:array[1..4,1..4] of integer; i,j,n,sum:integer; begin assign(f1, 'CSV.csv'); reset(f1); i:=1; while not(eof(f1)) do begin readln(f1,s); str_array:=s.Split(';'); j:=0; foreach s1 in str_array do begin write(s1,' '); if (i=1)and(j>=0) then subjects[j]:=s1; if (i>1)and(j=0) then names[i-1]:=s1; if (i>1)and(j>0) then aa[i,j]:=StrToInt(s1); j:=j+1; end; writeln(); i:=i+1; end; close(f1); assign(f1,'CSV_OUT.csv'); rewrite(f1); for i:=1 to 4 do write(f1,';',subjects[i]); write(f1,';','Очки'); writeln(f1,''); for i:=1 to 3 do begin if j=0 then write (f1,names[i],';') else begin sum:=sum+aa[i+1,j]; n:=n+1; write(f1,aa[i+1,j],';'); end; write(f1,sum,';'); writeln(f1,''); end; close(f1); end. Всё равно: КомандаОшибка времени выполнения: System.IndexOutOfRangeException: Индекс находился вне границ массива. Стек: в У12ДЗ№6.Program.$Main() в C:\PABCWork.NET\У12ДЗ№6.pas:строка 19 в У12ДЗ№6.Program.Main() |
Федосеев Павел |
Сообщение
#3
|
Знаток Группа: Пользователи Сообщений: 481 Пол: Мужской Реальное имя: Федосеев Павел Репутация: 9 |
Значит в файле больше 4 строк.
names,subjects:array[1..4]of string; Измените программу так, чтобы чтение исходного файла, обработка и запись результата в файл выполнялись в потоке построчно и находились в одном цикле. Это и будет нормальным решением. Сообщение отредактировано: Федосеев Павел - |
Текстовая версия | 20.04.2024 16:36 |