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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2014, 01:09   #1
C++++
Пользователь
 
Регистрация: 08.01.2014
Сообщений: 22
По умолчанию Матрица

Дана матрица размерности N на M. Найти произведение минимального элемента первого столбца и максимального элемента последней строки и прибавить его к элементам первой строки. Код:
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
	int i,j,min,max,Pr;
	min=999;
	for(j=0;j<SGBeg->ColCount;j++)
	  {
		 if(SGBeg->Cells[i][0]<min)
		 min=StrToInt(SGBeg->Cells[i][0]);
	  }
		max=-999;
		for(i=0;i<SGBeg->RowCount;i++)
		{
		   if(SGBeg->Cells[-1][j]>max)
		   max=StrToInt(SGBeg->Cells[-1][j]);
		 }
		 Pr=min*max;
		 Panel1->Caption=IntToStr(Pr);
		 SGBeg->Cells[i][j]=SGEnd->Cells[i][j];
		 for(j=0;j<SGBeg->ColCount;j++)
		   SGEnd->Cells[0][j]=IntToStr(StrToInt(SGEnd->Cells[0][j])+Pr);
}
Выдаёт следующее сообщение:
Is not a valid integer value
Как исправить кто-нибудь знает?

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

Я знаю. У тебя в ячейках грида стоит не число. Или среди цифр есть другие знаки, которые не могут быть идентифицированы как число.
Вывод: Вводить правильно числа.
Цитата:
for(j=0;j<SGBeg->ColCount;j++)
Фиксированные колонки и строки есть? Если да то начинать цикл нужно не с нуля а с SGBeg->FixedRows-1 и SGBeg->FixedCols-1 соответственно.
И еще:
StrToInt(SGBeg->Cells[...]) рекомндую заменить на
Код:
int v;
if(!TryStrToInt(v,SGBeg->Cells[...]){
  ShowMessage(Тут сообщение о том что в такой-то ячейке введено не число)
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.06.2014, 08:18   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, в этом идиотском TStringGrid всё наоборот, в методе Cells сначала указывается индекс столбца, а потом, вторым параметром, индекс строки

во-вторых, это что за ужас?!
Цитата:
Код:
for(j=0;j<SGBeg->ColCount;j++)
	  {
		 if(SGBeg->Cells[i][0]<min)
		 min=StrToInt(SGBeg->Cells[i][0]);
	  }
цикл for по j, но внутри цикла используется i, которая вообще не определена, в ней мусор. Хорошие современные компиляторы подобный код вообще не откомпилируют!.

в-третьих, Вы совершенно неправильно ищите минимум/максимум. Зачем Вам константа 999 или -999
а если в гриде, внезапно, числа больше тысячи? всё, нужно переписывать программу?!
есть очень простой алгоритм поиска минимального/максимального значения: в качестве начального значения минимума/максимума берём ПЕРВЫЙ элемент массива. Т.е. взяли первый элемент столбца и считаем, что он МИНИМАЛЬНЫЙ элемент в этом столбце, потом в цикле перебираем оставшиеся элементы столбца, если какой-то из них МЕНЬШЕ минимального, то берём их в качестве минимума. Согласитесь, что это ничем не сложнее вашего 999, а требования на ограничения значениий сразу снимаются.


ну и со всем сказаннным Виталием Stilet полностью согласен.

Успехов!

Последний раз редактировалось Serge_Bliznykov; 18.06.2014 в 08:23.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль. Матрица NxN -> текстовый файл -> Матрица NxN - найти max по диагоналям -> типизированный файл Лунатик13 Помощь студентам 1 20.02.2012 15:54
Непонятки с DirectX (матрица поворота, камера, матрица проекции) ROD Общие вопросы C/C++ 2 17.09.2010 17:00
Матрица Xeon1024 Microsoft Office Excel 2 30.05.2010 01:58
матрица Рокси Помощь студентам 6 29.05.2010 19:58
TurboPascal: граф, матрица смежности и матрица инцидентности. ulala Помощь студентам 0 02.12.2009 10:11