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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2014, 18:10   #1
radzivill
Пользователь
 
Регистрация: 10.07.2014
Сообщений: 12
По умолчанию среднее значение в SrtingGrid

Здравствуйте, очень нужна ваша помощь. Мне необходимо посчитать в одной ячейке StringGrid среднее значение цифр строки, а так же посчитать количество ячеек строки, в которых цифра 0. Заранее спасибо.
radzivill вне форума Ответить с цитированием
Старый 18.10.2014, 19:54   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Раскладка на цифры:
Код:
n:=Число;i:=0;s:=0;
while n<>0 do begin
 s:=s+n mod 10;
 n:=n div 10;
 inc(i);
end;
Результат:=s/i;
Цитата:
посчитать количество ячеек строки, в которых цифра 0
Неудачно ты выбрал компонент...
Код:
with StringGrid1.Rows[Такая-то строка] do begin
 n:=0; // Это кол-во нулевых
 for i:=0 to Count-1 do if StrToInt(trim(Strings[i]))=0 then inc(n);
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.10.2014, 20:53   #3
radzivill
Пользователь
 
Регистрация: 10.07.2014
Сообщений: 12
По умолчанию

Я вот касательно первой не пойму, во первых, это в стринггрид вставлять, или куда? а во вторых объясни пожалуйста, как этот код работает? как он определяет ячейку в которой будет результат и из какой строки брать числа? Понимаю, что компонент не удачный, но по другому боюсь вряд ли получится. Спасибо
radzivill вне форума Ответить с цитированием
Старый 18.10.2014, 21:14   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Я вот касательно первой не пойму, во первых, это в стринггрид вставлять, или куда?
Что вставлять?
Цитата:
как он определяет ячейку в которой будет результат и из какой строки брать числа?
Кто определяет? Я такого не писал.
Код:
Число:=StrToInt(StringGrid.cells[Колонка, строка]);
Это и будет говорить откуда брать число для цикла разворота на цифры.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.10.2014, 21:58   #5
radzivill
Пользователь
 
Регистрация: 10.07.2014
Сообщений: 12
По умолчанию

Прости, я совсем чайник в этом деле, ты меня окончательно запутал. В твоем первом сообщении вообще не было такой строчки, какую ты во втором написал. И я не очень понял в какое место программы вставлять этот код? К стринггриду?
radzivill вне форума Ответить с цитированием
Старый 18.10.2014, 22:23   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Пф.... Билдер. Не заметил.
Значит разворот будет таким:
Код:
int n=StrToInt(StringGrid->Cells[StringGrid->Col][StringGrid->Row]);
int i=0;
double s=0;
for(;n;n/=10,i++) s+=n%10; 
s/=i;
ShowMessage(FloatToStr(s))
Можешь это поместить в клик какой нибудь кнопки.
Выберешь ячейку и нажмешь на кнопку - получишь результат.

И мой совет: Если не знаешь как правильно работать с гридом, то лучше эту задачу решай в консольном приложении используя простые массивы, а не делай проект с формой. Ранно тебе еще.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.10.2014, 17:31   #7
radzivill
Пользователь
 
Регистрация: 10.07.2014
Сообщений: 12
По умолчанию

Перевел как "не является допустимым целым значением", не пойму, из за чего это?
Изображения
Тип файла: png Снимок.PNG (25.1 Кб, 99 просмотров)
radzivill вне форума Ответить с цитированием
Старый 19.10.2014, 18:03   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Из-за того что в ячейке кроме цифр что-то еще вписано.
Проверяется так:
Код:
int n;
if(TryStrToInt(StringGrid->Cells[StringGrid->Col][StringGrid->Row],n)){
 ...
} else {
 ShowMessage(StringGrid->Cells[StringGrid->Col][StringGrid->Row]+" Не число");
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.10.2014, 18:52   #9
radzivill
Пользователь
 
Регистрация: 10.07.2014
Сообщений: 12
По умолчанию

теперь понятно почему ошибка, но программа вычисляет ср.арифметическое в ячейке, а нужно из всей строки: типо первая ячейка + вторя делить на количество. И еще хотелось бы, что бы результат записывался в выделенную ячейку, а не выдавался сообщением.

Последний раз редактировалось radzivill; 19.10.2014 в 18:54.
radzivill вне форума Ответить с цитированием
Старый 19.10.2014, 19:35   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ниче не понял, но: Оформи код в функцию, принимающую string, возвращающую Double. Что-то типа:
Код:
double summa(string s){
 double r=0;
 тут разворачиваем строку в число, суммируем цифры в r и...
 return r
}
А в нее уже в цикле передавай этот StringGrid->Cells[StringGrid->Col][StringGrid->Row]
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
среднее значение KaZaaM SQL, базы данных 2 01.06.2012 16:18
Среднее значение tanyuxxxa Помощь студентам 4 03.03.2012 14:08
Среднее значение xxxmorgan БД в Delphi 2 27.11.2010 01:31
Среднее значение Storm.7117 Microsoft Office Excel 3 13.01.2010 15:09
среднее значение tonic Microsoft Office Excel 1 04.01.2008 00:20