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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2011, 23:17   #1
Lifefine
Пользователь
 
Регистрация: 03.10.2008
Сообщений: 93
Радость Умножение 2-х матриц

Добрый вечер! Пожалуйста подскажите в чем проблема, имеется код:
(1-й вид,в таком порядке форматирования)
Код:
 for I := 1 to n do
     for j := 1 to m do
          a[i,j]:=StrToInt(StringGrid1.Cells[i,j]);
и
(2-й вид,в таком порядке форматирования)
Код:
for I := 1 to n do
     for j := 1 to m do a[i,j]:=StrToInt(StringGrid1.Cells[i,j]);
Эти коды аналогичны, но компилятор воспринимает по другому(((,что это может быть?
И вообще цикл i-й повторяется 1 раз, а вот j-й все правильно работает, как исправить проблему?
Lifefine вне форума Ответить с цитированием
Старый 21.03.2011, 23:26   #2
Lifefine
Пользователь
 
Регистрация: 03.10.2008
Сообщений: 93
По умолчанию



Цикл i-й повторился 1 раз, а j-й уже 2-ой раз, в чем проблема? (((
Lifefine вне форума Ответить с цитированием
Старый 22.03.2011, 00:16   #3
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

у тебя в какоито ячеике которую пытаеца цикл перевести в число, или пуст или есть какои то лишнии символ
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 22.03.2011, 00:26   #4
Lifefine
Пользователь
 
Регистрация: 03.10.2008
Сообщений: 93
По умолчанию

Я уже 10 раз проверяю и могу понять в чем проблема))), лишнего символа нет((
Lifefine вне форума Ответить с цитированием
Старый 22.03.2011, 00:32   #5
Lifefine
Пользователь
 
Регистрация: 03.10.2008
Сообщений: 93
По умолчанию

Вот проект, странно ведет себя программа(
Вложения
Тип файла: rar Умножение двух матриц.rar (262.3 Кб, 14 просмотров)
Lifefine вне форума Ответить с цитированием
Старый 22.03.2011, 00:41   #6
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

а ты что только массивы 2х2 собрался использовать?
и к тому же нумерация в стринг гриде идет не с 1 а с 0
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 22.03.2011, 10:14   #7
Lifefine
Пользователь
 
Регистрация: 03.10.2008
Сообщений: 93
По умолчанию

Да,для проверки хотел попробовать 2х2, спасибо за подсказку, я мало знаю, поэтому учусь, сейчас попробую изменить в программе, поставить 0 вместо 1.

Пробовал, бесполезно, когда доходит до этого:
Код:
a[i,j]:=strtoint(stringgrid1.cells[i,j]);
вылетает диалог "is not valid integer value ". Нашел в гугле код, но там почему-то начинается не с 0, а с 1.
Вот код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
type matrica=array[1..15,1..15] of real;
var a, b, c: matrica;
    i, j, m, n, l, k: byte;
    s: real;
begin
  n:=4;
  m:=4;
  l:=4;
  for i := 1 to n do
    for j := 1 to m do a[i,j]:=strtoint(stringgrid1.cells[i,j]);
  for i := 1 to n do
    for j := 1 to m do b[i,j]:=strtoint(stringgrid2.cells[i,j]);
.............................................................................
Lifefine вне форума Ответить с цитированием
Старый 23.03.2011, 09:54   #8
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

вылетает, "not valid integer value" гарантировано если у Вас строчка пустая или там не целое число (вариант - слишком большое число, > 2,15 млрд), как вариант пробуйте сделать проверку типа
if stringgrid1.cells[i,j]='' // пустая строка
then a[i,j]:=0
else a[i,j]:=strtoint(stringgrid1.cells[i,j]);

Нумерация с 1 а не 0 в коде , что Вы нашли гугле, немаловероятно из-а того что у грида есть фиксированный столбец и строка (оные как раз и имеют индекцсы 0, а все остальные, рабочие ячейки, соответственно имеют индексы от 1). Как Вам надо, так и делайте, только учитывайте эти тонкости.

Также советую проверить код на выход за пределы массива ячеек грида, помните, что количество ячеек это некое число Н , и цикл обычно делают от 0-го (начального) индекса до Н-1 (последнего) индекса.
phomm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
умножение матриц Rusya_00 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 06.01.2011 23:51
умножение матриц Mila Volkova Помощь студентам 3 25.12.2010 14:17
Умножение матриц Си Slame Помощь студентам 4 16.12.2010 14:34
Умножение матриц Alyonka_v Помощь студентам 2 18.08.2009 21:51