Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
Белая и пушистая
22 / 22 / 1
Регистрация: 01.09.2009
Сообщений: 452
1

Найти нечетные элементы в матрице

01.11.2009, 10:05. Показов 3137. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите плз, как найти нечетные элементы в двумерном массиве?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2009, 10:05
Ответы с готовыми решениями:

В матрице уплотнить нечетные элементы
В матрице А(N,N) уплотнить все нечетные элементы в направлении ука-занном на рисунке. Остальные...

Поменять местами в матрице четные и нечетные элементы
напишите прогу ,плиз..жизневажно))спс

В матрице программа обнуляет все нечетные элементы в четных строках
Программа использует шаблоны для вариантов матрицы с целочисленными и с вещественными элементами....

Как в матрице 10*10 удалить все нечетные элементы массива, расположенные левее максимального
Нужно в матрице 10*10 Удалить все нечетные элементы массива, расположенные левее максимального....

13
Добрый самаритянин
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
01.11.2009, 10:22 2
Pascal
1
2
3
4
for i:=1 to... do
for j:=1 to... do
if a[i,j] mod 2 <>0 then
writeln('He4etHbIu');
1
21 / 21 / 3
Регистрация: 05.08.2009
Сообщений: 243
01.11.2009, 12:15 3
А если подсчитать то так
Delphi
1
2
3
4
5
6
7
8
9
var a: integer;
 
a=0;
for i:=1 to... do
for j:=1 to... do
if a[i,j] mod 2<>0 then 
begin
   Inc(a);
end;
В переменной "a" будет храниться число, количество нечётных элементов в массиве.
1
Белая и пушистая
22 / 22 / 1
Регистрация: 01.09.2009
Сообщений: 452
01.11.2009, 15:50  [ТС] 4
if a[i,j] mod 2<>0 then
что-то он ругается на эту запись - operator not applicable to this operand type

Добавлено через 1 минуту
вот короче, только чур не ржать, я нуб в этом
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm2.Button1Click(Sender: TObject);
Var a:array of array of real;
    nech,n,m,i,j:integer;
    
begin
n:=StrToInt(InputBox('Ìàññèâ','Ââåäèòå êîë-âî ñòðîê','5'));
m:=StrToInt(InputBox('Ìàññèâ','Ââåäèòå êîë-âî ñòîëáöîâ','5'));
SetLength(a,n,m);
for i:=0 to n-1 do
 for j:=0 to m-1 do
 a[i,j]:=StrToFloat(InputBox('Ìàññèâ','Ââåäèòå ('+IntToStr(i+1)+','+IntToStr(j+1)+') ýëåìåíò','0'));
 nech:=0;
 if a[i,j] mod 2<>0 then nech:=nech+1;
Label5.Caption:=FloatToStr(nech);
 Finalize(a);
end;
 
end.
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
01.11.2009, 16:00 5
Suslichek, Ну зачем массив вещественных чисел, если ищем нечетные? Ведь нечетными бывают только целые числа. Напишите a:array of array of integer;
1
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
01.11.2009, 16:01 6
Suslichek,

1. nech надо сделать integer;
2. ты заполняешь массив... а потом, что за обращение a[i,j] ? У тебя же i и j не проходят по массиву.

попробуй так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure TForm2.Button1Click(Sender: TObject);
Var a:array of array of real;
    n,m,i,j:integer;
    nech:real;
begin
n:=StrToInt(InputBox('Массив','Введите кол-во строк','5'));
m:=StrToInt(InputBox('Массив','Введите кол-во столбцов','5'));
SetLength(a,n,m);
 
for i:=0 to n-1 do
    for j:=0 to m-1 do
        a[i,j]:=StrToFloat(InputBox('Массив','Введите ('+IntToStr(i+1)+','+IntToStr(j+1)+') элемент','0'));
 
nech:=0;
 
for i:=0 to n-1 do
    for j:=0 to m-1 do
        if a[i,j] mod 2 <> 0 then nech:=nech+1;
 
Label5.Caption:=FloatToStr(nech);
Finalize(a);
end;
1
Белая и пушистая
22 / 22 / 1
Регистрация: 01.09.2009
Сообщений: 452
01.11.2009, 16:08  [ТС] 7
ругается
0
15 / 15 / 0
Регистрация: 18.05.2009
Сообщений: 52
01.11.2009, 16:14 8
попробуй через StringGrid
насчёт Mod в Real .... мод это целочисленное деление, т.е. работать может не правильно
12.3451(вот это число он может посчитать как чётное)

