Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2015, 13:49   #1
Edvix
 
Регистрация: 04.05.2015
Сообщений: 9
По умолчанию ошибка '' is not a valid floating point value

Код:
Type osoba=record
pib: string[15];
stat: string[1];
vik, rik, stazh ,rist: integer;
date:string[10];
rozmpensii: real;
dnr:string[10];

end;
var f:file of osoba; //файл записів
z: osoba; //запис
namefile: string; //ім'я файла
nbtn2: integer;


procedure TForm1.Button9Click(Sender: TObject);
var i,rik_1: integer;
qwer,qwer1, q: real;
begin
rik_1:=StrToInt(Edit7.text);
i:=0;
reset(f); //Відкрити файл
seek(f,0); //Перевести покажчик на початок файла
//Підпис стовпців компонента StringGrid3
with StringGrid3 do
begin
cells[0,0]:='Прізвище';
cells[1,0]:='Стать';
cells[2,0]:='Дата народження';
cells[3,0]:='Рік виходу на пенсію';
cells[4,0]:='Трудовий стаж';
cells[5,0]:='Розмір пенсії';
end;
StringGrid3.Show; //Компоненти видимі
//Пошук даних за критерієм і виведення результату на екран

while not eof (f) do
begin
read(f,z);
with z do
if rik_1=z.rik then
begin
i:=i+1;
StringGrid3.Cells[0,i]:=z.pib;
StringGrid3.Cells[1,i]:=z.stat;
StringGrid3.Cells[2,i]:=z.date;
StringGrid3.Cells[3,i]:=IntToStr(z.rik);
StringGrid3.Cells[4,i]:=IntToStr(z.stazh);
StringGrid3.Cells[5,i]:=FloatToStr(z.rozmpensii) ;
end;
if z.stat='Ч' then
begin
for i:=1 to (stringGrid3.rowcount-1) do
begin
z.rozmpensii:=z.rozmpensii+strtofloat(stringgrid3. cells[5,i]);
end;
qwer:=z.rozmpensii/( stringGrid3.rowcount-1);
Label17.Caption:='Середній розмір пенсії чоловіків складає: '+floattostr(qwer);
end ;
if z.stat='Ж' then
begin
for i:=1 to (stringGrid3.rowcount-1) do
begin
z.rozmpensii:=z.rozmpensii+strtofloat(stringgrid3. cells[5,i]);
end;
qwer1:=z.rozmpensii/( stringGrid3.rowcount-1);
Label18.Caption:='Середній розмір пенсії жінок складає: '+floattostr(qwer1);
end;

CloseFile(f);
Button10.Show;
end;

end;
Программа компилируется,но выскакивает такое сообщение,в чем ошибка?

Последний раз редактировалось Stilet; 04.05.2015 в 14:00.
Edvix вне форума Ответить с цитированием
Старый 04.05.2015, 14:02   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
strtofloat(stringgrid3. cells[5,i])
Замени на
Код:
strtofloatDEF(stringgrid3. cells[5,i],0);
Тогда, если в ячейке будет не число программа подставит ноль.
Или используй функцию TryStrTofloat для проверки возможности преобразования.
Ошибка твоя означает что в ячейке грида не число а пустая строка.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.05.2015, 14:35   #3
Edvix
 
Регистрация: 04.05.2015
Сообщений: 9
По умолчанию

Попробовал,не выходит,посмотрите пожалуйста в архиве программу.Запрос 3.Уже бьюсь над этим ,но ничего не выходит

Посмотрите сообщение выше,не игнорируйте
Вложения
Тип файла: rar 2.rar (313.4 Кб, 6 просмотров)

Последний раз редактировалось Stilet; 04.05.2015 в 14:48.
Edvix вне форума Ответить с цитированием
Старый 04.05.2015, 14:49   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ты не везде заменил на указанную мной функцию.
Скажи честно - эту программу ты скоммуниздил? Не верю что ты ее писал сам.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.05.2015, 18:08   #5
Edvix
 
Регистрация: 04.05.2015
Сообщений: 9
По умолчанию

Я не такой безнадежный,как кажусь,то что работают нормально 4 других вкладки ,то это я сам
Но тот запрос вообще не понял.Скажи плиз ,что поменять ,чтоб искало среднее арифметическое
Edvix вне форума Ответить с цитированием
Старый 04.05.2015, 18:19   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Среднее арифметическое чего? Пенсии?
Ты можешь подробнее рассказывать что тебе нужно сделать?
мне же сложно понять что ты хочешь. Из того что я понял вот:

Код:
procedure TForm1.Button9Click(Sender: TObject);
var i,rik_1,iman,iwoman: integer;
avgman,avgwoman q: real;
begin 
avgman:=0; avgwoman:=0;  iman:=0; iwoman:=0;

rik_1:=StrToInt(Edit7.text);
i:=0;
reset(f); //Відкрити файл
seek(f,0); //Перевести покажчик на початок файла
//Підпис стовпців компонента StringGrid3
with StringGrid3 do
begin
RowCount:=2;
cells[0,0]:='Прізвище';
cells[1,0]:='Стать';
cells[2,0]:='Дата народження';
cells[3,0]:='Рік виходу на пенсію';
cells[4,0]:='Трудовий стаж';
cells[5,0]:='Розмір пенсії';
end;
StringGrid3.Show; //Компоненти видимі
//Пошук даних за критерієм і виведення результату на екран

