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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2014, 19:26   #1
hrustnik
 
Регистрация: 15.06.2014
Сообщений: 8
По умолчанию delphi. Вычислить сумму элементов каждой строки матрицы А (n x m), определить наименьшее значение этих сумм и номер (первокурсник)

Всем привет, у меня пару ошибок и нужна ваша помощь
1.Вычислить сумму элементов каждой строки матрицы А (n x m), определить наименьшее значение этих сумм и номер соответствующей строки.
радиобатон1- сам вожу
радиобатон2- рандом

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 sum:=0;
 memo1.lines.clear;
begin
with StringGrid1 do
  for i:=FixedCols to ColCount-1 do
  for j:=FixedRows to RowCount-1 do
    Cells[i, j]:='';
end;


if RadioButton1.Checked=true then
begin
n:=strtoint(Edit1.Text);
n1:=strtoint(Edit2.Text);
if (n<2) or (n>10) or (n1<2) or (n1>10) then
begin
    Showmessage('Кол-во строк и столбцов не больше 10 и не меньше 2');
    exit;
end;
for i:=0 to n do begin
for j:=0 to n1 do begin
x[i,j]:= strtoint(StringGrid1.Cells[i,j]);
begin
  sum:= sum + x[i,j];
  Memo1.Lines.Add('Сумма элементов '+inttostr(i)+'-ой строки = '+inttostr(sum));
end;
end;
end;
end;


if RadioButton2.Checked=true then
begin
randomize;
n:=random(8)+ 2;
n1:=random(8)+ 2;
Edit1.Text:=inttostr(n+1);
Edit2.Text:=inttostr(n1+1);

for i:=0 to n do begin
for j:=0 to n1 do begin
x[i+1,j+1]:= random(10)+2;
StringGrid1.Cells[j,i]:= FormatFloat('0.00',x[i+1,j+1]);
begin
  sum:= sum + x[i,j];
  Memo1.Lines.Add('Сумма элементов '+inttostr(i)+'-ой строки = '+inttostr(sum));
end;
end;
1. когда работаем рандом то в memo идут неправильные данные
2. самому вообще не ввести, пишет ошибку
буду благодарен

Последний раз редактировалось Stilet; 21.06.2014 в 20:12.
hrustnik вне форума Ответить с цитированием
Старый 21.06.2014, 20:17   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
когда работаем рандом то в memo идут неправильные данные
Не удивительно. Ты сумму не обнуляешь.
Код:
if RadioButton2.Checked then
begin
randomize;
n:=random(8)+ 2;
n1:=random(8)+ 2;
Edit1.Text:=inttostr(n+1);
Edit2.Text:=inttostr(n1+1);
With StringGrid1 do begin
 RowCount:=n+1;ColCount:=n1+1;
 for i:=0 to n do begin
  sum:=0;
  for j:=0 to n1 do begin
   x[i+1,j+1]:= random(10)+2;
   Cells[j,i]:= FormatFloat('0.00',x[i+1,j+1]);
   sum:= sum + x[i,j];
  end;
  Memo1.Lines.Add('Сумма элементов '+inttostr(i)+'-ой строки = '+inttostr(sum));
 end;
end;
Цитата:
самому вообще не ввести, пишет ошибку
Которую угадывать должны мы?
Ладно. "Ошибка. 404 Homo sappiens not found". Угадал?
Цитата:
Cells[j,i]:= FormatFloat('0.00',x[i+1,j+1]);
А можно поинтересоваться зачем тебе выводить целые числа в виде вещественных?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.06.2014, 20:41   #3
hrustnik
 
Регистрация: 15.06.2014
Сообщений: 8
По умолчанию

Цитата:
if RadioButton2.Checked then
begin
randomize;
n:=random(8)+ 2;
n1:=random(8)+ 2;
Edit1.Text:=inttostr(n+1);
Edit2.Text:=inttostr(n1+1);
With StringGrid1 do begin
RowCount:=n+1;ColCount:=n1+1;
for i:=0 to n do begin
sum:=0;
for j:=0 to n1 do begin
x[i+1,j+1]:= random(10)+2;
Cells[j,i]:= FormatFloat('0.00',x[i+1,j+1]);
sum:= sum + x[i,j];
end;
Memo1.Lines.Add('Сумма элементов '+inttostr(i)+'-ой строки = '+inttostr(sum));
end;
end;


Цитата:
Которую угадывать должны мы?
Ладно. "Ошибка. 404 Homo sappiens not found". Угадал?
неа,
Изображения
Тип файла: jpg del1.jpg (35.8 Кб, 187 просмотров)
Тип файла: jpg del2.jpg (5.3 Кб, 87 просмотров)
hrustnik вне форума Ответить с цитированием
Старый 21.06.2014, 21:02   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Напиши:
Код:
sum:= sum + x[i+1,j+1];
Ошибка твоя говорит о том что ты в ячейку не ввел число.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.06.2014, 21:09   #5
hrustnik
 
Регистрация: 15.06.2014
Сообщений: 8
По умолчанию

все равно та же ошибка (
hrustnik вне форума Ответить с цитированием
Старый 21.06.2014, 22:36   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
все равно та же ошибка (
Код:
x[i,j]:= strtoint(StringGrid1.Cells[i,j]);
           |
           |
           v
x[i,j]:= strtoint(StringGrid1.Cells[j,i]);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.06.2014, 23:22   #7
hrustnik
 
Регистрация: 15.06.2014
Сообщений: 8
По умолчанию

да блин, все равно ошибка
Код:
begin
n:=strtoint(Edit1.Text);
n1:=strtoint(Edit2.Text);
if (n<2) or (n>10) or (n1<2) or (n1>10) then
begin
    Showmessage('Кол-во строк и столбцов не больше 10 и не меньше 2');
    exit;
end;


With StringGrid1 do begin
 RowCount:=n+1;
 ColCount:=n1+1;
 for i:=0 to n do begin
  sum:=0;
  for j:=0 to n1 do begin
   x[i+1,j+1]:= strtoint(StringGrid1.Cells[j,i]);
   Cells[j,i]:= FormatFloat('0.00',x[i+1,j+1]);
   sum:= sum + x[i+1,j+1];
  end;
  Memo1.Lines.Add('Сумма элементов '+inttostr(i+1)+'-ой строки = '+inttostr(sum));
 end;
end;
end;
hrustnik вне форума Ответить с цитированием
Старый 21.06.2014, 23:26   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А зачем RowCount и ColCount переопределяешь перед чтением из грида? И вообще он на этот момент заполонен нужной информацией?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.06.2014, 23:32   #9
hrustnik
 
Регистрация: 15.06.2014
Сообщений: 8
По умолчанию

"А зачем RowCount и ColCount переопределяешь перед чтением из грида?"
эту часть сообщения не понял
а про заполнение, то да, сначала заполняю матрицу, пишу размеры, такаю РАСЧЕТ и выползает ошибка
hrustnik вне форума Ответить с цитированием
Старый 21.06.2014, 23:50   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Не нравится переопределяешь, тогда зачем присваиваешь этим свойствам n+1 и n1+1?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить сумму элементов каждой строки матрицы A(NxM) , определить наименьшее значение этих сумм и номер соответствующей строки merilyn Помощь студентам 3 14.12.2013 11:39
Определить и напечатать сумму элементов,превышающих заданную величину С-2,5 для каждой строки заданной матрицы А. Екатерина 1994 Паскаль, Turbo Pascal, PascalABC.NET 2 29.05.2012 14:07
вычислить сумму элементов каждой строки матрицы saint13 Помощь студентам 0 04.05.2010 20:34
Вычислить среднеарифметическое значение элементов для каждой строки матрицы в Delphi Any13 Помощь студентам 3 09.03.2010 18:29