думаю будет проще сделать, найти последнее число и если оно равно 0,2,4,6,8 - тогда число чётно ....
1
Белая и пушистая
22 / 22 / 1
Регистрация: 01.09.2009
Сообщений: 452
01.11.2009, 16:43  [ТС] 9
и правда ругается на это
) только было бы проще, если бы я знала как это написать

Добавлено через 19 минут
По щелчку на кнопке в таблицу выводится двумерный массив и высчитывается кол-во нечетных элементов массива.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure TForm1.FormCreate(Sender: TObject);
Var a:array of array of integer;
    nech,n,m,i,j:integer;
begin
n:=StrToInt(InputBox('Ìàññèâ','Ââåäèòå êîë-âî ñòðîê','5'));
m:=StrToInt(InputBox('Ìàññèâ','Ââåäèòå êîë-âî ñòîëáöîâ','5'));
SetLength(a,n,m);
for i:=0 to n-1 do
 for j:=0 to m-1 do
 begin
 a[i,j]:=StrToInt(InputBox('Ìàññèâ','Ââåäèòå ('+IntToStr(i+1)+','+IntToStr(j+1)+') ýëåìåíò','0'));
  StringGrid1.Cells[i,j]:=IntToStr(a[i,j]);
end;
nech:=0;
for i:=0 to n-1 do
 for j:=0 to m-1 do
 if a[i,j] mod 2 <>0 then
 Inc(nech);
 Label3.Caption:=InttoStr(nech);
Finalize(a);
end;
end.
Вроде решила может пригодиться кому-нить.
0
21 / 21 / 3
Регистрация: 05.08.2009
Сообщений: 243
01.11.2009, 16:46 10
Цитата Сообщение от Suslichek Посмотреть сообщение
nech:=nech+1;
Замени на Inc(nech); Тоже самое, только грамотней
Inc(nech) - увеличивает на 1 (инкримент)
Dec(nech) - уменьшает на 1 (декримент)
1
Белая и пушистая
22 / 22 / 1
Регистрация: 01.09.2009
Сообщений: 452
01.11.2009, 16:47  [ТС] 11
типа круче будет?
0
21 / 21 / 3
Регистрация: 05.08.2009
Сообщений: 243
01.11.2009, 16:55 12
Точно , но строчку nech:=0 не убирайте, люди говорят что не всегда она при объявлении будет равна 0, иногда бывает, что в памяти, по адресу которой расположена переменная находится "мусор" и это может привести к неточности вычисления, поэтому лучше обнулить...
0
Белая и пушистая
22 / 22 / 1
Регистрация: 01.09.2009
Сообщений: 452
02.11.2009, 16:19  [ТС] 13
а как лейбл очисть от предыдущих записей?!!!
0
203 / 145 / 16
Регистрация: 13.01.2009
Сообщений: 554
02.11.2009, 16:50 14
А зачем вообще мучаться с mod? Есть замечательная функция Odd

Delphi
1
if Odd(a[i,j]) then inc(nech);
и вообще, я бы уменьшил весь код, зачем 2 раза по массиву пробегаться?

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure TForm1.FormCreate(Sender: TObject);
Var a:array of array of integer;
    nech,n,m,i,j:integer;
begin
n:=StrToInt(InputBox('Массив','Введите кол-во строк','5'));
m:=StrToInt(InputBox('Массив','Введите кол-во столбцов','5'));
SetLength(a,n,m);
nech:=0;
for i:=0 to n-1 do
 for j:=0 to m-1 do
 begin
 a[i,j]:=StrToInt(InputBox('Массив','Введите ('+IntToStr(i+1)+','+IntToStr(j+1)+') элемент','0'));
  StringGrid1.Cells[i,j]:=IntToStr(a[i,j]);
 if Odd(a[i,j]) then 
   begin
   Inc(nech);
   Label3.Caption:=InttoStr(nech);
   end;
end;
Finalize(a);
end;
end.
что-то такое...
0
02.11.2009, 16:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2009, 16:50
Помогаю со студенческими работами здесь

В квадратной целой матрице заменить все нечетные элементы суммой элементов главной диагонали
В квадратной целой матрице заменить все нечетные элементы суммой элементов главной диагонали и...

В матрице обнулить чётные элементы в строках с чётными номерами и нечётные элементы в строках с нечётными номерами
Заполнить случайным образом двумерный массив n x n. Обнулить чётные элементы в строках с чётными...

Создать текстовый файл с матрицей, считать её, найти нечётные числа в матрице, посчитать их произведение
Создать текстовый файл с матрицей, считать её, найти нечётные числа в матрице, посчитать их...

В заданной матрице найти все положительные нечётные числа строки, у которой второй элемент не кратен 3
Доборого времени суток! Ребя помогите пожалуйста, нужно переделать код. Мне требуется найти все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru