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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2013, 19:42   #1
Zaraaa
Пользователь
 
Регистрация: 19.04.2013
Сообщений: 83
По умолчанию массивы

помогите пжл: дана матрица А(n,n); начало правильное, а вот в чем проблема:
не правильно считает "сумму модулей цифр четных элементов",
например,матрица (2х2)
23 -24
27 18
четн элементы это 18 и -24
должно получится так - сумма модулей цифр четн элементов: ((1+8)+(2+4))=15, но считает неправильно(
ПОМОГИТЕ ПОЖАЛУУУЙСТА((((
Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;

type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Label1: TLabel;
StringGrid2: TStringGrid;
Label5: TLabel;
Label3: TLabel;
Label2: TLabel;
Label4: TLabel;
Label6: TLabel;
Label7: TLabel;
procedure FormCreate(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
Var a:array[1..10,1..10] of integer;
temp:integer;
summ,i,j,m,N,max:integer;
SummChet,SummNechet:integer;
begin
N:=StrToInt(InputBox('ввод','N= ',''));
StringGrid1.RowCount:=n;
StringGrid1.ColCount:=n;
StringGrid2.RowCount:=n;
StringGrid2.ColCount:=n;
summ:=0;
randomize;
max:=0;
for i:=1 to N do begin
for j:=1 to N do begin
a[j,i]:=(random(100)-50);
StringGrid1.cells[j-1,i-1]:=inttostr(A[j,i]);
summ:=summ+abs(a[j,i]);
if summ>max then max:=summ;
end;
Label1.Caption:=Label1.Caption+inttostr(i)+''+'cтрока= '+''+floattostr(summ)+ ' ';
summ:=0
end;
Label2.Caption:=Label2.Caption+'Максимальная сумма строки= '+inttostr(max)+ ' ';
SummChet := 0;
for i := 1 to n do
for j := 1 to n do
if (a[j, i] mod 2 = 0) then
inc(SummChet, a[j, i]);
Label3.Caption:=Label3.Caption+'Сумма четных элементов= '+inttostr(SummChet);

{ВОТ ОШИБКА В ЭТОЙ ЧАСТИ
SummChet := 0; 
for i := 1 to n do
for j := 1 to n do
if (a[j, i] mod 2 = 0) then
begin
temp:=abs(a[i,j]);
while (temp<>0)do
begin
SummChet:= SummChet+(temp mod 10);
temp:=temp div 10;
end ;
end;
Label4.Caption:=Label4.Caption+'Сумма цифр четных элементов: '+inttostr(SummChet); }


for j:=1 to N do
begin
temp:=a[j,1];
a[j,1]:=a[j,N];
a[j,N]:=temp;
end;
for i:=1 to N do
for j:=1 to N do
StringGrid2.cells[j-1,i-1]:=inttostr(A[j,i]);

end;
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.
Вложения
Тип файла: rar ДЕЛФИ.rar (192.4 Кб, 4 просмотров)

Последний раз редактировалось Serge_Bliznykov; 18.10.2013 в 09:02.
Zaraaa вне форума Ответить с цитированием
Старый 17.10.2013, 23:32   #2
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

Код:
SummChet:= SummChet+(temp mod 10);
Зачем?
Dozent вне форума Ответить с цитированием
Старый 18.10.2013, 09:04   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Dozent Посмотреть сообщение
Код:
SummChet:= SummChet+(temp mod 10);
Зачем?
что найти сумму ЦИФР чётного числа.


Zaraaa
да. есть ошибка!
Цитата:
Код:
 for i := 1 to n do
    for j := 1 to n do
      if ((a[j, i] mod 2) = 0) then
      begin
        temp := abs(a[i, j]);
теперь заметно, где Вы накосячили?!


p.s. а зачем у Вас этот код закомментирован?!

p.p.s. А ещё ВАЖНО!! Вы знаете, что в обычном массиве ОБЫЧНО сначала указывается индекс строки, потом - индекс столбца.
например, A[2, 5] это элемент 2-й строки и 5-го столбца.
А в этом извращенном StringGrid всё НАОБОРОТ - сначала указывается номер СТОЛБЦА, а потом- номер СТРОКИ.
т.е. StringGrid1.Cells(2,5) - это элемент 5-й строки и 2-го столбца!!! я не вижу, чтобы Вы у себя в коде это учитывали

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерные массивы, двумерные массивы, строки Sand093 C++ Builder 11 20.05.2012 21:48
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры nuriyat Помощь студентам 1 21.01.2012 16:16
Двумерные массивы(массивы указателей на массивы) krytishka99 Помощь студентам 1 29.12.2011 19:51
указатели на массивы и массивы указателей blacktener Общие вопросы C/C++ 16 13.06.2011 20:45
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12