while not eof (f) do begin
 read(f,z);
if rik_1<>z.rik then Continue;

with z,StringGrid3 do begin
 RowCount:=RowCount+1;
 Cells[0,RowCount-1]:=pib;
 Cells[1,RowCount-1]:=stat;
 Cells[2,RowCount-1]:=date;
 Cells[3,RowCount-1]:=IntToStr(rik);
 Cells[4,RowCount-1]:=IntToStr(stazh);
 Cells[5,RowCount-1]:=FloatToStr(rozmpensii) ;
 if stat='Ч' then begin avgman:=avgman+rozmpensii;inc(iman);end else
  if stat='Ж' then begin avgwoman:=avgwoman+rozmpensii;inc(iwoman);end else
end;

Label17.Caption:='Середній розмір пенсії чоловіків складає: '+floattostr(avgman/iman);
Label18.Caption:='Середній розмір пенсії жінок складає: '+floattostr(avgwoman/iwoman);
end;
Угадал я?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.05.2015, 18:32   #7
Edvix
 
Регистрация: 04.05.2015
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Среднее арифметическое чего? Пенсии?
Ты можешь подробнее рассказывать что тебе нужно сделать?
мне же сложно понять что ты хочешь. Из того что я понял вот:

Код:
procedure TForm1.Button9Click(Sender: TObject);
var i,rik_1,iman,iwoman: integer;
avgman,avgwoman q: real;
begin 
avgman:=0; avgwoman:=0;  iman:=0; iwoman:=0;

rik_1:=StrToInt(Edit7.text);
i:=0;
reset(f); //Відкрити файл
seek(f,0); //Перевести покажчик на початок файла
//Підпис стовпців компонента StringGrid3
with StringGrid3 do
begin
RowCount:=2;
cells[0,0]:='Прізвище';
cells[1,0]:='Стать';
cells[2,0]:='Дата народження';
cells[3,0]:='Рік виходу на пенсію';
cells[4,0]:='Трудовий стаж';
cells[5,0]:='Розмір пенсії';
end;
StringGrid3.Show; //Компоненти видимі
//Пошук даних за критерієм і виведення результату на екран

while not eof (f) do begin
 read(f,z);
if rik_1<>z.rik then Continue;

with z,StringGrid3 do begin
 RowCount:=RowCount+1;
 Cells[0,RowCount-1]:=pib;
 Cells[1,RowCount-1]:=stat;
 Cells[2,RowCount-1]:=date;
 Cells[3,RowCount-1]:=IntToStr(rik);
 Cells[4,RowCount-1]:=IntToStr(stazh);
 Cells[5,RowCount-1]:=FloatToStr(rozmpensii) ;
 if stat='Ч' then begin avgman:=avgman+rozmpensii;inc(iman);end else
  if stat='Ж' then begin avgwoman:=avgwoman+rozmpensii;inc(iwoman);end else
end;

Label17.Caption:='Середній розмір пенсії чоловіків складає: '+floattostr(avgman/iman);
Label18.Caption:='Середній розмір пенсії жінок складає: '+floattostr(avgwoman/iwoman);
end;
Угадал я?
похоже,что угадал,но на строке вывода (Label17.Caption:='Середній розмір пенсії чоловіків складає: '+floattostr(avgman/iman);
Label18.Caption:='Середній розмір пенсії жінок складає: '+floattostr(avgwoman/iwoman)операция останавливается
Edvix вне форума Ответить с цитированием
Старый 04.05.2015, 18:36   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
операция останавливается
Деление на 0 что-ли? Смотри iwoman где и как счетчик формируется
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.05.2015, 18:39   #9
Edvix
 
Регистрация: 04.05.2015
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Деление на 0 что-ли? Смотри iwoman где и как счетчик формируется
inc считает кол-во строк,поэтому не на 0

"Среднее арифметическое чего? Пенсии?
Ты можешь подробнее рассказывать что тебе нужно сделать?
мне же сложно понять что ты хочешь. "
Задача- средняя пенсия мужчин и женщин за выбранный год

Последний раз редактировалось Аватар; 04.05.2015 в 18:47.
Edvix вне форума Ответить с цитированием
Старый 04.05.2015, 18:46   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
поэтому не на 0
Да я не против, что считает. А в отладке проверить если там stat='Ж' и
Код:
 if stat='Ч' then begin avgman:=avgman+rozmpensii;inc(iman);end else
  if stat='Ж' then begin avgwoman:=avgwoman+rozmpensii;inc(iwoman);end else
end;
сильно не нравится
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка в делфи is not a valid floating point value при нажатии на вкладку компонента Main.Menu Chhristophe Помощь студентам 2 16.01.2014 02:01
ошибка '' is not a valid floating point value(delphi 7) other2013 Помощь студентам 4 20.11.2013 00:59
Ошибка " is not a valid floating point value " (не правильная плавающая величина точки) kta87 Помощь студентам 5 27.09.2012 19:37
Ошибка: is not a valid floating point value Toshibo Общие вопросы Delphi 4 26.05.2012 22:33
Ошибка is not a valid floating point value Gul'ka Общие вопросы Delphi 2 05.06.2011 02:58