Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 03.04.2014
Сообщений: 12

Корректно взять числа со StringGrid

09.03.2015, 16:57. Показов 2037. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Не могу понять почему неправильно считает программа. Помогите пожалуйста.
Код
C++
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
//---------------------------------------------------------------------------
 
#include <math.h>
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 const int c=3,r=3;
 double mas[r][c];
 int i,j;
 for (j=1;j<=r;j++) 
 {
  for (i=1;i<=c;i++)
  {
   if (StringGrid1->Cells[j][i] == "")
    { ShowMessage("Çàïîëíèòå âñå ïîëÿ ìàòðèöû");
      return;
    }
  }
 }
 float a,b;
 float sum;
 for (j=1;j<=3;j++)
 {
  sum=sum+StrToFloat(StringGrid1->Cells[j][j])+StrToFloat(StringGrid1->Cells[3-j+1][j]); //Вот тут все начинается. 
 }
 ShowMessage(sum);    // На выходе получается просто дикое значение 5,6*10^33.  В чем проблема - не пойму.
}
//---------------------------------------------------------------------------
Добавлено через 8 минут
При постановке кавычек выдает ошибку.

---------------------------
'StringGrid1->Cells[j][j]' is not a valid floating point value.
---------------------------

Но пустых значений нет. И без точек и прочего.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.03.2015, 16:57
Ответы с готовыми решениями:

Есть 2 StringGrid в С++ Builder, и нужно взять оттуда данные и заполнить ими 3 StringGrid, как бы сложить 2 та
Код C++ void __fastcall TForm1::Button1Click(TObject *Sender) { int i,j; float p,p1; for (i = 0; i &lt; 48; i++) { ...

Поиск по stringgrid не работает корректно на всем множестве строк
Не могу понять почему поиск работает не для всех классов. Вроде все верно, но в &quot;Бытовой технике&quot; он все время пишет, что запись...

Отрицательные числа взять в квадрат, а положительные числа взять в корень
Даны a, b, c, d. отрицательные числа взять в квадрат, а положительные числа взять в корень

11
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33407 / 21517 / 8236
Регистрация: 22.10.2011
Сообщений: 36,917
Записей в блоге: 12
09.03.2015, 17:00
Скриншот окна приложения можно посмотреть? Есть подозрение, что ты забыл, что ячейки StringGrid-а индексируются с 0, а не с 1-цы... И, соответственно, при подсчете просто вылезаешь за видимую часть грида...
1
0 / 0 / 0
Регистрация: 03.04.2014
Сообщений: 12
09.03.2015, 17:08  [ТС]
Сейчас сделаю. Но не думаю, что в этом ошибка. При проверке на пустые поля компилятор неправильно рассчитывал когда я начинал с 0. Сейчас попробую с 0.
C++
1
2
3
4
5
6
7
8
9
10
 for (j=1;j<=r;j++) 
 {
  for (i=1;i<=c;i++)
  {
   if (StringGrid1->Cells[j][i] == "")
    { ShowMessage("Г‡Г*ïîëГ*ГЁГІГҐ ГўГ±ГҐ ïîëÿ Г¬Г*òðèöû");
      return;
    }
  }
 }
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
09.03.2015, 17:11
C++
1
float sum = 0;
Не?
1
0 / 0 / 0
Регистрация: 03.04.2014
Сообщений: 12
09.03.2015, 17:11  [ТС]
Прикрепил скрин.
Миниатюры
Корректно взять числа со StringGrid  
0
0 / 0 / 0
Регистрация: 03.04.2014
Сообщений: 12
09.03.2015, 17:22  [ТС]
Увы. Но
C++
1
float sum = 0;
Не помогло.

Добавлено через 3 минуты
С 0 тоже не помогло. Выдал туже ошибку.
'StringGrid1->Cells[j][j]' is not a valid floating point value.
Добавлено через 3 минуты
Ячейки заполнены все 100%.
Т.к идет проверка
C++
1
2
3
4
5
6
7
8
9
10
for (j=1;j<=r;j++) 
 {
  for (i=1;i<=c;i++)
  {
   if (StringGrid1->Cells[j][i] == "")
    { ShowMessage("Заполните все поля");
      return;
    }
  }
 }
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
09.03.2015, 17:24
Цитата Сообщение от Барбазяка Посмотреть сообщение
StringGrid1->Cells[j][j]' is not a valid floating point value.
Значит ячейки неверно заполнены. Дробный разделитель точка или запятая?
1
0 / 0 / 0
Регистрация: 03.04.2014
Сообщений: 12
09.03.2015, 17:25  [ТС]
Я не идиот. Заполняю для теста только простыми числами (например единичками).
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
09.03.2015, 17:26
Лучший ответ Сообщение было отмечено Барбазяка как решение

Решение

а float sum = 0; 'то чтоб не было "дикого значения на выходе"

Добавлено через 30 секунд
Цитата Сообщение от Барбазяка Посмотреть сообщение
Заполняю для теста только простыми числами (например единичками).
У меня твой код прекрасно работает
1
0 / 0 / 0
Регистрация: 03.04.2014
Сообщений: 12
09.03.2015, 17:28  [ТС]
Хм. Какую версию компилятора используете?
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
09.03.2015, 17:30
xe7

Добавлено через 46 секунд
но тут код простой, думаю, компилятор непричем
1
0 / 0 / 0
Регистрация: 03.04.2014
Сообщений: 12
09.03.2015, 17:38  [ТС]
Вернул код к начальному виду. Поставил
C++
1
float sum = 0;
Кавычек не ставил. Заработало. Больше спасибо.

Добавлено через 4 минуты
Если кому будет нужно, то вот код.
C++
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
//---------------------------------------------------------------------------
 
#include <math.h>
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 const int c=3,r=3;
 double mas[r][c];
 int i,j;
 for (j=1;j<=r;j++) //öèêë ïåðåáîðà ñòðîê ìàññèâà
 {
  for (i=1;i<=c;i++)
  {
   if (StringGrid1->Cells[j][i] == "")
    { ShowMessage("Заполните пустое(ые) поля");
      return;
    }
  }
 }
 float sum = 0;
 for (j=1;j<=3;j++)
 {
  sum=sum+StrToFloat(StringGrid1->Cells[j][j])+StrToFloat(StringGrid1->Cells[3-j+1][j]);
 }
 Edit1->Text=FloatToStr(ceil(sum*100)/100);
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::StringGrid1KeyPress(TObject *Sender, char &Key)
{
 if ((Key>='0' && Key<='9')||(Key==',')||(Key==(char)8)) {}
 else Key=0;
}
//---------------------------------------------------------------------------
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.03.2015, 17:38
Помогаю со студенческими работами здесь

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

Не корректно выводит числа массива
Программа сортирует парные числа по возрастанию, а не парные по убыванию Но проблема в том что в консоле выводит числа типа -84215......

Stringgrid: числа, кратные 3, заменить на результат деления числа на 3
Есть приложение которое считывает данные с файла в stringgrid (файл с целыми числами). Нужно чтоб во 2 stringgrid числа делящиеся на 3,...

Не во всех IDE корректно сравнивает вещественные числа?
Язык Си. Не могу понять почему в двух средах (C++Builder 6 и BDS 2006) сравнение вещественных чисел не удаётся... #include...

Delphi 7 Stringgrid Нужно сделать цикл для заполнения Stringgrid данными из другого Stringgrid
Нужно чтобы из Stringgrid1 данные переносились в Stringgrid2 Но ТОЛЬКО ПО УСЛОВИЮ Таблицы Stringgrid2 На рис всё показано. За работающий...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru