Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 10
1

Вывести список студентов , имеющих не менее 2х пятёрок с сортировкой по возрасту

15.03.2012, 22:07. Показов 1029. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста, написал программу, вроде как все должно работать, но в итоге мне выводится на экран огромная куча перепутанных данных
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
program files;
uses crt;
const c=3;o=3;
Type zap=record
  familia:string;
        name:string;
        otchestvo:string;
        grozhdenia:integer;
        group:string;
        k:array[1..o] of integer;{Оценка}
        s:real;
        sv: integer;{номер эл-та}
        end;
   neud=record
  familia1:string;
        end;
var f:file of zap; f1:file of neud;  z:zap; z1:neud;
i,j,h,poz_min,poz_pred:integer; min:integer;
p:boolean;
procedure vyvod1;
begin
writeln ('студенты имеющие не менее 2х пятерок :  ');
reset(f1);
for i:=0 to filesize(f1)-1 do begin
          seek (f1,i);
           read (f1,z1);
          writeln(z1.familia1);
          end; close (f1);
end;
procedure sort;
begin
reset(f);
writeln ('Сортировка по имени:  ');
poz_min:=0;
for j:=1 to filesize(f)-1 do
    begin
    poz_pred:=poz_min;
    min:=-32000;
    seek(f,1);
    for i:=1 to filesize(f)-1 do
        begin
        read(f,z);
        if (z.sv=0) and (filepos(f)-1<>poz_pred) then
           begin
           if z.grozhdenia>min then
              begin
              min:=z.grozhdenia;
 
            poz_min:=filepos(f)-1;
              end;
           end;
        end;
     seek(f,poz_pred);
    read(f,z);
    z.sv:=poz_min;
    seek(f,poz_pred);
    write(f,z);
    end;
seek(f,1);
for i:=1 to filesize(f)-1 do
    begin
    read(f,z);
    if z.s>=4 then
    end;
writeln;
seek(f,0);
read(f,z);
while z.sv<>0 do
      begin
      seek(f,z.sv);
      read(f,z);
      if z.k[1]>=4 then
      writeln(z.familia,' ',z.name,' ',z.otchestvo);
      end;
end;
begin
 clrscr;
assign (f, ' all');
assign (f1, ' neud');
rewrite(f);
rewrite (f1);
z.sv:=0;
for i:=1 to c do
        begin
        z.s:=0;
  writeln ('Фамилия :  ');
        readln (z.familia);
        write (f,z) ;
        writeln ('Имя:  ');
        readln (z.name);
        write (f,z) ;
        writeln ('Отчество:  ');
        readln (z.otchestvo);
        write (f,z) ;
        writeln ('Год рождения:  ');
        readln (z.grozhdenia);
        write (f,z) ;
        writeln ('Группа:  ');
        readln (z.group);
        write (f,z) ;
        writeln ('Оценки (математика, физика,программирование) :  ');
                for j:=1 to o do begin
                read(z.k[j]);
                z.s:=z.s+z.k[j];
                end;
        z.s:=z.s/o;
  write (f,z) ;
        write ('Средний балл студента :  ',z.s);
        writeln;
 
        if z.k[1]>=4 then begin
           reset(f1);
           z1.familia1:=z1.familia1+' '+z.familia+' '+z.name+' '+z.otchestvo+';';
           write (f1,z1) ;
           close (f1);
     end ;
end;
vyvod1;
sort;
close(f);
end.

Вывести список студентов , имеющих не менее 2х пятёрок с сортировкой по возрасту

Добавлено через 37 секунд
понимаю что просматривать очень много, но сам я сообразить немогу, помогите пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.03.2012, 22:07
Ответы с готовыми решениями:

Вывести список студентов, имеющих положительные оценки
Помогите как вывести тех студентов, которые имеют хотя бы одну оценку 4 и 5 . #include...

Вывести список студентов, имеющих только двойки
помогите создать файл в c++ ,чтобы после фамилии занимало 20 позиций, а оценок было 4,...

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

Вывести список студентов, имеющих средний балл ниже заданного
Необходимо составить программу с использованием типа данных RECORD. Программа должна выполнять...

1
14 / 14 / 5
Регистрация: 21.01.2012
Сообщений: 122
16.03.2012, 01:07 2
а для чего используешь 2 файла? если данные идут не из файла а с клавиатуры
и какой смысл во второй записи?

Добавлено через 35 минут
написал удалив лишнее, если надо файл на выходе, привязать можно, и на входе вместо ручного ввода, иначе в них нет смысла
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
uses crt;
const c=5;o=3;
Type
 zap=record
   familia:string;
   name:string;
   otchestvo:string;
   grozhdenia:integer;
   group:string;
   k:array[1..o] of integer;{Îöåíêà}
   s:real;
   sv: integer;{íîìåð ýë-òà}
 end;
var z:array[1..c]of zap;
    k:zap;
    i,j:integer;
    b:boolean;
begin
 clrscr;
for i:=1 to c do
 begin
 z[i].s:=0;
 writeln ('Ôàìèëèÿ :  ');
 readln (z[i].familia);
 writeln ('Èìÿ:  ');
 readln (z[i].name);
 writeln ('Îò÷åñòâî:  ');
 readln (z[i].otchestvo);
 writeln ('Ãîä ðîæäåíèÿ:  ');
 readln (z[i].grozhdenia);
 writeln ('Ãðóïïà:  ');
 readln (z[i].group);
 writeln ('Îöåíêè (ìàòåìàòèêà, ôèçèêà,ïðîãðàììèðîâàíèå) :  ');
 for j:=1 to o do
  begin
  read(z[i].k[j]);
  z[i].s:=z[i].s+z[i].k[j];
  end;
 z[i].s:=z[i].s/o;
 write ('Ñðåäíèé áàëë ñòóäåíòà :  ',z[i].s);
 writeln;
 end;
for i:=1 to c do
 for j:=1 to c-1 do
  if z[j].grozhdenia>z[j+1].grozhdenia then
   begin
   k:=z[j];
   z[j]:=z[j+1];
   z[j+1]:=k;
   end;
for i:=1 to c do
 begin
 b:=false;
 for j:=1 to o do
  if z[i].k[j]=5 then
   if b then
    begin
    writeln(z[i].familia);
    b:=false;
    end
   else b:=true;
 end;
end.
0
16.03.2012, 01:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.03.2012, 01:07
Помогаю со студенческими работами здесь

Вывести список студентов, имеющих средний балл выше за заданный. Тип данных record
Необходимо составить программу с использованием типа данных RECORD. Программа должна выполнять...

Упорядочить список студентов по возрасту
Ребята help с решением , не понимаю как решать,вот собственно задача: Дан файл, содержащий...

Работа с структурами. Вывести список студентов, имеющих по итогам аттестации только "2"
typedef struct {char name; int group, mark;} STUD; STUD kurs; /информация о студентах. Вывести...

Записи: Вывести списки студентов, упорядоченные по возрасту
Описать и вывести массив, содержащий 10 записей следующей структуры: фамилия, возраст, №...


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

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