Чтение списка из строки - PascalABC.NET
Формулировка задачи:
Нужно в переменные типа списка добавить данные из строки(string) помогите реализовать пожалуйста
Пример файла:
fam nam 2014 36 4 5 3
fam2 nam2 2014 36 4 5 3
fam3 nam3 2014 36 4 5 3
Листинг программы
- program file9v;
- type
- anketa = record
- fam: string;
- name: string;
- year_end: integer;
- numb: integer;
- math: integer;
- fiz: integer;
- rus: integer;
- end;
- var
- i, j, code: integer;
- student: array [1..100] of anketa;
- file1: text;
- put, allfile, help: string;
- begin
- //Write('Путь к файлу(имя файла, если он находится в папке с программой) - ');
- //Readln(put);
- //Write('Количество студентов - ');
- //Readln(n);
- put := 'Vedom.txt';
- assign(file1, put);//связываем переменную с файлом
- reset(file1);//открываем файл для чтения
- while not EOF(file1) do
- begin
- readln(file1, allfile);
- //with student[i] do//
- //readln(file1,fam,name,year_end,numb,math,fiz,rus);
- Writeln(allfile);
- //readln(file1,student[i].fam,student[i].name,student[i].year_end,student[i].numb,student[i].math,student[i].fiz,student[i].rus);
- //inc(i);
- end;
- j := 1;
- for i := 1 to length(allfile) do
- begin
- ///////фамилия
- with student[j] do
- begin
- if pos(' ', allfile[i]) = 0 then // i-й символ не пробел - продолжаем слово
- begin
- fam := fam + allfile[i];
- end;
- end;
- end;
- end.
Решение задачи: «Чтение списка из строки»
textual
Листинг программы
- reset(file1);//открываем файл для чтения
- i := 1;
- while not EOF(file1) do
- begin
- readln(file1, allfile); // читаем всю строку
- var arr := allfile.Split(' '.ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries); // разбиваем ее по пробелам
- with student[i] do
- begin
- fam := arr[0]; // и заполняем структуру
- name := arr[1];
- year_end := StrToInt(arr[2]);
- numb := StrToInt(arr[3]);
- math := StrToInt(arr[4]);
- fiz := StrToInt(arr[5]);
- rus := StrToInt(arr[6]);
- end;
- inc(i);
- end;
Объяснение кода листинга программы
- Открытие файла для чтения
reset(file1);
- Инициализация счётчика
i := 1;
- Чтение списка из файла до конца файла в цикле while
while not EOF(file1) do
- Разбиваем каждую строку на массив строк
arr := allfile.Split(' '.ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);
- Заполняем структуру
student[i]
значениями из массиваarr
- Сохраняем фамилию в поле
fam
- Сохраняем имя в поле
name
- Сохраняем год окончания в поле
year_end
- Сохраняем номер в поле
numb
- Сохраняем оценку по математике в поле
math
- Сохраняем оценку по физике в поле
fiz
- Сохраняем оценку по русскому языку в поле
rus
- Увеличиваем счётчик
i
inc(i);
- Повторяем шаги с 4 по 13 для каждой строки в файле
- Закрытие файла
close(file1);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д