Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 2
Регистрация: 19.01.2017
Сообщений: 33
1

Не могу определить ошибку

10.08.2017, 00:59. Показов 767. Ответов 10
Метки нет (Все метки)

Добрый день\вечер. Было задание, из списка людей найти подходящего по заданной букве имени и вес=рост-100. По таким условиям. Вроде и написал все, и вроде как работает, но когда вбиваешь несколько людей то вылетает ошибка. Уже успел проверить с идентичной работой, и тут либо я в глаза долблюсь или я даже не знаю. Вот сам мой код и ошибка.
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
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids,
  StdCtrls, Spin;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Save_B: TButton;
    Load_B: TButton;
    P_E: TEdit;
    I_L: TLabel;
    Z_L: TLabel;
    R_L: TLabel;
    P_L: TLabel;
    Count_SE: TSpinEdit;
    I_SG: TStringGrid;
    Z_SG: TStringGrid;
    R_SG: TStringGrid;
    procedure Count_SEChange(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Load_BClick(Sender: TObject);
    procedure Save_BClick(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
type
   TPeople = record
     Name, Family : ShortString;
     Rost, Ves : Double;
   end;
{$R *.lfm}
 
 
{ TForm1 }
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  I_SG.RowCount:=Count_SE.Value+1;
  I_SG.Cells[0,0]:='Фамилия';
  I_SG.Cells[1,0]:='Имя';
  I_SG.Cells[2,0]:='Рост';
  I_SG.Cells[3,0]:='Вес';
  Z_SG.Cells[0,0]:='Фамилия';
  Z_SG.Cells[1,0]:='Имя';
  Z_SG.Cells[2,0]:='Рост';
  Z_SG.Cells[3,0]:='Вес';
  R_SG.Cells[0,0]:='Фамилия';
  R_SG.Cells[1,0]:='Имя';
  R_SG.Cells[2,0]:='Рост';
  R_SG.Cells[3,0]:='Вес';
end;
 
 
 
procedure TForm1.Save_BClick(Sender: TObject);
var
  people : TPeople;
  f: File;
  i: Integer;
begin
  AssignFile(f,'data.dat');
  Rewrite(f,1);
  for i:=1 to I_SG.RowCount-1 do
  begin
    people.Family:=I_SG.Cells[0,i];
    people.Name:=I_SG.Cells[1,i];
    people.Rost:= StrToFloat(I_SG.Cells[2,i]);
    people.Ves:= StrToFloat(I_SG.Cells[3,i]);
    BlockWrite(f,people.Name,SizeOf(people.Name));
    BlockWrite(f,people.Family,SizeOf(people.Family));
    BlockWrite(f,people.Rost,SizeOf(people.Rost));
    BlockWrite(f,people.Ves,SizeOf(people.Ves));
  end;
  CloseFile(f);
end;
 
procedure TForm1.Load_BClick(Sender: TObject);
var
  people : Array[1..100] of TPeople;
  f : file;
  i, count, j : Integer;
  b : String;
begin
  AssignFile(f,'data.dat');
  Reset(f,1);
  count := 0;
  while not EOF(f) do
begin
  inc(count);
  BlockRead(f,people[count].Name,SizeOf(people[count].Name));
  BlockRead(f,people[count].Family,SizeOf(people[count].Family));
  BlockRead(f,people[count].Rost,SizeOf(people[count].Rost));
  BlockRead(f,people[count].Ves,SizeOf(people[count].Ves));
  end;
  CloseFile(f);
  Z_SG.RowCount:=count+1;
  for i := 1 to count do
  begin
    Z_SG.Cells[1,i]:=people[i].Name;
    Z_SG.Cells[0,i]:=people[i].Family;
    Z_SG.cells[2,i]:=FloatToStr(people[i].Rost);
    Z_SG.cells[3,i]:=FloatToStr(people[i].Ves);
    j:=0;
   b:=P_E.Text;
   if (pos(b,people[i].Name)=1)  then
   if (people[i].Ves = people[i].Rost - 100) then
   begin
     inc(j);
     R_SG.RowCount:=j+1;
     R_SG.Cells[1,i]:=people[i].Name;
     R_SG.Cells[0,i]:=people[i].Family;
     R_SG.Cells[2,i]:=FloatToStr(people[i].Rost);
     R_SG.Cells[3,i]:=FloatToStr(people[i].Ves);
   end;
   end;
   if j = 0 then
   begin
   R_SG.RowCount:=2;
   R_SG.Cells[1,i]:='Заданным';
   R_SG.Cells[0,i]:='Человека по';
   R_SG.Cells[2,i]:='Параметрам';
   R_SG.Cells[3,i]:='Не найдено';
   end;
 
end;
 
procedure TForm1.Count_SEChange(Sender: TObject);
begin
  I_SG.RowCount:=Count_SE.Value+1;
end;
 
end.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Миниатюры
Не могу определить ошибку   Не могу определить ошибку  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.08.2017, 00:59
Ответы с готовыми решениями:

Ошибку не могу определить
вообщем ошибка странная не могу понять откуда она взялась Ошибка 6 error LNK2019: ссылка на...

Не могу определить ошибку
Здраствуйте. Делаю работу, сделал без классов, теперь мучаюсь и переделываю под классы. Есть...

Не могу определить ошибку (конкретизация шаблонной функции)
Всем привет. Есть шаблонная функция template<typename T> void Tree<T>::inTreeHelper(const T...

Не могу определить ошибку в коде. Написано все с книги
Написал код с книги, перепроверил. Xcode ругается, проверил в онлайн компиляторе, ошибка такая:...

10
пофигист широкого профиля
4338 / 2844 / 810
Регистрация: 15.07.2013
Сообщений: 16,501
10.08.2017, 01:10 2
Было бы нормальное форматирование кода, может быть вы и поняли свою ошибку.
Но даже без нормального форматирования. Ответьте самому себе чему равно значение переменной I в строках 134-137?
2
Модератор
63704 / 47265 / 32574
Регистрация: 18.05.2008
Сообщений: 114,556
10.08.2017, 09:02 3
Интересно почему файл без типа, а не типизированный файл file of TPeople и зачем еще и массив?
0
Модератор
6945 / 4498 / 1913
Регистрация: 21.01.2014
Сообщений: 19,080
Записей в блоге: 3
10.08.2017, 09:12 4
Ну, ответ уже был дан, поэтому внесу такую маленькую корректировку: оформить шапки таблиц можно и проще, чем перечислять все столбцы...
Pascal
1
2
3
I_SG.Rows[0].CommaText := 'Фамилия,Имя,Рост,Вес';
Z_SG.Rows[0] := I_SG.Rows[0];
R_SG.Rows[0] := I_SG.Rows[0];
0
0 / 0 / 2
Регистрация: 19.01.2017
Сообщений: 33
11.08.2017, 00:49  [ТС] 5
Ну возможно и проще, я не спорю. Но тут просто нужно делать по методичке и сказано заполнять так.

Добавлено через 7 минут
Цитата Сообщение от northener Посмотреть сообщение
Было бы нормальное форматирование кода, может быть вы и поняли свою ошибку.
Но даже без нормального форматирования. Ответьте самому себе чему равно значение переменной I в строках 134-137?
northener, за строчки 134-137, как я понял i там и не нужна вовсе, можно просо число написать.
0
пофигист широкого профиля
4338 / 2844 / 810
Регистрация: 15.07.2013
Сообщений: 16,501
11.08.2017, 00:53 6
Цитата Сообщение от JackGG Посмотреть сообщение
можно просо число написать
Не можно, а нужно написать число. При чем именно то число, которое нужно.
1
0 / 0 / 2
Регистрация: 19.01.2017
Сообщений: 33
11.08.2017, 00:54  [ТС] 7
Цитата Сообщение от Puporev Посмотреть сообщение
Интересно почему файл без типа, а не типизированный файл file of TPeople и зачем еще и массив?
По поводу этого, дело в том, что я делаю по методичке с примера. Делать как самому пожелается конечно не запрещено, но в случае, если ты пишешь код и включаешь в него не пройденный материал, то нужно объяснить ту часть, что не проходили.
Если нужно то и методичку могу кинуть, но думаю это лишнее

Добавлено через 57 секунд
Цитата Сообщение от northener Посмотреть сообщение
Не можно, а нужно написать число. При чем именно то число, которое нужно.
Ну да нужно, спасибо что показали на ошибку
0
пофигист широкого профиля
4338 / 2844 / 810
Регистрация: 15.07.2013
Сообщений: 16,501
11.08.2017, 01:04 8
Цитата Сообщение от JackGG Посмотреть сообщение
Если нужно то и методичку могу кинуть, но думаю это лишнее
Методичку кидать пока не нужно. А вот формулировку задания (полную и точную) не помешало бы.
Цитата Сообщение от Puporev Посмотреть сообщение
Интересно почему файл без типа, а не типизированный файл file of TPeople и зачем еще и массив?
Я хотел бы ответить за автора, но решил подождать его ответа про формулировку задания.
0
0 / 0 / 2
Регистрация: 19.01.2017
Сообщений: 33
11.08.2017, 01:22  [ТС] 9
Цитата Сообщение от northener Посмотреть сообщение
Методичку кидать пока не нужно. А вот формулировку задания (полную и точную) не помешало бы.

Я хотел бы ответить за автора, но решил подождать его ответа про формулировку задания.
Задание: Составить две программы(или одну с двумя расчетами) с использованием типов запись и файл для решения задачи: а)ввод исходных данных и запить информации в двоичный файл;б)чтение данных из файла и выполнение операции в соответствии с заданием.
А вот в общем и сама задача:
Имеются данные о группе людей, включающие: фамилию, имя, вес и рост. Вывести данные о людях, фамилия которых начинается с заданной буквы, а соотношение между весом и ростом:<вес>=<рост>-100.
Уже ошибку свою заметил, у себя в программе я ищу по первой букве имени, а не фамилии.
0
пофигист широкого профиля
4338 / 2844 / 810
Регистрация: 15.07.2013
Сообщений: 16,501
11.08.2017, 01:28 10
Цитата Сообщение от JackGG Посмотреть сообщение
Задание: Составить две программы(или одну с двумя расчетами) с использованием типов запись и файл для решения задачи: а)ввод исходных данных и запить информации в двоичный файл;б)чтение данных из файла и выполнение операции в соответствии с заданием.
Не вижу почему тут нельзя использовать типизированный файл. Но это вам решать.
0
0 / 0 / 2
Регистрация: 19.01.2017
Сообщений: 33
11.08.2017, 01:29  [ТС] 11
Цитата Сообщение от northener Посмотреть сообщение
Не вижу почему тут нельзя использовать типизированный файл. Но это вам решать.
Нам не говорят, что нельзя использовать что то свое. Но будут спрашивать, где ты это взял, если в методичке этого нету
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.08.2017, 01:29

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Двумерный массив. Поиск нулей.Не могу найти ошибку ошибку в коде
Вот,например массив 5 5 0 1 0 1 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 считываются два...

Не могу найти ошибку. Нажимаю на клавишу, выдает ошибку
uses ABCObjects,GraphABC; const Image_0 = '0_765e9_6a3e424a_S.png'; var...

Структура: Не могу понять, почему выдает ошибку и как собственно эту ошибку можно исправить?
Привет,не могу понять почему ошибку выдает и как сбстно эту ошибку можно исправить? #include...

Не могу найти ошибку в программе(для просмотра картинок):кнопка НАЗАД не работает(не становится активной) Найдите ошибку.


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

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

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