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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2011, 22:02   #1
iKarma
Кипучий чайник
Пользователь
 
Регистрация: 17.10.2011
Сообщений: 55
По умолчанию Перевод из StringGrid в матрицу

Проблема состоит в том, что не могу перевести заданные значения из StringGrid в матрицу и не работает проверка на заполнение StringGrid. Вот мой код:
Код:
procedure TMainForm.ButtonRunClick(Sender: TObject);
var
  M:array[1..100,1..2]of Integer;
  i,j,x,y,yx,xtotal,ytotal,yxtotal:Integer;
  E:Exception;
begin
    MemoLog.Lines.Add('Начало рассчётов...');

    //проверка на корректный ввод
    for i:=1 to n do
      for j:=1 to 2 do
        if StringGridData.Cells[i,j]='' then
          begin
            ShowMessage('Вы не ввели данные в таблицу! Проверьте ввод данных!');
            Exit;
          end;

    //заполняем матрицу из таблицы
    for i:=1 to n do
      for j:=1 to 2 do
        M[i,j]:=StrToInt(StringGridData.Cells[i,j]);

    //подсчёт суммы первого столбца
    xtotal:=0;
    for i:=1 to n do
      xtotal:=x+M[i,1];
    ShowMessage(IntToStr(xtotal));

    //подсчёт суммы второго столбца
    ytotal:=0;
    for i:=1 to n do
      ytotal:=x+M[i,2];
    ShowMessage(IntToStr(ytotal));

    //подсчёт суммы элементов двух перемноженных столбцов


    //подсчёт среднего значения первого столбца


    //подсчёт среднего значения второго столбца


    //подсчёт среднего значения элементов двух перемноженных столбцов


    //расчёт дисперсии первого столбца


    //расчёт дисперсии второго столбца

    
    MemoLog.Lines.Add('Расчёты окончены');
 
  end;
end;
Комментарии к коду: StringGridData - это и есть StringGrid, n - количество строк матрицы (глобальная переменная), M - матрица, в которую нужно перевести StringGrid. У меня задаётся любое количество строк матрицы, а столбцов всегда 2. по поводу комментариев - это пока что ещё не написанные строки))) Помогите пожалуйста =)
iKarma вне форума Ответить с цитированием
Старый 22.10.2011, 22:20   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Ячейки стринггрида нумеруются от 0, а Вы циклы делаете от 1 и эти индексы используете для грида, переведите и циклы и матрицу на 0 индексацию чтобы не испытывать проблем, альтернативно можно сделать гриду фикс строку и столбец, но это менее удобно
phomm вне форума Ответить с цитированием
Старый 22.10.2011, 22:26   #3
iKarma
Кипучий чайник
Пользователь
 
Регистрация: 17.10.2011
Сообщений: 55
По умолчанию

Цитата:
Сообщение от phomm Посмотреть сообщение
Ячейки стринггрида нумеруются от 0, а Вы циклы делаете от 1 и эти индексы используете для грида, переведите и циклы и матрицу на 0 индексацию чтобы не испытывать проблем, альтернативно можно сделать гриду фикс строку и столбец, но это менее удобно
Те ячейки у меня заняты под написание базовой информации для таблицы, то есть название столбцов и строк.
iKarma вне форума Ответить с цитированием
Старый 22.10.2011, 22:45   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

В чём же проявляется проблема "не могу перевести заданные значения из StringGrid в матрицу и не работает проверка на заполнение StringGrid" ? Может, конечно, вы везде , где можно, путаете строки и столбцы...
могу ещё добавить, что в расчете суммы вы неверно пишете :
Код:
xtotal:=x+M[i,1];
а надо бы
Код:
xtotal:=xtotal+M[i,1];

Последний раз редактировалось phomm; 22.10.2011 в 22:48.
phomm вне форума Ответить с цитированием
Старый 22.10.2011, 23:08   #5
iKarma
Кипучий чайник
Пользователь
 
Регистрация: 17.10.2011
Сообщений: 55
По умолчанию

Цитата:
Сообщение от phomm Посмотреть сообщение
В чём же проявляется проблема "не могу перевести заданные значения из StringGrid в матрицу и не работает проверка на заполнение StringGrid" ? Может, конечно, вы везде , где можно, путаете строки и столбцы...
могу ещё добавить, что в расчете суммы вы неверно пишете :
Код:
xtotal:=x+M[i,1];
а надо бы
Код:
xtotal:=xtotal+M[i,1];
А можете подсказать где я и что путаю пожалуйста)
iKarma вне форума Ответить с цитированием
Старый 22.10.2011, 23:23   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
не работает проверка на заполнение StringGrid.
Код:
    for i:=1 to n do
      for j:=1 to 2 do 
        if not TryStrToInt(StringGridData.Cells[i,j],M[i,j]) then          begin
            ShowMessage('Вы не ввели данные в таблицу! Проверьте ввод данных!');
            Exit;
          end;
И можешь ту проверку которая сейчас у тебя убрать - она лишняя.
Цитата:
где я и что путаю пожалуйста)
Ты суммируешь? Тогда тебе сказали что просто переменные поставил не те.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2011, 09:15   #7
iKarma
Кипучий чайник
Пользователь
 
Регистрация: 17.10.2011
Сообщений: 55
По умолчанию

Спасибо, опытным путём всё понял =)

Код:
for i:=1 to 2 do
      for j:=1 to n do
цикл таким должен быть

Последний раз редактировалось iKarma; 23.10.2011 в 09:34.
iKarma вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не хочет работать перевод из Edit в StringGrid Лия92 Общие вопросы C/C++ 2 01.12.2010 19:23
перевод из StringGrid в Excel в заранее заготовленую таблицу SPD Общие вопросы Delphi 3 25.08.2010 11:29
как умножить матрицу(3на4) на матрицу(4на3) в делфи? Ромка678 Помощь студентам 1 28.11.2009 08:01
Объясните пожалуйста как можно считать значения в этом файле в вектор, 4 -ую матрицу, 6-ую матрицу ciaonataha Помощь студентам 1 30.03.2009 20:57
Перевод строки в матрицу Chepa Общие вопросы Delphi 14 28.01.2007 00:13