Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 24.07.2012
Сообщений: 27

Составить студенческую ведомость

29.07.2012, 11:54. Показов 2628. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
До 3го пункта вроде нормально, после 3 встал и не могу

Составить программу, используя меню и процедуры;

1.Создать файл "1", который содержит сведения:
fam -Фамилия
imj- Имя
gr- группа
kol- количество баллов за экзамен(целочисленный тип, 2 цифры)
k - балл для начисления стипендии(симв)
значение к вводится с клавиатуры
2. Получить "Ведомость". В ней должна быть "шапка" и в каждой строке: № группы, фамилия, имя, кол-во баллов, есть ли стипендия: "Да" или "Нет"
3. В конце ведомости должна быть строка "Итого" по кол-ву набранных баллов.
4. Ведомость поместить в файл "2"
5. Вывод ведомости на экран осуществить из файла "2"
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.07.2012, 11:54
Ответы с готовыми решениями:

Составить программу, выводящую на экран студенческую ведомость
Составить программу, выводящую на экран студенческую ведомость (Ф. И. О., оценки за три экзамена, средний балл).

Составить ведомость на стипендию
Ввести файл, содержащий поля: №, ФИО, Оценка по 1-му предмету, … , Оценка по 4-му предмету. Составить ведомость на стипендию в виде: №...

Составить ведомость студентов, сдавших экзамены за семестр
Составить ведомость студентов, сдавших экзамены за семестр. Для работы с данными использовать структуру типа ' запись ' . Поля должны...

5
Фрилансер
 Аватар для CodeR
3418 / 2815 / 3000
Регистрация: 08.02.2012
Сообщений: 8,603
Записей в блоге: 1
29.07.2012, 12:07
Выложите хоть код что вы уже сделали...а мы вам поможем
0
0 / 0 / 0
Регистрация: 24.07.2012
Сообщений: 27
29.07.2012, 12:24  [ТС]
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
Program 1;
  type stp=record;
  fam: string[20];
  imj: string[15];
  gr: integer;
  kol: integer;
  k: string;
  end;
var r: stp; f: file of stp; i,n,z: integer;
procedure sozd;
begin
rewrite(f);
writeln('Введите количество студентов');
readln(n);
for i:=1 to n do
begin
writeln('Введите фамилию студента');
readln(r.fam);
writeln('Введите имя студента');
readln(r.imj);
writeln('Введите номер группы');
readln(r.gr);
writeln('Введите количество баллов за сессию');
readln(r.kol);
writeln('Введите балл для начисления стипендии');
readln(r.k);
write(f,r);
end;
close(f);
end;
procedure prosm;
begin
reset(f);
writeln('Фамилия','    ','Имя студента','    ','№ группы',' ','Количество баллов');
while not eof(f) do
begin
read(f,r);
writeln(r.fam,'       ',r.imj,'            ',r.gr,'            ',r.kol);
end;
close(f);
end;
procedure obr;
begin
reset(f);
writeln('Фамилия',' ','Имя студента',' ','№ группы',' ','Количество баллов',' ','Стипендия');
while not eof(f) do
begin
read(f,r);
if r.kol<8 then writeln(r.fam,' ',r.imj,' ',r.gr,' ',r.kol,' ',r.k);
end;
close(f);
end;
begin
assign(f,'1.txt');
z:=0;
while z<>5 do
begin
writeln('1-создание');
writeln('2-просмотр');
writeln('3-обработка');
writeln('4-печаь ведомости');
writeln('5-выход');
writeln('Введи пункт меню');
readln(z);
case z of
1: sozd;
2: prosm;
3: obr;
4: obr;
5: exit;
end;
end;
end.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
29.07.2012, 12:38
Pascal
1
2
writeln('Введите количество баллов за сессию');
readln(r.kol);
Это не нужно заносить в каждую запись, это показатель один для всех.
1
Фрилансер
 Аватар для CodeR
3418 / 2815 / 3000
Регистрация: 08.02.2012
Сообщений: 8,603
Записей в блоге: 1
29.07.2012, 12:56
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Не стал разбираться что и как у вас там организовано...
И переделал вашу процедура добавив 4-5 пункт...
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
procedure obr;
 Var s,n,i:integer;
     st:string;
 begin
 Assign(g,'2.txt');Rewrite(g);{Открываем файл для записи сюда занесём ведомость}
 reset(f);
 s:=0;
 writeln(g,'Фамилия',' ','Имя студента',' ','№ группы',' ','Количество баллов',' ','Стипендия');{В файл заносим шапку}
 while not eof(f) do
 begin
 read(f,r);{считываем из типизированного файла запись}
 s:=s+r.kol;{К сумме прибаляем очередной балл студента}
 Val(r.k,n,i);{Переводим проходной балл для степендии в число для сравнения}
 if r.kol>=n then st:='Да' else st:='Нет';{Если кол-во набранных баллов больше или равно баллу для начисления стипендии то да иначе нет}
 writeln(g,r.fam,' ',r.imj,' ',r.gr,' ',r.kol,' ',st);{Заносим в текстовый файл все данные}
 end;
 writeln(g,'Итого: ',s);
 close(f);
 While not Eof(g) do
  Begin
   readln(g,st);{считываем из файла g в переменнуб st строку}
   writeln(st);{Выводим считанную строку}
  End;
 Close(g);
 end;
Добавлено через 3 минуты
Кстати
Pascal
1
g:text;
надо будет описать в начале программы в разделе Var
1
 Аватар для Deamond
4 / 4 / 2
Регистрация: 13.07.2012
Сообщений: 10
02.08.2012, 02:53
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Писал программу с меню, не знаю на сколько она тебе поможет, но все же "Великое Русское Вдруг" =)
Использовал Pascal ABC, на ABC.net не работает и на турбо то же (к сожалению)
То, что отгорожено "//" - это комментарии. Удачи. Надеюсь помог=)
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
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
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
uses crt;
const nmenu=4;  //кол-во строк в меню
      DataFileName = 'spis.dat'; //имя файла и путь к нему
type anketa=record
     tel:integer;  //номер телефона
     kod:real;     //код города
     data:string[20];  //дата разговора
     kol:real;     //кол-во минут
     sum:real;     //сумма к оплате
     end;
var
i, n: integer;
  c:char;
  spis: anketa;
  f: file of anketa;
ch:char;       //код последней нажатой клавиши
fun_key: boolean;//нажата ли спец клавиша
str_menu:array [0..nmenu-1] of string;   //массив строк меню
text_color:byte; //цвет текста меню
back_color:byte;//цвет фона строки меню
sel_text_color:byte;//цвет текста выбранного пункта меню
sel_back_color:byte;//цвет фона выбранного пункта меню
menu_back_color:byte;//цвет фона меню
screen_back_color:byte;//цвет фона экрана
border_back_color:byte;//цвет фона рамки
border_color:byte;//цвет рамки
width:byte;//ширина меню
wx:byte;//координата х левого верхнего угла меню
wy:byte;//координата у левого верхнего угла меню
dy:byte;//интервал между строками меню
crm:byte;//номер подсвеченного пункта меню
                  procedure  vivod;  //вывод на экран содержимого файла
                begin
                clrscr;
                seek(f,0);
                    writeln;
                    WriteLn('-------------------------------------------------------------------------------');
                    WriteLn('|      №  телефона   |Код города |Дата разговора|Кол-во минут| Сумма к оплате |');
                    WriteLn('-------------------------------------------------------------------------------');
                 for i:=1 to FileSize(f) do begin
                 Read(f,spis );
                 with spis do
                 begin
                  gotoxy(1,4+i);write('|');
                  gotoxy(2,4+i); write(tel);
                  gotoxy(22,4+i); write('|');
                  gotoxy(23,4+i); write(kod);
                  gotoxy(34,4+i); write('|');
                  gotoxy(35,4+i); write(data);
                  gotoxy(49,4+i); write('|');
                  gotoxy(50,4+i); write(kol);
                  gotoxy(62,4+i); write('|');
                  gotoxy(63,4+i); write(sum);
                  gotoxy(79,4+i);write('|');
                  end;
                  writeln
                  end;
                   WriteLn('-------------------------------------------------------------------------------');
                   writeln('Программа завершена. Нажмите ESC для выхода.');
                   halt
               end;
 
                 procedure dob;//добавление записей в файл
                   var n:integer;
                   begin
                   clrscr;
                   writeln('Введите кол-во добавляемых записей');
                   Readln(n);
                   if n>1 then  begin
                     for i := 1 to n do begin
                     writeln('Введите № телефона:');
                     readln(spis.tel);
                     writeln('Введите код города:');
                     readln(spis.kod);
                     writeln('Введите дату разговора:');
                     readln(spis.data);
                     writeln('Введите Количество минут:');
                     readln(spis.kol);
                     writeln('Введите сумму к оплате:');
                     readln(spis.sum);
                     Write(f, spis);
                     end;
                     end
                     else begin
                     if n=1then begin
                     writeln('Введите № телефона:');
                     readln(spis.tel);
                     writeln('Введите код города:');
                     readln(spis.kod);
                     writeln('Введите дату разговора:');
                     readln(spis.data);
                     writeln('Введите Количество минут:');
                     readln(spis.kol);
                     writeln('Введите сумму к оплате:');
                     readln(spis.sum);
                     Write(f, spis);
                     end
                     else begin writeln('Введено отрицательно число.');
                     close(f);
                     halt
                     end;
                     vivod;
                     end;
                     end;
                               procedure del;//удаление файла
                               begin
                                  close(f);
                                  Erase(f);
                                  gotoxy(27,15);writeln('Файл успешно удален. Также был создан новый файл.');
                                  assign(f, DataFileName );
                                  rewrite(f);
                               end;
                                             procedure ex;//выход
                                             begin
                                             close(f);
                                             halt
                                             end;
//процедура рисует на экране рамку
procedure box(x1,y1,x2,y2:integer);
 var i,j:integer;
begin
 gotoxy(x1+1,y1);
 for i:=x1+1 to x2+4 do write('-');
 gotoxy(x1+1,y2);
 for i:=x1+1 to x2+4 do write('-');
 for i:= y1 to y2 do
   begin
     gotoxy(x1,i);
     write('|');
   end;
 for i:=y1+1 to y2-1 do
  begin
   gotoxy(x2+4,i);
   write('|');
  end;
 gotoxy(x1,y1);
 write('0');
 gotoxy(x2+4,y1);
 write('0');
 gotoxy(x2+4,y2);
 write('0');
 gotoxy(x1,y2);
 write('0');
end;
//процедура очищает экран , вызывает процедуру вох
procedure draw_menu;
  var i,j:integer;
 begin
    textbackground(screen_back_color);
    clrscr;
    textcolor(border_color);
    textbackground(border_back_color);
    box(wx-2,wy-2,wx+width,wy+(nmenu-1)*dy+2);
    textbackground(menu_back_color);
    i:=wx-1;
    for j:=wy-1 to wy+(nmenu-1)*dy+1 do
      for i:=wx-1 to wx+width-1 do
        begin
         gotoxy(i,j);
         write('');
        end;
      for i:=0 to nmenu-1 do
       begin
       if i=crm then
        begin
          textbackground(sel_back_color);
          textcolor(sel_text_color);
        end
      else
         begin
            textbackground(back_color);
            textcolor(text_color);
         end;
      gotoxy(wx,wy+i*dy);
      write(str_menu[i]);
        end;
  end;
  //процедура устанавливает значение для переменных, хранящих цвета текста и фона:
  //размеры меню, координаты положения меню на экране и текст, содержащийся в строках меню
procedure init;
begin
   text_color:=blue;
   back_color:=white;
   sel_text_color:=yellow;
   sel_back_color:=green;
   menu_back_color:=blue;
   screen_back_color:=white;
   border_back_color:=lightgray;
   border_color:=red;
   width:=25;
   wx:=25;
   wy:=9;
   dy:=1;
   crm:=0;
   str_menu[0]:='Просмотреть содержимое файла';
   str_menu[1]:='Добавить записи в файл';
   str_menu[2]:='Удалить файл';
   str_menu[3]:='Выход из программы';
end;
//процедура получая параметры-значения Old - старый номер подсвеченной строки
//menu и Sel - новый номер подсвеченной строки, обновляет изображение меню на
//экране за счет печати строки меню со старым номером цветом Text_Color на фоне
//Back_Сolor, а строки меню с новым номером цветом Sel_Text_Color на фоне цветом
//Sel_Back_Color
procedure new_menu(old,sel:integer);
   begin
        textbackground(sel_back_color);
        textcolor(sel_text_color);
        gotoxy(wx,wy+sel*dy);
        write(str_menu[sel]);
        textbackground(back_color);
        textcolor(text_color);
        gotoxy(wx,wy+old*dy);
        write(str_menu[old]);
   end;
//процедура реагирует на нажатие клавиши со стрелкой вверх
procedure up;
  var old:byte;
begin
     old:=crm;
     if crm-1=-1 then crm:=nmenu;
     crm:=crm-1;
     if crm=-1 then crm:=nmenu-1;
     new_menu(old,crm);
end;
//процедура реагирует на нажатие клавиши со стрелкой вниз
procedure down;
  var old:byte;
begin
     old:=crm;
     crm:=crm+1;
     if crm=nmenu then crm:=0;
     new_menu(old,crm);
end;
//процедура получает параметр-значение - номер выбранного пункта меню и имитирует
//действие программы при выборе данного пункта меню и имитирует действие программы
//при выборе данного пункта
procedure do_select(n:integer);
  begin
   textcolor(n);
   if n=0 then vivod;
   if n=1 then dob;
   if n=2 then del;
   if n=3 then ex;
   gotoxy(1,1);write('Выполнение задания из пункта',n+1);
  end;
//Процедура, получив параметры-значения key и fun_key, выполняет проверку клавиши
//и, если была нажата клавиша Enter, то передает управление процедуре do_select
//указывая ей номер выбранного пункта меню. Если была нажата клавиша со стрелкой
//вверх или вниз, то вызываются проуедуры up или down соответственно.
procedure do_command(key:char;fun_key:boolean);
  begin
      if (not fun_key) or (upcase(key)=#13)// если не спец клавиша и нажата клавиша Enter
        then do_select(crm);
         if fun_key then //если спецклавиша
         case upcase(key) of
          #72: up;
          #80: down;
         end;
  end;
//основная программа
begin
assign(f, DataFileName );  //открытие файла
    if not FileExists( DataFileName )   //проверка существования файла
    then Rewrite(f)
    else begin reset(f); seek(f, FileSize(f)) end;
  init;
  draw_menu;
  repeat
     ch:=readkey;
     if ch=#0 then
       begin
         fun_key:=true;
         ch:=readkey;
       end
       else fun_key:=true;
       do_command(ch,fun_key);
   until (ch=#27);
close(f);
end.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.08.2012, 02:53
Помогаю со студенческими работами здесь

Составить ведомость об. использование горючие работников на предприятие ввиде таблице
Пожалуйста помоги решить ещё одну задачку. Буду очень сильно блогодарен и признателен! 1- Составить ведомость об. использование...

Составить программу, выводящую на экран ведомость начисленной заработной платы (Ф.И.О., должность, дата рождения, заработная плата)
Составить программу, выводящую на экран ведомость начисленной заработной платы (Ф.И.О., должность, дата рождения, заработная плата).

Вывести на экран студенческую ведомость
Составить программу, выводящую на экран студенческую ведомость (Ф. И. О., оценки за три экзамена, средний балл). Определить количество...

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

Составить итоговую ведомость
Нашла такой код, но не знаю как его изменить под мою ведомость. Подходит ли он мне или же нужно совсем другое? Помогите, пожалуйста. ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru