IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Ошибка undefined filename не найден, undefined filename не найден
сообщение
Сообщение #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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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()
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Знаток
****

Группа: Пользователи
Сообщений: 466
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Значит в файле больше 4 строк.
names,subjects:array[1..4]of string;


Измените программу так, чтобы чтение исходного файла, обработка и запись результата в файл выполнялись в потоке построчно и находились в одном цикле. Это и будет нормальным решением.

Сообщение отредактировано: Федосеев Павел -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 17.01.2018 15:53
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"