1 / 1 / 0 Регистрация: 15.11.2012 Сообщений: 51 |
|
1 |
|
Найти произведение отрицательных элементов матрицы17.11.2012, 11:41. Показов 4410. Ответов 3
1 Задание. Найти произведение отрицательных элементов матрицы. Закрасить указанные элементы.
0 |
Puporev Почетный модератор 64287 / 47586 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
||||||||
17.11.2012, 11:58 |
2 |
|||||||
1.
Добавлено через 4 минуты
1 |
1 / 1 / 0 Регистрация: 15.11.2012 Сообщений: 51 |
|
22.11.2012, 14:14 [ТС] |
3 |
А блок-схему можжно?=)
0 |
181 / 179 / 23 Регистрация: 29.08.2012 Сообщений: 489 |
|
22.11.2012, 14:33 |
4 |
А блок-схему можжно?=) В задании этого не требовалось. Блок-схему нарисовать — более трудоёмкое занятие, чем написание пограммы, особенно когда это делается после, так как мотивации уже нет. Наоборот, блок-схему составляют до написания программы. Тебе стоило бы её нарисовать даже ради понимания что делается в программе, так что флаг тебе в руки
0 |
Формулировка задачи:
Дан двумерный массив А, состоящий из N строк и M столбцов. Найти указанное значение: произведение отрицательных элементов каждого столбца;
Нужен код программы.
Код к задаче: «Найти произведение отрицательных элементов каждого столбца матрицы»
textual
p:=1; for i:=1 to n do for j:=1 to m do begin if a[i,j]<0 then p:=p*a[i,j]; writeln(p); end;
Полезно ли:
8 голосов , оценка 4.000 из 5
Программа должна находить произведение отрицательных элементов матрицы.
Переменная dob Всегда выводит 1
https://pastebin.com/sKQ4cvGT
// ConsoleApplication7.cpp: определяет точку входа для консольного приложения.
//Знайти добуток негативних елементів кожного рядка для матриць a(10,15) і b(15,12). Використовувати функцію.
#include "stdafx.h"
#include <ctime>
#include <iostream>
using namespace std;
long dob = 1;
void atMat(int** &m, int row, int col) {
m = new int*[row];
for (size_t i = 0; i < row; i++)
{
m[i] = new int[col];
}
}
//Ощичение памяти
void reMat(int** &m, int row) {
for (size_t i = 0; i < row; i++)
{
delete[] m[i];
}
delete[] m;
}
//инициализация масива
void inMat(int ** &m, int row, int col) {
for (size_t i = 0; i < row; i++)
{
for (size_t j = 0; j < col; j++)
{
m[i][j] = 0 + rand() % 100-50;
cout << m[i][j] << " ";
}
cout << endl;
}
}
int negativ(int **&m, int row, int col) {
for (size_t i = 0; i < row; i++)
{
for (size_t j = 0; j < col; j++)
{
if (m[i][j] > 0)
{
dob == dob * m[i][j];
}
}
}
return dob;
}
int main()
{
srand(time(0));
int **arrayA = NULL; // указатель на указатель
int ** arrayB = NULL;
int aROW = 10;
int aCOL = 15;
int bROW = 12;
int bCol = 10;
arrayA = new int*[aROW];
arrayB = new int*[bROW];
atMat(arrayA, aROW, aCOL);
atMat(arrayB, bROW, bCol);
cout << "Your array a :" << endl;
inMat(arrayA, aROW, aCOL);
cout << "nn";
cout << "Your array b :" << endl;
inMat(arrayB, bROW, bCol); // инициализация масива и вывод на экран
cout << endl;
cout << "dob negative elemet massiva A ravno: " << negativ(arrayA, aROW, aCOL) << endl;
cout << "dob negative elemet massiva B ravno: " << negativ(arrayB, bROW, bCol)<< endl;
reMat(arrayA, aROW); //очищение памяии
reMat(arrayB, bROW);
cin.get();
return 0;
}
Цель
работы:
выработать
практические
привычки
в
составлении
алгоритмов
на
селективную
обработку
двумерных
массивов.
Общие указания
1 Вложенные циклы
Вложенные
циклы используются при работе с
многомерными функциями и множествами.
При этом нужно следить, чтобы не было
перекрещивания циклов. Его не будет,
если циклы закрываются в порядке,
обратном открыванию (см. пример 5).
Пример
10.
В матрице a(4,5)
найти произведение положительных чисел.
Порядок
работы
Шаг
1. Вводим матрицу a(4,5).
Шаг
2. Задаем начальное значение произведения
p=1.
Шаг
3. Организовываем цикл, перебирающий
строки матрицы (т.е. индекс i),
начиная с 1-ой и кончая 4-ой.
Шаг
4. Организовываем цикл, перебирающий
столбцы матрицы (т.е. индекс j),
начиная с 1-го и кончая 5-м.
Шаг
5. Если aij
>
0,
тогда присваиваем p
= p
aij.
Шаг
6. Если цикл по j
не закончился, идем на начало цикла,
т.е. на шаг 4.
Шаг
7. Если цикл по i
не закончился, идем на начало цикла,
т.е. на шаг 3.
Шаг
8. Печатаем p.
Шаг
9. Останов.
Блок-схема
3.9 Обработка заданной строки (столбца) матрицы
Пример
11.
Найти сумму четных чисел третьей строки
матрицы a(4,5).
Порядок
работы
Шаг
1. Вводим матрицу a(4,5).
Шаг
2. Устанавливаем начальное значение
суммы s
= 0.
Шаг
3. Задаем номер обрабатываемой строки
i
= 3.
Шаг
4. Организовываем цикл, перебирающий
столбцы матрицы (т.е. индекс j),
начиная с 1-го и кончая 5-м.
Шаг
5. Если aij
четно,
тогда присваиваем s
= s
+ aij.
Шаг
6. Если цикл по j
не закончился, идем на начало цикла,
т.е. на шаг 4.
Шаг
7. Печатаем s.
Шаг
8. Останов.
3.10 Обработка заданной диагонали матрицы
Пример
12.
Найти сумму четных чисел главной
диагонали матрицы a(5,5).
Порядок
работы
Шаг
1. Вводим матрицу a(5,5).
Шаг
2. Устанавливаем начальное значение
суммы s=0.
Шаг
3. Организовываем цикл, перебирающий
строки матрицы (т.е. индекс i),
начиная с 1-й и кончая 5-й.
Шаг
4. Организовываем цикл, перебирающий
столбцы матрицы (т.е. индекс j),
начиная с 1-го и кончая 5-м.
Шаг
5. Если aij
четно
и i
= j,
присваиваем s
= s
+ aij.
Шаг
6. Если цикл по j
не закончился, идем на начало цикла ,
т.е. на шаг 4.
Шаг
7. Если цикл по i
не закончился, идем на начало цикла,
т.е. на шаг 3.
Шаг
8. Печатаем s.
Шаг
9. Останов.
3.11 Селективная обработка строки (столбца) матрицы, удовлетворяющей заданному условию
Обработка
строки (столбца) производится после ее
нахождения путем проверки каждой строки
на соответствие заданному условию.
Пример
13.
В матрице a(4,5)
найти количество четных чисел в строке,
у которой второй элемент положительный
(если таких строк несколько, результат
распечатать отдельно для каждой).
Порядок
работы
Шаг
1. Вводим матрицу a(4,5).
Шаг
2. Организовываем цикл, перебирающий
cтроки
матрицы (т.е. индекс i),
начиная с 1-й и кончая 4-й.
Шаг
3. Если ai2
> 0,
то идем на шаг 4, иначе берем другую
строку, т.е. идем на шаг 7.
Шаг
4. Устанавливаем начальное значение
количества k=0.
Шаг
5. Организовываем цикл, перебирающий
столбцы матрицы (т.е. индекс j),
начиная с 1-го и кончая 5-м.
Шаг
6. Если aij
четно,
тогда присваиваем k
= k
+ 1.
Шаг
7. Если цикл по j
не закончился, идем на начало цикла,
т.е. на шаг 5.
Шаг
8. Печатаем k.
Шаг
9. Если цикл по i
не закончился, идем на начало цикла,
т.е. на шаг 2.
Шаг
10. Останов.
Пример
14.
В матрице a(4,5)
найти количество четных чисел в строке,
у которой сумма элементов положительна
(если таких строк несколько, результат
распечатать отдельно для каждой).
Порядок
работы
Шаг
1. Вводим матрицу a(4,5).
Шаг
2. Организовываем цикл, перебирающий
cтроки
матрицы (т.е. индекс i),
начиная с 1-й и кончая 4-й.
Шаг
3. Устанавливаем начальное значение
суммы s
= 0.
Шаг
4. Организовываем цикл, перебирающий
столбцы матрицы (т.е. индекс j),
начиная с 1-го и кончая 5-м.
Шаг
5. Присваиваем s
= s
+ aij.
Шаг
6. Если цикл по j
не закончился, идем на начало цикла,
т.е. на шаг 4.
Шаг
7. Если s
> 0,
то идем на шаг 8, иначе — берем другую
строку, т.е. идем на шаг 13.
Шаг
8. Устанавливаем начальное значение
количества k=0.
Шаг
9. Организовываем цикл, перебирающий
столбцы матрицы (т.е. индекс j),
начиная с 1-го и кончая 5-м.
Шаг
10. Если aij
четно,
тогда присваиваем k
= k
+ 1.
Шаг
11. Если цикл по j
не закончился, идем на начало цикла,
т.е. на шаг 9.
Шаг
12. Печатаем k.
Шаг
13. Если цикл по i
не закончился, идем на начало цикла,
т.е. на шаг 2.
Шаг
14. Останов.
Задание
8.
Составить блок-схему для задания,
указанного в таблице 9. Имя и размер
матрицы выбрать самостоятельно.
Таблица
9
Вар. |
Условие |
1 |
Найти |
2 |
Найти |
3 |
Найти |
4 |
Найти |
5 |
Вычислить |
6 |
Найти |
7 |
Найти |
8 |
Найти |
9 |
Найти |
10 |
Найти |
11 |
Найти |
12 |
Найти |
13 |
Найти |
14 |
Найти |
15 |
Найти |
16 |
Найти |
17 |
Найти |
18 |
Найти |
19 |
Найти |
20 |
Найти |
21 |
Найти |
22 |
Определить |
23 |
Найти |
24 |
Найти |
25 |
Найти |
26 |
Определить |
27 |
Найти |
28 |
Найти |
29 |
Найти |
30 |
Определить |
Задание
9.
Составить блок-схему для задания,
указанного в таблице 10. Имя и размер
матрицы выбрать самостоятельно.
Таблица
10
Вар. |
Условие |
1 |
Найти |
2 |
Найти |
3 |
Вычислить |
4 |
Определить |
5 |
Найти |
6 |
Найти |
7 |
Найти |
8 |
Найти |
9 |
Найти |
10 |
Найти |
11 |
Найти |
12 |
Найти |
13 |
Найти |
14 |
Найти |
15 |
Найти |
16 |
Найти |
17 |
Найти |
18 |
Найти |
19 |
Найти |
20 |
Найти |
21 |
Найти |
22 |
Найти |
23 |
Найти |
24 |
Найти |
25 |
Найти |
26 |
Найти |
27 |
Найти |
28 |
Найти |
29 |
Найти |
30 |
Найти |
Задание
10.
Составить блок-схему для задания,
указанного в таблице 11. Имя и размер
матрицы выбрать самостоятельно.
Таблица
11
Вар. |
Условие |
1 |
Вычислить |
2 |
Найти |
3 |
Определить |
4 |
Найти |
5 |
Найти |
6 |
Найти |
7 |
Найти |
8 |
Найти |
9 |
Найти |
10 |
Найти |
11 |
Найти |
12 |
Найти |
13 |
Найти |
14 |
Найти |
15 |
Найти |
16 |
Найти |
17 |
Найти |
18 |
Найти |
19 |
Найти |
20 |
Найти |
21 |
Найти |
22 |
Найти |
23 |
Найти |
24 |
Найти |
25 |
Найти |
26 |
Найти |
27 |
Найти |
28 |
Найти |
29 |
Найти |
30 |
Найти |
Задание
11.
Составить блок-схему для задания,
указанного в таблице 12. Имя и размер
матрицы выбрать самостоятельно.
Таблица
12
Вар. |
Условие |
1 |
Вычислить |
2 |
Найти |
3 |
Определить |
4 |
Найти |
5 |
Найти |
6 |
Найти |
7 |
Найти |
8 |
Найти |
9 |
Найти |
10 |
Найти |
11 |
Найти |
12 |
Найти |
13 |
Найти |
14 |
Найти |
15 |
Найти |
16 |
Найти |
17 |
Найти |
18 |
Найти |
19 |
Найти |
20 |
Найти |
21 |
Найти |
22 |
Найти |
23 |
Найти |
24 |
Найти |
25 |
Найти |
26 |
Найти |
27 |
Найти |
28 |
Найти |
29 |
Найти |
30 |
Найти |
Задание
12.
Составить блок-схему для задания,
указанного в таблице 13. Имя и размер
матрицы выбрать самостоятельно.
Таблица
13
Вар. |
Условие |
1 |
Вычислить |
2 |
Найти |
3 |
Найти |
4 |
Найти |
5 |
Найти |
6 |
Найти |
7 |
Найти |
8 |
Найти |
9 |
Найти |
10 |
Найти |
11 |
Найти |
12 |
Найти |
13 |
Найти |
14 |
Найти |
15 |
Найти |
16 |
Найти |
17 |
Найти |
18 |
Найти |
19 |
Найти |
20 |
Найти |
21 |
Найти |
22 |
Найти |
23 |
Найти |
24 |
Найти |
25 |
Найти |
26 |
Найти |
27 |
Найти |
28 |
Найти |
29 |
Определить |
30 |
Вычислить |
Соседние файлы в папке ИТ11зт
- #
- #
- #
var
B:array[1..100, 1..100] of real;
i, j, n:integer;
Pr:real;
flag:boolean;
begin
randomize;
write(‘n = ‘);
readln(n);
if n < 2 then
begin
writeln(‘некорректный размер матрицы’);
Exit;
end;
for i := 1 to n do
begin
for j := 1 to n do
begin
B[i, j] := (random(101) — 50) / 10;
write(B[i, j], ‘ ‘);
end;
writeln;
end;
Pr := 1;
flag := false;
for i := 2 to n do
for j := 1 to i — 1 do
if B[i, j] < 0 then
begin
flag := true;
Pr := Pr * B[i, j];
end;
if Flag then
writeln(‘Pr = ‘, Pr)
else
writeln(‘Нет ни одно отрицательного элемента ниже главной диагонали’);
readln;
end.