0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 14
1

Создать файл,содержащий сведения о том,какие из пяти предлагаемых дисциплин по выбору желает слушать студент

26.01.2013, 20:46. Показов 2781. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создать файл,содержащий сведения о том,какие из пяти предлагаемых дисциплин по выбору желает слушать студент.Каждая запись содержит поля :фамилия,номер группы,названия пяти дисциплин,средний бал успеваемости.Выбираемая дисциплина отмечается символом 1,иначе пробелом.Написать программу которая выводит на экран список студентов желающих прослушать дисциплину Х. Если число больше 8,то отобрать студентов,имеющих более высокий средний бал успеваемости.Значение Х вводится с клавиатуры.
Указания:В качестве типа компонента файла выбрать комбинированный.В программе предусмотреть меню из следующих пунктов:создание файла,добавление записей в файл,обработка файла,выход из программы.

на подобии вот этой программы
Delphi
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
program Project1;
 
 
uses
  SysUtils;
 
{$APPTYPE CONSOLE}
type
  Worker = record
  fam   : string[20];
  zekh  : string[10];
  salary: integer;
  end;
var
  Workers         : array of Worker;
  factfile        : file of Worker;
  workers_number  : integer;
  filename        : string = 'workers.db';
  answer          : integer;
 
procedure MakeFile;
var
  i,t     : integer;
  new_one : Worker;
