Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
serez
0 / 0 / 1
Регистрация: 27.04.2015
Сообщений: 35
1

Не могу разобраться со средним баллом

10.07.2017, 14:39. Просмотров 759. Ответов 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
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;
 
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure FormActivate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
//Процедура для заполнения шапки при запуске приложения
procedure TForm1.FormActivate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:='№';
StringGrid1.Cells[1,0]:='Группа';
StringGrid1.Cells[2,0]:='Фамилия';
StringGrid1.Cells[3,0]:='Физика';
StringGrid1.Cells[4,0]:='Химия';
StringGrid1.Cells[5,0]:='Информатика';
StringGrid1.Cells[6,0]:='Философия';
StringGrid1.Cells[7,0]:='Средний балл';
StringGrid1.Cells[0,1]:='1';
end;
 
//Процедура для добавления записи в таблицу
procedure TForm1.Button1Click(Sender: TObject);
begin
StringGrid1.cells[0,StringGrid1.RowCount]:=inttostr(StringGrid1.RowCount);
StringGrid1.RowCount:=StringGrid1.rowcount+1;
StringGrid1.cells[0,StringGrid1.RowCount]:=inttostr(StringGrid1.RowCount);
end;
 
procedure TForm1.Button4Click(Sender: TObject);
// При нажатии на кнопку удалятся выделенные в StringGrid1 строки
var
 i, h: integer;
begin
 with StringGrid1, Selection do
 begin
   h := Bottom - Top + 1;
   for i := Top to RowCount - h - 1 do
     Rows[i].Assign(Rows[i + h]);
   RowCount := RowCount - h;
 end;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
type
rec=record
//Фиксация длины полей
nomer:string[5];
gruppa:string[10];
familia:string[25];
fizika:string[5];
himia:string[5];
informatika:string[5];
filosofia:string[5];
srb:string[5];
end;
 
var
c:rec;
smod,s:string;
a:textfile;
b:file of rec;
i:integer;
begin
    //открытие файлов
    assignfile(b,'b.file');
    assignfile(a,'zadanie4.txt');
    rewrite(a);
    rewrite(b);
    c.nomer:='№';  //вывод в файл шапки таблицы
    c.gruppa:='Группа';
    c.familia:='Фамилия';
    c.fizika:='Физика';
    c.himia:='Химия';
    c.informatika:='Информатика';
    c.filosofia:='Философия';
    writeln(a,' ', c.nomer:5,' ', c.gruppa:10,' ', c.familia:25,' ', c.fizika:5,' ', c.himia:5,' ', c.informatika:5,' ', c.filosofia:5, ' ');
    For i:=1 to StringGrid1.rowcount-1 do  //заполнение файла данными из таблицы
      begin
      c.nomer:=StringGrid1.Cells[0,i];
      c.gruppa:=StringGrid1.Cells[1,i];
      c.familia:=StringGrid1.Cells[2,i];
      c.fizika:=StringGrid1.Cells[3,i];
      c.himia:=StringGrid1.Cells[4,i];
      c.informatika:=StringGrid1.Cells[5,i];
      c.filosofia:=StringGrid1.Cells[6,i];
      write(b,c);
      writeln(a,' ', c.nomer:5,' ', c.gruppa:10,' ', c.familia:25,' ', c.fizika:5,' ', c.himia:5,' ', c.informatika:5,' ', c.filosofia:5, ' ');
      end;
    closefile(a);
    closefile(b);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
type
rec=record
//Фиксация длины полей
nomer:string[5];
gruppa:string[10];
familia:string[25];
fizika:string[5];
himia:string[5];
informatika:string[5];
filosofia:string[5];
srb:string[5];
end;
 
{var
c:rec;
s:string;
b:file of rec;
i:boolean;}
 
var i,j:byte;
     sum:real;
 
 
begin
{assignfile(b,'b.file');
reset(b);  //открытие файла на чтение}
{StringGrid1.rowcount:=2;
StringGrid1.cells[0,1]:='';
StringGrid1.cells[1,1]:='';
StringGrid1.cells[2,1]:='';
StringGrid1.cells[3,1]:='';
StringGrid1.cells[4,1]:='';
StringGrid1.cells[5,1]:='';
StringGrid1.cells[6,1]:='';
StringGrid1.cells[7,1]:='';
i:=false;
While not EOF(b) do
  begin
  read(b,c);
    If i then StringGrid1.RowCount:=StringGrid1.RowCount+1;
    i:=true;
    StringGrid1.Cells[0,StringGrid1.RowCount-1]:=c.nomer;
    StringGrid1.Cells[1,StringGrid1.RowCount-1]:=c.gruppa;
    StringGrid1.Cells[2,StringGrid1.RowCount-1]:=c.familia;
    StringGrid1.Cells[3,StringGrid1.RowCount-1]:=c.fizika;
    StringGrid1.Cells[4,StringGrid1.RowCount-1]:=c.himia;
    StringGrid1.Cells[5,StringGrid1.RowCount-1]:=c.informatika;
    StringGrid1.Cells[6,StringGrid1.RowCount-1]:=c.filosofia;
    end;
  end;}
  //closefile(b);
  for j := 0 to StringGrid1.RowCount - 1 do
  begin
    sum:=0;
    for i := 3 to StringGrid1.ColCount - 2 do
      sum:=sum+strtoint(StringGrid1.Cells[i,j]);
    end;
    StringGrid1.Cells[i,j]:=floattostr(sum/(StringGrid1.ColCount-1));
  end;
 
end.
0
Вложения
Тип файла: rar abcd.rar (212.2 Кб, 0 просмотров)
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2017, 14:39
Ответы с готовыми решениями:

Рейтинг бакалавра заочного отделения при поступлении в магистратуру определяется средним баллом по диплому, умноженным н
Рейтинг бакалавра заочного отделения при поступлении в магистратуру...

Задали работу, не могу разобраться. Используется делфи 10, не могу разобраться, как это сделать
В одномерном массиве, состоящем из n вещественных элементов, вычислить:...

Найти количество элементов массива, значения которых лежат между средним арефметическим и средним геометрическим
Найти количество элементов массива A=(A1,A2,.....An) значения которых лежат...

Определить разность между средним арифметическим элементов массива и средним арифметическим максимального и минимального элементов
Здравствуйте, у меня не выводит все значения которые прошу вывести задание:Дан...

Не могу разобраться
Такая проблема, нужно по названию игры её убивать Надо было для учебного...

8
Puporev
Модератор
55045 / 42318 / 29224
Регистрация: 18.05.2008
Сообщений: 100,004
10.07.2017, 14:59 2
Delphi
1
2
3
4
5
6
7
fizika:byte;
himia:byte;
informatika:byte;
filosofia:byte;
srb:double;
...............................
srb=сумма всех оценок в записи/5
0
serez
0 / 0 / 1
Регистрация: 27.04.2015
Сообщений: 35
10.07.2017, 15:42  [ТС] 3
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
  for j := 1 to StringGrid1.RowCount - 1 do
  begin
 
    for i := 3 to StringGrid1.ColCount - 2 do begin
    sum:=0;
    sum:=fizika+himia+informatika+filosofia;
    srb:=sum/4;
    StringGrid1.Cells[7,j]:=floattostr(srb);
    end;
  end;
  end;
 
end.
сделал, но считает неправильно
0
Миниатюры
Не могу разобраться со средним баллом  
Puporev
Модератор
55045 / 42318 / 29224
Регистрация: 18.05.2008
Сообщений: 100,004
10.07.2017, 15:53 4
Так попробуйте, может ошибки есть, писал с закрытыми глазами.
Delphi
1
2
3
4
5
6
7
8
for j := 1 to StringGrid1.RowCount - 1 do
 begin
  srb:=0;
  for i := 3 to StringGrid1.ColCount - 2 do begin
  srb:=srb+strtoint(StringGrid1.Cells[i,j]);
  srb:=srb/4;
  StringGrid1.Cells[7,j]:=formatfloat('0.00',srb);
 end;
0
serez
0 / 0 / 1
Регистрация: 27.04.2015
Сообщений: 35
10.07.2017, 16:00  [ТС] 5
Все равно не так считает
0
Миниатюры
Не могу разобраться со средним баллом  
Puporev
Модератор
55045 / 42318 / 29224
Регистрация: 18.05.2008
Сообщений: 100,004
10.07.2017, 16:04 6
Средний балл должен быть вещественного типа, а не целого.
0
serez
0 / 0 / 1
Регистрация: 27.04.2015
Сообщений: 35
10.07.2017, 16:10  [ТС] 7
Поправил, но ситуация не изменилась - считает неверно
0
Миниатюры
Не могу разобраться со средним баллом  
Puporev
Модератор
55045 / 42318 / 29224
Регистрация: 18.05.2008
Сообщений: 100,004
10.07.2017, 16:15 8
Лучший ответ Сообщение было отмечено serez как решение

Решение

Delphi
1
2
3
4
5
6
7
8
for j := 1 to StringGrid1.RowCount - 1 do
 begin
  srb:=0;
  for i := 3 to 6 do
  srb:=srb+strtoint(StringGrid1.Cells[i,j]);
  srb:=sum/4;
  StringGrid1.Cells[7,j]:=formatfloat('0.00',srb);
 end;
1
serez
0 / 0 / 1
Регистрация: 27.04.2015
Сообщений: 35
10.07.2017, 16:19  [ТС] 9
Спасибо, теперь нормально считает
0
10.07.2017, 16:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2017, 16:19

Не могу разобраться
На форме есть 3 кнопки при нажатии которых происходит действие не могу...

Не могу разобраться
Написал программку,но она как бы не очень хорошо работает) Суть ее заключается...

не могу разобраться
Program Example; {$APPTYPE CONSOLE} uses SysUtils, Ruskey in...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru