Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 0 / 0
Регистрация: 27.03.2012
Сообщений: 77
1

задача Delphi на файлы

22.05.2012, 16:24. Показов 900. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Файл студент создан, теперь нужно на каждом курсе надо найти группу (группы), в которых больше всего отличников .. вот здесь я ума не дам как сделать(( помогите дописать программу
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
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  windows;
const
 n=3;
type
  session = array[1..2,1..3] of record
                                  name: string[10];
                                  mark: 2..5;
                                 end;
  student = record
             fio: string[40];
             curs: 1..5;
             group: 1..9;
             result:session;
             formaobuch:char;
             s:integer;
            end;
  TFile= file of student ;
  tmas=array [1..n] of student;
//--------------------------------------------------------
procedure vvodstudent(var st:student); //ввод информации
 var
  i,j:integer;
begin
 with st do
  begin
   s:=0;    //сумма баллов за все время обучения
   write('фио: ');
   readln(fio);
   write('курс: ');
   readln(curs);
   write('группа: ');
   readln(group);
   writeln('результаты сессий:');
   for i:=1 to curs*2 do
    begin
     writeln('сессия №',i,':');
     for j:=1 to 3 do
      begin
       write('предмет экзамена: ');
       readln(result[i,j].name);
       write('оценка: ');
       readln(result[i,j].mark);
       Inc(s,result[i,j].mark);
      end;
    end;
   write('форма обучения: ');
   readln(formaobuch)
 end
end;
//-------------------------------------------------------------------
procedure writestudent(var st:student); //вывод информации
var
 i,j:integer;
begin
 with st do
  begin
   writeln('фио: ',FIO,',      курс: ',curs,'     группа: ',group,'    форма обучения: ',formaobuch);
   for i:=1 to curs*2 do
   begin
    writeln('Session ',i,': ');
    for j:=1 to 2 do
    write(result[i,j].name,': ',result[i,j].Mark,', ');
    writeln(result[i,3].name,': ',result[i,3].Mark)
   end
  end
end;
//----------------------------------------------------
var f1:Tfile;
    stud,studfive:tmas;
    t:student;
    i,j,count:Integer;
begin
 SetConsoleOutputCP(1251);
 Assign(f1,'af.int');
 rewrite(f1);
 for i:=1 to n do
  begin
   vvodstudent(stud[i]);
   Write(f1,stud[i]);
  end;
 Close(f1);
 for i:=1 to n do
  begin
   writestudent(stud[i]);
   readln
  end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2012, 16:24
Ответы с готовыми решениями:

Delphi и файлы
Подскажите, как можно в приложение добавлять файл? Например, у нас ряд pdf файлов и какая-то...

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

Файлы. Delphi 7
Подскажите! 1) У меня есть 3 типизированных файла: ConFile_1, ConFile_3 и ConFile_7 (TCon_File_1,...

Файлы в Delphi
Помогите пожалуйста запустить файл .exe из програмы которую пишу на Delphi! Подскажите возможно лди...

5
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
22.05.2012, 17:27 2
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
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  windows;
const
 n=3;
type
  session = array[1..2,1..3] of record
                                  name: string[10];
                                  mark: 2..5;
                                 end;
  student = record
             fio: string[40];
             curs: 1..5;
             group: 1..9;
             result:session;
             formaobuch:char;
             s:integer;
            end;
  TFile= file of student ;
  tmas=array [1..n] of student;
//--------------------------------------------------------
procedure vvodstudent(var st:student); //ввод информации
 var
  i,j:integer;
begin
 with st do
  begin
   s:=0;    //сумма баллов за все время обучения
   write('фио: ');
   readln(fio);
   write('курс: ');
   readln(curs);
   write('группа: ');
   readln(group);
   writeln('результаты сессий:');
   for i:=1 to curs*2 do
    begin
     writeln('сессия №',i,':');
     for j:=1 to 3 do
      begin
       write('предмет экзамена: ');
       readln(result[i,j].name);
       write('оценка: ');
       readln(result[i,j].mark);
       Inc(s,result[i,j].mark);
      end;
    end;
   write('форма обучения: ');
   readln(formaobuch)
 end
end;
//-------------------------------------------------------------------
procedure writestudent(var st:student); //вывод информации
var
 i,j:integer;
begin
 with st do
  begin
   writeln('фио: ',FIO,',      курс: ',curs,'     группа: ',group,'    форма обучения: ',formaobuch);
   for i:=1 to curs*2 do
   begin
    writeln('Session ',i,': ');
    for j:=1 to 2 do
    write(result[i,j].name,': ',result[i,j].Mark,', ');
    writeln(result[i,3].name,': ',result[i,3].Mark)
   end
  end
end;
//----------------------------------------------------
var f1:Tfile;
    stud:tmas;
    i,j:Integer;
    Otlichniki : Array[1..5,1..9] Of Integer;
    Max,Group : Integer;
    b : Boolean;
begin
 SetConsoleOutputCP(1251);
 Assign(f1,'af.int');
 rewrite(f1);
 for i:=1 to n do
  begin
   vvodstudent(stud[i]);
   Write(f1,stud[i]);
  end;
 Close(f1);
 for i:=1 to n do
  begin
   writestudent(stud[i]);
   readln
  end;
 
  For i:=Low(Otlichniki) To High(Otlichniki) Do
  For j:=Low(Otlichniki[1]) To High(Otlichniki[1]) Do
  Otlichniki[i,j]:=0; //Очистим...
 
  //Подсчитаем отличников в каждой группе
  for i:=1 to n do
  Begin
    b:=True;
    For j:=1 To 3 Do
    If ((stud[i].result[1,j].mark<>5) Or (stud[i].result[2,j].mark<>5)) Then
    Begin
      b:=False;
      Break;
    End;
    If b Then
    //Нарастили количество отличников в группе на соотв. курсе
    Inc(Otlichniki[stud[i].curs,stud[i].group]);
  End;
 
  //Ищем группы с максимальным количеством отличников на каждом курсе
  For i:=Low(Otlichniki) To High(Otlichniki) Do
  Begin
    Max:=0; Group:=0;
    For j:=Low(Otlichniki[1]) To High(Otlichniki[1]) Do
    If Otlichniki[i,j]>Max Then
    Begin
      Max:=Otlichniki[i,j];
      Group:=j;
    End;
    If Max<>0 Then
    WriteLn('На курсе : ',i,' максимальное количество отличников в группе ',Group) Else
    WriteLn('На курсе : ',i,' отличников нет');
  End;
End.
1
1 / 0 / 0
Регистрация: 27.03.2012
Сообщений: 77
22.05.2012, 18:26  [ТС] 3
Спасибо Вам большое, всегда отзываетесь!) у меня есть вопрос что означает сей цикл
Delphi
1
2
For i:=Low(Otlichniki) To High(Otlichniki) Do
  For j:=Low(Otlichniki[1]) To High(Otlichniki[1]) Do
и что означает Low и High в частности. подскажите пожалуйста...
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
22.05.2012, 18:38 4
Low - даёт минимальное значение диапазона типа переменной, если это массив - значит самый меньший индекс. High -то же самое - только самый верхний индекс. Если бы это были простые переменные значит было бы минимальное или максимальное возможеное значение переменной.
В общем-то тут можно было и не применять. Но, когда я задумывал, думал использовать согласно типов Curs и Group. Если бы эти типы были у вас описаны глобально, можно было писать:
Delphi
1
    Otlichniki : Array[curs,group] Of Integer;
а циклы так:
Delphi
1
2
  For i:=Low(curs) To High(curs) Do
  For j:=Low(group) To High(group) Do
Но поскольку это требовало переделок, я решил не морочить голову, а Low и High остались.
1
1 / 0 / 0
Регистрация: 27.03.2012
Сообщений: 77
22.05.2012, 18:58  [ТС] 5
и последний вопрос это снова по поводу цикла.. я просто не до конца разобралась
Delphi
1
2
 For i:=Low(Otlichniki) To High(Otlichniki) Do
  For j:=Low(Otlichniki[1]) To High(Otlichniki[1])
а почему в в цикле по i вот так Low(Otlichniki), а в цикле по вот так Low(Otlichniki[1])? я имею ввиду еденицу в квадратный скобках

Добавлено через 1 минуту
*а в цикле по j вот так Low(Otlichniki[1])?
(исправление: недопечатала символ j)
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
22.05.2012, 19:04 6
Там же массив в массиве. Если просто Low(Otlichniki) - это размерность первого индекса, а если Low(Otlichniki[1]) - это уже размерность второго индекса. Вообще второй нужно было бы писать так:
Delphi
1
  For j:=Low(Otlichniki[Low(Otlichniki)]) To High(Otlichniki[Low(Otlichniki)])
но поскольку там уже не было смысла - я не стал.
1
22.05.2012, 19:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2012, 19:04
Помогаю со студенческими работами здесь

Delphi. Подтема Файлы. Help.
Задача такова: Сведения о студенте состоят из его фамилии, специальности и шифра группы(год...

Типизированные файлы в Delphi
Не пойму почему данные не читаются до конца файла! помоги те вот код и сам проект, буду благодарен!...

Delphi загрязняет файлы ?
Имеется функция на JS var request = new XMLHttpRequest(); var body = 'name=' +...

Delphi и TXT файлы
Привет всем!Помогите плиз с такой проблемкой!Есть текстовый файл нужно нати человека (пользователь...


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

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