begin
 
  Writeln('Sozdaju file');
  Write('Kolichestvo rabochih : '); Readln(workers_number);
  SetLength(Workers, workers_number);
   // + создавать файл, если его нет
  {if Not FileExists('workers_db') then
     factfile := FileCreate(filename);
  //AssignFile(factfile, 'workers_db'); }
  //FileCreate(filename,fmOpenReadWrite);
  AssignFile(factfile, filename);
  Reset(factfile);
  for i := 1 to workers_number do
  begin
     Write('Familija: '); Readln(new_one.fam);
     Write('Zekh [1 - ovoshnoj | 2 - mjasnoj | 3 - molochnij]: ');
     Readln(t);
     case t of
      1 : new_one.zekh := 'ovoshnoj';
      2 : new_one.zekh := 'mjasnoj';
      3 : new_one.zekh := 'molochnij';
      else writeln('takogo zekha NET!')
     end;
     Write('Zarplata za mesijac: '); Readln(new_one.salary);
     Write(factfile, new_one);
  end;
  CloseFile(factfile);
end;
 
procedure AddRecords;
var
  i,t     : integer;
  new_one : Worker;
begin
  Write('Kolichestvo rabochih : '); Readln(workers_number);
  SetLength(Workers, workers_number);
  AssignFile(factfile, filename);
  Reset(factfile);
  Seek(factfile, FileSize(factfile));
  for i := 1 to workers_number do
  begin
     Write('Familija: '); Readln(new_one.fam);
     Write('Zekh [1 - ovoshnoj | 2 - mjasnoj | 3 - molochnij]: ');
     Readln(t);
     case t of
      1 : new_one.zekh := 'ovoshnoj';
      2 : new_one.zekh := 'mjasnoj';
      3 : new_one.zekh := 'molochnij';
      else writeln('takogo zekha NET!')
     end;
     Write('Zarplata za mesijac: '); Readln(new_one.salary);
     Write(factfile, new_one);
  end;
  CloseFile(factfile);
end;
 
{ в виде таблицы сделать }
procedure PrintFile;
var
  next_worker   : Worker;
begin
  Writeln('Pechat'' faila');
  AssignFile(factfile, 'workers.db');
  Reset(factfile);
  Writeln('______________________________________________________');
  Writeln('| Familja rabochego  | Zekh     | Zarplata za mesijac|');
  Writeln('------------------------------------------------------');
  while not EOF(factfile) do
  begin
    Read(factfile, next_worker);
    Write('|', next_worker.fam:20);
    Write('|', next_worker.zekh:10);
    Writeln('|', next_worker.salary:20, '|');
    Writeln('------------------------------------------------------');
  end;
  CloseFile(factfile);
end;
 
{ печатает платежную ведомость,
среднюю з/п и общую сумму выплат по цеху }
procedure PrintMoney;
var
  zekh_num, work_num, sum, i  : integer;
  zekh : string;
  next_worker   : Worker;
begin
  Writeln('Viberite zekh [1 - ovoshnoj | 2 - mjasnoj | 3 - molochnij]: ');
  Readln(zekh_num);
  case zekh_num of
    1 : zekh := 'ovoshnoj';
    2 : zekh := 'mjasnoj';
    3 : zekh := 'molochnij';
  end;
  AssignFile(factfile, filename);
  Reset(factfile);
  sum := 0; work_num := 0;
  Writeln('_____________________________________________');
  Writeln('| Familja rabochego   |  Zarplata za mesijac|');
  Writeln('---------------------------------------------');
  while not EOF(factfile) do
  begin
    Read(factfile, next_worker);
    if next_worker.zekh = zekh then
    begin
       sum := sum + next_worker.salary;
       work_num := work_num + 1;
       Write('| ', next_worker.fam:20);
       Writeln('| ', next_worker.salary:20, '|');
       Writeln('---------------------------------------------');
    end;
  end;
  Writeln('| Summa viplat za mesijac:        ', sum:10 , '|');
  Writeln('---------------------------------------------');
  Writeln('| Srednemes. zarabotok rabochego:   ', (sum/work_num):8:3,  '|');
  Writeln('---------------------------------------------');
end;
 
begin
  repeat
    Writeln(' Menu:');
    Writeln('1) Sozdanije faila');
    Writeln('2) Dobavit'' zapisi');
    Writeln('3) Pechat faila');
    Writeln('4) Pechat'' vedomosti');
    Writeln('5) Vihod');
 
    Writeln;Writeln;Write('Vash vibor: ');
    Readln(answer);
    case answer of
      1 : MakeFile;
      2 : AddRecords;
      3 : PrintFile;
      4 : PrintMoney;
      5 : break;
      else
        Writeln('Takogo punkta net! Poprobujte eshe')
    end;
    Readln;
    Writeln; Writeln
  until false;
  Writeln('vse');
  readln;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.01.2013, 20:46
Ответы с готовыми решениями:

Сведения о том, какие из пяти предлагаемых дисциплин, по выбору, желает слушать студент: -Delphi
Сведения о том, какие из пяти предлагаемых дисциплин, по выбору, желает слушать студент: - фамилия...

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

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

Создать файл, содержащий сведения о том ,какие из пяти предлагаемых дисциплин по выбору желает слушать студент
нужно решить! ВОТ УСЛОВИЕ: Создать файл, содержащий сведения о том ,какие из пяти предлагаемых...

10
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 14
27.01.2013, 16:42  [ТС] 2
Вложения
Тип файла: rar 10.rar (57.9 Кб, 30 просмотров)
0
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 14
27.01.2013, 20:27  [ТС] 3
ну же ребят((На вас последняя надежда...

Добавлено через 2 часа 27 минут
76 просмотров и не одного ответа.......
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
27.01.2013, 20:30 4
А ты думал что все наперегонки ломанутся делать за тебя твою работу ?
0
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 14
27.01.2013, 20:35  [ТС] 5
mss, да нет конечно...Просто этот форум последняя моя надежда....очень уж не охото после 1сессии вылетать
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
27.01.2013, 21:06 6
Цитата Сообщение от c0nfy_ Посмотреть сообщение
очень уж не охото после 1сессии вылетать
Учиться нужно было в течение семестра.
0
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 14
27.01.2013, 22:00  [ТС] 7
mss, не вам мне мораль читать,тем более щас...раз помочь не хотите,то и писать не зачем
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
27.01.2013, 22:20 8
Цитата Сообщение от c0nfy_ Посмотреть сообщение
тем более щас
А когда еще ? Потом тебя отчислят и забреют.
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
28.01.2013, 00:18 9
Жалко мне тебя. Вот программа.
Кликните здесь для просмотра всего текста
Delphi
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
program Project1;
 
 
uses
  SysUtils, Windows, Math;
 
{$APPTYPE CONSOLE}
type
  Discipline = Record
               Name : String[15];
               Vybor : Boolean;
               End;
  Student = record
            fam : string[20];
            Group : integer;
            Sr_Ball : Real;
            Disciplins : Array[1..5] Of Discipline;
            end;
Const
  DiscList : Array[1..5] Of String[15] = ('Алгебра','Биология','Физика','Химия','Информатика');
var
  Students        : array of Student;
  factfile        : file of Student;
  Students_Count  : integer;
  filename        : string = 'Students.db';
  ansver          : Integer;
 
procedure MakeFile;
var
  i,j : integer;
  new_one : Student;
  ch : Char;
  Flag : Boolean;
begin
  Writeln('Создаю файл');
 
  Repeat
    Write('Количество студентов : ');
  Try
    Flag:=True;
    Readln(Students_Count);
  Except
    //Ошибка ввода
    WriteLn;
    WriteLn('Произошла ошибка ввода. Попробуйте ещё.');
    ReadLn;
    Flag:=False;
  End;
  Until Flag;
 
  AssignFile(factfile, filename);
  Rewrite(factfile);
 
  for i := 1 to Students_Count do
  Repeat
    Try
     Flag:=True;
     WriteLn(i:3);
     Write('Фамилия: '); Readln(new_one.fam);
     Write('Группа: '); Readln(new_one.Group);
     Write('Средний балл: ');
     Readln(new_one.Sr_Ball);
     WriteLn('Выбор дисциплин: 1 - выбор, пробел - нет');
     For j:=1 To 5 Do
     Begin
       Write('   '+DiscList[j]+': '); Readln(ch);
       new_one.Disciplins[j].Name:=DiscList[j];
       new_one.Disciplins[j].Vybor:=(ch='1');
     End;
     Write(factfile, new_one);
    Except
      //Ошибка ввода
      WriteLn;
      WriteLn('Произошла ошибка ввода. Попробуйте ещё.');
      ReadLn;
      Flag:=False;
    End;
  Until Flag;
  CloseFile(factfile);
end;
 
procedure AddRecords;
var
  i,j     : integer;
  new_one : Student;
  ch : Char;
  Flag : Boolean;
begin
  Repeat
    Write('Добавить записей : ');
  Try
    Flag:=True;
    Readln(Students_Count);
  Except
    //Ошибка ввода
    WriteLn;
    WriteLn('Произошла ошибка ввода. Попробуйте ещё.');
    ReadLn;
    Flag:=False;
  End;
  Until Flag;
 
  AssignFile(factfile, filename);
  Reset(factfile);
  Seek(factfile, FileSize(factfile));
  for i := 1 to Students_Count do
  Repeat
    Try
     Flag:=True;
     WriteLn(i:3);
     Write('Фамилия: '); Readln(new_one.fam);
     Write('Группа: '); Readln(new_one.Group);
     Write('Средний балл: '); Readln(new_one.Sr_Ball);
     WriteLn('Выбор дисциплин: 1 - выбор, пробел - нет');
     For j:=1 To 5 Do
     Begin
       Write('   '+DiscList[j]+': '); Readln(ch);
       new_one.Disciplins[j].Name:=DiscList[j];
       new_one.Disciplins[j].Vybor:=(ch='1');
     End;
     Write(factfile, new_one);
    Except
      //Ошибка ввода
      WriteLn;
      WriteLn('Произошла ошибка ввода. Попробуйте ещё.');
      ReadLn;
      Flag:=False;
    End;
  Until Flag;
  CloseFile(factfile);
end;
 
procedure FindStudents;
Var
  i,j : Integer;
  next_worker   : Student;
  Discipl : String;
  Flag : Boolean;
Begin
  Repeat
    Write('Задайте дисциплину для поиска: ');
    ReadLn(Discipl);
    Flag:=False;
    For i:=1 to 5 Do
    If DiscList[i]=Discipl Then
    Begin
      Flag:=True;
      Break;
    End;
    If Not Flag Then
    Begin
      Write('Такой дисциплины нет. Попробуйте ещё.');
      ReadLn;
    End;
  Until Flag;
  //Перенос данных файла в массив
  AssignFile(factfile, filename);
  Reset(factfile);
  SetLength(Students, FileSize(factfile));
 
  Students_Count:=0;
  While not EOF(factfile) do
  Begin
    Read(factfile,next_worker);
    //Будем переносить только желающих прослушать дисциплину
    Flag:=False;
    For i:=1 To 5 Do
    With next_worker.Disciplins[i] Do
    If Name=Discipl Then
    Begin
      Flag:=Vybor;
      Break;
    End;
 
    If Flag Then
    Begin
      Students[Students_Count]:=next_worker;
      Inc(Students_Count);
    End;
  End;
  CloseFile(factfile);
  If Students_Count>8 Then
  //Будем отбирать с наибольшим средним баллом
  //Нужно сортировать
  For i:=0 To 7 Do
  For j:=i+1 To Students_Count-1 Do
  If Students[i].Sr_Ball<Students[j].Sr_Ball Then
  Begin
    next_worker:=Students[i];
    Students[i]:=Students[j];
    Students[j]:=next_worker;
  End;
  //Выдадим на экран первых 8 отобранных
  For i:=0 To Min(Students_Count-1,7) Do
  With Students[i] Do
  WriteLn(fam:20,Group:5,Sr_Ball:10:2);
 
  Finalize(Students);
End;
 
//Выдача файла на экран
procedure PrintFile;
var
  j : Integer;
  next_worker   : Student;
  ch : Char;
begin
  Writeln('Выдача файла на экран');
  AssignFile(factfile, filename);
  Reset(factfile);
  while not EOF(factfile) do
  begin
    Read(factfile, next_worker);
    WriteLn('Фамилия: ',next_worker.fam);
    WriteLn('Группа: ',next_worker.Group);
    WriteLn('Средний балл: ',next_worker.Sr_Ball:10:2);
    For j:=1 To 5 Do
    Begin
      Write('   '+next_worker.Disciplins[j].Name:15);
      ch:=' ';
      If next_worker.Disciplins[j].Vybor Then ch:='1';
      WriteLn('   ',ch);
    End;
  end;
  CloseFile(factfile);
end;
 
begin
  //Переключение окна консоли на кодовую страницу CP1251 (Win-1251).
  //Если после переключения русские буквы показываются неверно,
  //следует открыть системное меню консольного окна - щелчком мыши в левом
  //верхнем углу окна консоли и выбрать:
  //Свойства - закладка "Шрифт" - выбрать шрифт: "Lucida Console".
  SetConsoleOutputCp(1251);
  SetConsoleCP(1251);
  repeat
    Writeln(' Меню:');
    Writeln('1) Создание файла');
    Writeln('2) Добавить записи');
    Writeln('3) Выдача файла на экран');
    Writeln('4) Поиск желающих прослушать дисциплину');
    Writeln('5) Выход');
 
    Writeln; Writeln; Write('Ваш выбор: ');
    Readln(ansver);
    case ansver of
      1 : MakeFile;
      2 : AddRecords;
      3 : PrintFile;
      4 : FindStudents;
      5 : Break;
      else
        Writeln('Такого пункта нет! Попробуйте еше')
    end;
    Readln;
    Writeln; Writeln;
  until false;
  Writeln('всё');
  readln;
end.

А прикреплённый файл в архиве (нужно распаковать) - это получившийся типизированный файл с 10-ю записями. Если выберешь пункт "Создать" - эти все записи сотрутся. Лучше добавлять. А по-новой вводить муторное дело. А этот файл, на всякий случай, сохранить как копию.
Вложения
Тип файла: rar Students.rar (373 байт, 61 просмотров)
1
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 14
28.01.2013, 00:26  [ТС] 10
Добавлено через 7 минут
Одиночка, Спасибо огромнейшее!!
0
Одиночка
28.01.2013, 00:39     Создать файл,содержащий сведения о том,какие из пяти предлагаемых дисциплин по выбору желает слушать студент
  #11

Не по теме:

Учись в течение семестра. Другой раз так не повезёт.

Чтобы увидеть ответ - нужно обновлять страницу.

1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.01.2013, 00:39

Создать массив, содержащий сведения о том, какие из пяти предлагаемых дисциплин по выбору желает слушать студент
На PASKAL'е создать массив, содержащий сведения о том, какие из пяти предлагаемых дисциплин по...

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

Создать файл f, содержащий сведения о книгах. Сведения о каждой из книг - это фамилия автора, название книги и год издан
Создать файл f, содержащий сведения о книгах. Сведения о каждой из книг - это фамилия автора,...

Создайте файл Студент. Занесите в отдельный файл записи из файла Студент, добавив сведения о новых студентах
Создайте файл Студент. Занесите в отдельный файл записи из файла Студент, добавив сведения о новых...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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