Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 16.12.2016
Сообщений: 2
1

Запись данных в файл и вывод данных

15.05.2017, 00:35. Показов 1489. Ответов 5

Author24 — интернет-сервис помощи студентам
Нужно сделать расписание занятий. Написал программу, но застрял на выводе данных из файла. Заранее спасибо за помощь.
Перепробовал кучу вариантов с выводом, но ошибка bad typed file size.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
 Schedule;
 
type
  
  NameofSubj = record
    Subj: string[30]; // название предмета
    Time: string[13]; // время начала и конца пары   
    Teacher: string[30]; // Фамилия и иницалы преподавателя 
    LectHall: string[20]; // Корпус и аудитория
  end;
  
  ScheduleEvenOdd = record
    DoW: string[11]; // день недели.
    CountCoup: integer; // кол-во пар  
    Subject: array [1..10] of NameofSubj;
  end;
 
label M1;// Объявили метку M
var
  ScheduleDay: array [1..7] of ScheduleEvenOdd; //массив
  N, i, j, vopros, vybor: integer; //кол-во дней и пересчет элементов массива.
  f: file of ScheduleEvenOdd;
 
 
begin
  
  M1: writeln('Выберите действие: ');
  writeln('0 - Выход ');
  writeln('1 - Ввод данных расписания нечетной недели');
  writeln('2 - Ввод данных расписания четной недели ');
  writeln('3 - Вывод расписания нечетной недели ');
  writeln('4 - Вывод расписания четной недели ');
  writeln('5 - Редактирование расписания ');
  Readln(vybor);
  // Проверяем, что введен допустимый вариант выбора
  if (vybor < 0) or (vybor > 5) then begin writeln('Такого действия не существует !'); goto M1; end; 
  case vybor of 
    0:  
      begin// 0 - Выход из программы
        writeln('Выходим из программы .... GoodBye !');
        exit;
      end;
    1:
      begin
        writeln('Введите количество учебных дней в неделю = '); 
        readln(N); // ввели количество дней.
        if (N > 6) then begin writeln('Максимум 6 учебных дней !'); goto M1; end; 
        for i := 1 to N do
          with ScheduleDay[i] do
          
          begin
            writeln('Введите день недели: ');
            readln(DoW); // ввели день недели.
            writeln('Введите количество пар: ');
            readln(CountCoup); // ввели количество пар.
            j := 1;
            repeat
              writeln('Введите время начала и конца пары: (пример: 08:00 - 09:30)'); 
              readln(Subject[j].Time); // ввели время начала и конца пары.
              writeln('Введите название предмета: '); 
              readln(Subject[j].Subj); // ввели название предмета.
              writeln('Введите фамилию и инициалы преподавателя: '); 
              readln(Subject[j].Teacher); // ввели ФИО.
              writeln('Введите корпус и аудиторию пары: '); 
              readln(Subject[j].LectHall); // ввели корпус и аудиторию. 
              inc(j);
            until j - 1 = ScheduleDay[i].CountCoup;
          end;
        writeln('Хотите сохранить эти данные в файле: 0-Нет,1-Да ?');
        readln(vopros);
          //  Проверка результатов вопроса
        if vopros <> 1
          then goto M1
        else 
        //  Запишем введённые данные в файл
          assign(f, 'Odd.Schedule');
        rewrite(f);
        for i := 1 to N do
          for j := 1 to ScheduleDay[i].CountCoup do
            write(f, ScheduleDay[j]);
        
        close(f);
        writeln('В файл Odd.Schedule записано расписание нечетной недели.');
        goto M1;
      end;
    3: 
      begin// 2 - Вывод данных в виде таблицы
        assign(f, 'Odd.Schedule');
        reset(f); // Шаг 3.
        
        // Шаг 4. Обработка файла
        writeln('В файле хранится информация о ', N, ' концертах');
        for i := 1 to N do
          read(f, ScheduleDay[i]);
        N := filesize(f);
        // Вывод в виде таблицы
        writeln('====================================================================');
        writeln('=                          Нечетная неделя                         =');
        writeln('====================================================================');
        for i := 1 to N do
          with ScheduleDay[i] do
            writeln(i:4, ScheduleDay[i].DoW:21, ScheduleDay[i].CountCoup:21);
        writeln('====================================================================');
        close(f); // Шаг 5.
      end;
  
  
  
  
  
  
  
  
  
  end;
  
  
  
  
end.
Добавлено через 8 часов 8 минут
/del
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2017, 00:35
Ответы с готовыми решениями:

Запись данных в файл и вывод из файла
Извиняюсь за очередной глупый вопрос. Как реализовать запись данных в файл и вывод после ввода...

Ввод структурированных данных в файл и вывод данных из этого файла на экран (сделать хранилище данных в файле)
Здравствуйте) помогите написать программу, осуществляющую ввод структурированных данных в файл и...

Считывание из текстового файла выборочных данных, сортировка данных по возрастанию и последующая запись в другой файл
Дан файл: 0.3000000E+01 0.1000000E+03 501 1 1 ...

Запись данных в файл, и чтения этих данных
Есть 3 текстовые поля и один RadioButton. Надо записать их значения в текстовый файл(притом каждое...

5
5079 / 2651 / 2349
Регистрация: 10.12.2014
Сообщений: 10,028
15.05.2017, 05:48 2
Запись записей — это недопустимый тип для записи в файл!
Либо придумайте другой способ сохранения информации,
либо измените структуру.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
15.05.2017, 10:11 3
Цитата Сообщение от JuriiMW Посмотреть сообщение
Запись записей — это недопустимый тип для записи в файл!
Это еще почему? Не было никогда в Паскале такого ограничения. Все, что есть - это
В качества типа элементов в типизированном файле не могут фигурировать указатели, ссылочные типы, а также тип записи, содержащий ссылочные поля или указатели.
Запись ScheduleEvenOdd не содержит ни ссылочных полей, ни указателей. Так что все совершенно легально.

Просто нужно
Pascal
1
2
3
        for i := 1 to N do
          read(f, ScheduleDay[i]);
        N := filesize(f); // Перенести эту строку выше, перед использованием переменной N
UPD: проблема гораздо глубже: эти недоумки (я про разработчиков, если что, по-другому их назвать не получается) угробили всю совместимость с любыми другими версиями Паскаля, и убили в своей поделке Паскаль совсем. У них теперь любой тип - это указатель. Скажем, даже
Pascal
1
2
3
type T = array[1 .. 100] of integer;
// ...
writeln(sizeof(T)); // Как думаете, что выведет? 100*sizeof(integer)?
Щазззз! Размечтались о кренделях небесных. T - это тоже указатель, и на моей 64-битной Windows печатается не 400, а 8 (размер любого указателя). То есть, типизированные файлы теперь вообще лучше не использовать. Если даже статический массив - уже не массив, а указатель.

Кстати, и тот самый ShortString, который в FPC/Delphi представляет не класс "Строка", а обычную Турбо-Паскалевскую строку размером в 256 байт (255 символов + байт длины) здесь - это тоже класс (несмотря на заверения разработчиков об обратном), и добавление его в структуру ведет к увеличению ее размера не на 256 байт, а на 8 (опять этот же размер указателя).

Итого: PABC.NET полностью перепилен под C#, и называться Паскалем не имеет права. Добавляю этот раздел в игнор-лист, мне до этого кастрированного паскале-шарпа нет никакого дела, и интереса тоже нет, тем более, что на шарпе многое делается гораздо эффективнее, чем на PABC.NET, и если уж писать с использованием фишек .NET-а - то именно на C#...
0
5079 / 2651 / 2349
Регистрация: 10.12.2014
Сообщений: 10,028
16.05.2017, 06:38 4
Цитата Сообщение от volvo Посмотреть сообщение
Это еще почему? Не было никогда в Паскале такого ограничения.
В Паскале не было… А я говорил применительно к PABC.NЭT
0
0 / 0 / 0
Регистрация: 16.12.2016
Сообщений: 2
16.05.2017, 15:43  [ТС] 5
Закройте тему
0
volvo
17.05.2017, 23:35     Запись данных в файл и вывод данных
  #6
 Комментарий модератора 
Правила Форума:
2.3 Сообщения и темы, а также другой контент, размещаемый на форуме, по просьбам пользователей не удаляется и не закрывается.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.05.2017, 23:35

Чтение текстового файла. Парсинг его данных. Создание исключений для данных. Запись свойств объектов в файл
Проблема такая. Есть файл data.txt. В нем например какие-то данные. Landon Donovan, 150, A...

Создать файл, обеспечить ввод данных, вывод данных, поиск по любому критерию
Составить программу, которая создаёт файл,обеспечивает ввод данных,вывод данных,поиск по любому...

Вывод исходных данных из файла, добавление данных в файл
Помогите связать следующую запись с файлами. Следующая задача:Разработать программу записи...

Составьте программу, которая создает файл, обеспечивает ввод данных, вывод данных, поиск по ФИО
Помогите исправить в тексте программы ошибки. Задача: Составьте программу, которая создает файл, ...

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

Вывод данных + запись в таблицу
Не могу понять как сделать следующее: есть база namebest в ней таблица iga и в таблице строка id 1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru