Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
 Аватар для vladis23
13 / 13 / 10
Регистрация: 25.05.2015
Сообщений: 554

Запись Студент - Определить список студентов заданного курса

15.04.2016, 20:31. Показов 4410. Ответов 70
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Структура элемента массива студент: фамилия, имя, отчество, пол, возраст, № курса. Определить:
─ список студентов заданного курса;
─ средний возраст студентов заданного курса;
─ № курса, на котором учится наибольший процент студентов мужского пола;
Не получается сделать 3 задание.
Вот прилагается код
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
program Student;
 
uses
  crt;
type
TStudent =record
 FSurname:string[15];
 FName:string[20];
 Patronymic:string[40];
 gender:char;
 vozrast:byte;
 nomer_kursa:byte;
 end;
 
var
  Studs: array[1..25] of TStudent;
  Zap: TStudent;
  f: file of TStudent;
  vibor: byte;
  fami: string[15];
   n, t: integer;
 
  {---------------------------------------------------------------------------------------------}
procedure vvod;
var
  i: integer;
begin
clrscr;
  Assign(f, 'student.dat');
  rewrite(f);
  repeat
  Write('Количество студентов от 1 до 25 n: ');
  readln(n);
  until n in [1..25];
  for i := 1 to n do
  begin
    writeln('Введите', ' ', i, ' ', 'студента ');
   with Zap do
   begin
      
write('|Введите фамилию студента................|- '); readln(Fsurname);
write('|Введите имя студента...........................|- '); readln(FName);
write('|Введите отчество студента.................|- '); readln(Patronymic);
repeat
write('|Введите пол студента(м/ж)................|- '); readln(gender);
until (gender='м')or(gender='ж');
repeat
write('|Введите возраст......................|- '); readln(vozrast);
until vozrast in [16..25];
repeat
write('|Введите № курса..................|- '); readln(nomer_kursa);
until nomer_kursa in [1..5];
writeln;
   
   write(f, Zap);
  end;
  end;
  close(f);
end;
{--------------------------------------------------------------------------------------------------------------------------------------------------------------------}
procedure chten;
var
  i: integer;
begin
  clrscr;
  assign(f, 'student.dat');
  reset(f);
  i := 1;
  while not (eof(f)) do 
  begin
    read(f, Studs[i]);
       writeln(i,Studs[i].FSurname:15,' ',Studs[i].FName:10,' ',Studs[i].Patronymic:15,' ',Studs[i].gender,' ','|',Studs[i].vozrast,' ',Studs[i].nomer_kursa,' ');
    i := i + 1;
    
  end;
  close(f);
  
  n := i - 1;
end;
{----------------------------------------------------------------------------------------------------------------------------------------------------------------------------}
procedure dobav;
var
  i: integer;
begin
clrscr;
  rewrite(f);
  
  for    i := 1 to n do
    write(f, Studs[i]); //Записываем в массив записей
  
  Writeln('Введите ', ' ', n + 1, ' ', 'студента');
  with Zap do
  begin
write('|Введите фамилию студента................|- '); readln(Fsurname);
write('|Введите имя студента...........................|- '); readln(FName);
write('|Введите отчество студента.................|- '); readln(Patronymic);
repeat
write('|Введите пол студента(м/ж)................|- '); readln(gender);
until (gender='м')or(gender='ж');
repeat
write('|Введите возраст......................|- '); readln(vozrast);
until vozrast in [16..25];
repeat
write('|Введите № курса..................|- '); readln(nomer_kursa);
until nomer_kursa in [1..5];
  writeln;
  write(f, Zap);
  end;
  close(f);
  
  
end;
{--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------}
 
procedure delete;
var
  i: integer;
begin
clrscr;
  i := 1;
  assign(f, 'student.dat');
  reset(f);
  
  
  while not eof(f) do
  begin
    read(f, Studs[i]);
    i := i + 1
  end;
 
  close(f);
  write('Выберите номер удаляемой записи которую вы хотите: ');
  readln(n);
  reset(f);
  seek(f, filesize(f) - 1);{ Ставим указатель перед последним компонентом }
  read(f, Studs[i]);
  seek(f, n - 1); { Ставим указатель перед удаляемым файлом }
 write(f, Studs[i]);{ Записываем конечный компонент вместо удаляемого }
                    { убираем последний элемент файла }
 seek(f, filesize(f) - 1);{ Ставим указатель перед последним компонентом }
 truncate(f);{ Отсекаем последний компонент }
  
 Writeln('Удаление прошло успешно!!!');                                
  
end;
{----------------------------------------------------------------------------------------------------------------------}
procedure poisk;
 
begin
clrscr;
  
          write('Введите фамилию ребенка: ');
          readln(fami);
          reset(f);
          t := 0;
          while not eof(f) do
          begin
            read(f, Zap);
            if Zap.FSurname = fami then
           begin
            t := 1;
           writeln('Найдент студент или студентка с такой фамилией!!!');
              Writeln('Выводим запись');
              writeln(Zap.FSurname:15,' ',Zap.FName:10,' ',Zap.Patronymic:25,' ',Zap.gender,' ',' ',Zap.vozrast,' ',Zap.nomer_kursa);
              end;
          end;
          if t = 0 then writeln('Такого ребенка нету!!!');
          close(f);
        end;
      
  {------------------------------------------------------------------------------------------------------------------------------------------------------------------------------} 
procedure vivod;
var i:integer;
kurs:byte;
begin
repeat 
Write('Введите курс: '); Readln(kurs);
until kurs in [1..5];
writeln('Cписок студентов по заданному курсу');
for i:=1 to n do begin
if (Studs[i].nomer_kursa=kurs) then 
writeln(Studs[i].FSurname:15,' ',Studs[i].FName:10,' ',Studs[i].Patronymic:15,' ',Studs[i].gender,' ','|',Studs[i].vozrast,' ',Studs[i].nomer_kursa,' ');
end;
end;
 
procedure vivod2;
var srednee:real;
summa:integer;
kurs:byte;
i:integer;
begin
ClrScr;
repeat 
Write('Введите курс: '); Readln(kurs);
until kurs in [1..5];
Summa:=0;
for i:=1 to n do begin
if (Studs[i].nomer_kursa=kurs) then
begin
summa:=summa+Studs[i].vozrast;
end;
end;
srednee:=summa/n;
writeln('Средний возраст студентов заданого курса:-------- ',srednee);
 
end;
 
procedure vivod3;
var kol:integer;
procent:real;
i:integer;
begin
for i:=1 to n do begin
if (Studs[i].gender='м') then
  begin
  case Studs[i].nomer_kursa of
  1: kol:=kol+1;
  2: kol:=kol+1;
  3: kol:=kol+1;
  4: kol:=kol+1;
  5: kol:=kol+1;
  end;
end;
end;
writeln('kol =',kol);
end;
 
begin
ClrScr;
repeat
 
  Writeln('Выбор действия');
  Writeln('1-Ввод новых  данных');
  Writeln('2-Чтение данных');
  Writeln('3-Добавление записей');
  Writeln('4-Удаление записи');
  Writeln('5-Поиск информации');
  Writeln('6-Самый больной ребенок');
  Writeln('7-Кто больше болеет - мальчики или девочки');
  writeln('8-Cписок детей, проживающих на заданной улице');
  writeln('9-Выход');
  readln(vibor);
    case vibor of
      1: vvod;
      2: chten;
      3: dobav;
      4: delete;
      5: poisk;
      6: vivod;
      7: vivod2;
      8: vivod3;
      9:begin
      writeln('Нажмите Enter для выхода');
      Readln;
      exit;
      end
      else 
        begin
        writeln('Нажмите Enter и повторите ваш ввод');
        Readln; end;
        end
        until (vibor=9);
    
    
end
.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.04.2016, 20:31
Ответы с готовыми решениями:

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

Вывести список студентов 2 курса
uses crt;type stud=record fio,kurs,data,prishel,gorod:string; kolledj:integer; end; var gr:array of string; i,j:integer; ...

Вывести список студентов 5 курса по алфавиту
помогите плиз хоть одну из задач 1) на рабочем листе задан список вида: ф.и.о , должность, оклад, дата рождения выбрать всех инженеров...

70
 Аватар для vladis23
13 / 13 / 10
Регистрация: 25.05.2015
Сообщений: 554
18.04.2016, 18:58  [ТС]
Студворк — интернет-сервис помощи студентам
Chilipalmer777, я паскаль забываю сильно, больше на С++ иду

Добавлено через 2 минуты
Chilipalmer777, две процедурки я это сам писал, и предыдущие процедуры тоже сам писал, а вот на третей сначала не понял как ее сделать
0
14 / 14 / 11
Регистрация: 20.03.2016
Сообщений: 168
19.04.2016, 16:57
vladis23, алгоритм поиска максимума не меняется в зависимости от языка, меняется лишь конкретное написание кода.
Выложи код поиска максимума на том языке, который ты знаешь лучше.
Я исправлю его на паскаль.

п.с. А вообще, ты бы не ленился и почитал книгу Рубанцева о паскале. Там очень много полезного для себя почерпнешь. В т.ч. и массу примеров математических решений для различных заданий(и поиск максимума тоже).
0
 Аватар для vladis23
13 / 13 / 10
Регистрация: 25.05.2015
Сообщений: 554
19.04.2016, 17:51  [ТС]
Chilipalmer777, спасибо за литературу

Добавлено через 19 минут
Chilipalmer777,
C++
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
 #include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
 
int main()
{
    int n;
  int maxim=0;
  int *mas;
  setlocale(LC_ALL,"Rus");
  srand(time(NULL));
  cout<<"Ввести размерность: "<<endl;
  cin>>n;
  mas=new int [n];
  for (int i=0;i<n;i++)
   {
 
    mas[i]=rand()%9;
   cout<<mas[i]<<" ";
   }
   cout<<endl;
 
   for (int i=0;i<n;i++)
   {
 
 
       if (mas[i]>maxim)
       {
         maxim=mas[i];
       }}
  cout<<"max ="<<maxim<<endl;
  for (int i=0;i<n;i++)
{
 
   delete[]mas;
}
    return 0;
}
0
14 / 14 / 11
Регистрация: 20.03.2016
Сообщений: 168
20.04.2016, 23:41
vladis23, в тексте программы вижу код по нахождению максимума в массиве. Скажи - как ты его написал на Си, если ты не знаешь основ алгоритмизации? Т.е. на Си ты знаешь что такое цикл и его условия работы, а на Паскале - уже не знаешь ? Алгоритм поиска ведь тот-же!
И даже пишется код почти один-в-один также как на Си.
п.с. Или ты просто где-то стащил готовый код на Си?
0
 Аватар для vladis23
13 / 13 / 10
Регистрация: 25.05.2015
Сообщений: 554
21.04.2016, 01:35  [ТС]
Chilipalmer777, нет мне больше нравится на Си программировать

Добавлено через 1 минуту
Chilipalmer777, Мне надо находить все пять максимумов и потом их сравнивать между собой?

Добавлено через 13 минут
Chilipalmer777, Паскаль я знаю, но некоторые его способы отличаются от другого языка программирования
0
14 / 14 / 11
Регистрация: 20.03.2016
Сообщений: 168
21.04.2016, 06:38
Братан, не важно - на чем ты программируешь.
Просто если ты умеешь написать цикл на Си, то ты как минимум уже понимаешь как этот цикл на Си работает, знаешь как задать начальную переменную, условие повторения цикла и приращение переменной.
А еще, если ты сумел составить решение для поиска максимума на Си, ты должен был понимать - как этот максимум искать и когда заносить его в переменную.
То есть ты хочешь сказать, что максимум в массиве ты находить умеешь, а найти одинаковые элементы - не знаешь как? Даже на Си - приведи мне код, который выдает одинаковые элементы массива, или ты не понимаешь - как искать одинаковые элементы в массиве?
0
 Аватар для vladis23
13 / 13 / 10
Регистрация: 25.05.2015
Сообщений: 554
21.04.2016, 17:18  [ТС]
Chilipalmer777,
C++
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
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
 
int main()
{
    int n;
  int maxim=0;
  int *mas;
  setlocale(LC_ALL,"Rus");
  srand(time(NULL));
  cout<<"Ввести размерность: "<<endl;
  cin>>n;
  mas=new int [n];
  for (int i=0;i<n;i++)
   {
 
    mas[i]=rand()%9;
   cout<<mas[i]<<" ";
   }
   cout<<endl;
 
   for (int i=0;i<n;i++)
   {
 
 
       if (mas[i]>maxim)
       {
         maxim=mas[i];
       }}
  cout<<"max ="<<maxim<<endl;
 
  for (int i=0;i<n-1;i++)
{
    for (int k=i+1;k<n;k++)
{
 
 
    if (mas[i]==mas[k])
  {
      cout<<"Вывод одинакаковых элементов: "<<endl;
cout<<mas[k]<<" ";
      break;
}}}
  for (int i=0;i<n;i++)
{
 
   delete[]mas;
}
    return 0;
}
Вот так чтоли?
0
20 / 20 / 6
Регистрация: 09.04.2016
Сообщений: 145
21.04.2016, 20:22
vladis23, ты почти угадал. Правда программирование - это не та наука, где нужно угадывать.
Два цикла для поиска - это слишком.
Достаточно одного цикла, в котором ты каждый элемент массива сравнишь с переменной Maxim, в которой хранится значение максимума. Если равны - выдаешь на экран.

Добавлено через 8 минут
П.с. Для понимания процесса ты должен понять - как бы ты эту задачу решал вручную без компьютера.
Когда ты это поймешь, у тебя созреет алгоритм(последовательность действий). На основании алгоритма и пишется программа.
Если код пишешь с "догадками"(типа сработает или не сработает), то всегда может обнаружиться что есть какие-то наборы данных или ситуации, в которых твой код сработает неверно. Чтобы таких ситуаций не возникало и продумывается сначала алгоритм решения задачи. Тем более, она по сути совсем не сложная.
0
 Аватар для vladis23
13 / 13 / 10
Регистрация: 25.05.2015
Сообщений: 554
21.04.2016, 20:40  [ТС]
ChiliPalmer, это точно
0
 Аватар для vladis23
13 / 13 / 10
Регистрация: 25.05.2015
Сообщений: 554
22.04.2016, 23:16  [ТС]
ChiliPalmer, ты мне дал подсказку я до сих пор в тупике, не могу разобраться с какого цикла начинать. Думал что мне надо трехмерный цикл для этой процедурки, а оказалось что нет
0
20 / 20 / 6
Регистрация: 09.04.2016
Сообщений: 145
22.04.2016, 23:58
vladis23, чувак, всё же так логично...
Если ты про паскаль - то после завершения цикла поиска максимума нужно поставить еще один цикл, который будет перебирать все элементы массива и сравнивать с найденным ранее максимумом, при совпадении - выдавать инфу на экран.
п.с. Ты же знаешь Си - для тебя этот алгоритм должен быть "как 2 пальца об асфальт"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.04.2016, 23:58

Вывести список студентов указанного факультета и курса
Помогите исправить программу (вывести еще и факультет). Дан список из n записей о студентах. Каждая запись содержит следующие поля:...

студент поступает в универ. У него уникальное ID, имя. Студент может переходить с курса на курс.
Я недавно начал изучать Java. Не все пока получается. Помогите с кодом для задачки студент поступает в универ. У него уникальное ID, имя и...

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

Вывести список студентов 2 курса, которые проживают в городе Чебоксары
Сведения о студентах колледжа представлены в виде таблицы. ФИО Дата рождения Год поступления Курс Место проживания Семенов...

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


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

Или воспользуйтесь поиском по форуму:
71
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru