М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
MeerDasha487
MeerDasha487
03.04.2022 21:34 •  Информатика

Дана квадратная матрица целых чисел. определить модуль произведения отрицательных чисел, которые находятся в нижней треугольной области матрицы: под главной и под побочной диагоналями.

👇
Ответ:
Dyadya11
Dyadya11
03.04.2022
В C++:
#include <iostream>
#include <ctime>
#include <iomanip>
int main()
{
    using namespace std;

    //размерность матрицы
    const int N = 5;
    int matrix[N][N];
    srand(time(0));
    int i, j;

    //как-нибудь заполняем матрицу
    for (i = 0; i < N; i++)    
        for (j = 0; j < N; j++)
            matrix[i][j] = rand() % (N * N + 1) - (N * N / 2);

    //вывод исходной матрицы на экран
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
            cout << setw(4) << matrix[i][j];
        cout << endl;
    }
   
    //проверка, есть ли вообще числа, чтобы умножать
    int p = 0;
    for (i = 0; i < N; i++)
        for (j = 0; j < N; j++)
            if (i > j && i > N - j - 1 && matrix[i][j] < 0)
            {
                p = 1;
                break;
            }

    //подсчёт требуемого произведения
    for (i = 0; i < N; i++)
        for (j = 0; j < N; j++)
            if (i > j && i > N - j - 1 && matrix[i][j] < 0)
                p = p * matrix[i][j];

    //нахождение модуля произведения
    if (p < 0)
        p = -p;

    //вывод этого значения на экран
    cout << "Multiplication: " << p << endl;
    return 0;
}
4,7(32 оценок)
Открыть все ответы
Ответ:
abrikosikhii
abrikosikhii
03.04.2022

Объяснение:

Никогда такое не решал, но попробую

На выходе F=1

Идем с конца

До него & (конъюнктор) - это логическое AND

По таблице истинности находим, что На выходе 1, только если на входе 1 и 1, значит А=1

Теперь идем от А. Сначала инверсия, получаем 0

Далее 0 AND B и мы должны получить 1. И тут у меня ломается мозг.

0 AND что угодно - получим 0, а если так, то и F=0 станет.

Вот и логическая бомба.

Решения не вижу у этой задачи, если F=1

Еще функцию надо

F=(A)AND((NOT(A))AND(B))

1=1AND1, значит A=1 и

(NOT(A))AND(B)=1

тогда B=1 и NOT(A)=1.

но NOT(A)=1 и А=1 не может быть. Мы пришли к противоречию.

Утерян "лучший ответ". Нашедшему вернуть.

4,5(39 оценок)
Ответ:
Kfhjrhnf
Kfhjrhnf
03.04.2022

т.к. n заранее не дано(и это все лишь фрагмент кода) то m при разных n будет получаться разный. n лежит в промежутке [-2;8]

потому, что тут m:=(l+r)div 2; при n<-2 получается индекс <0

и при n>8  в цикле индекс >7

а массив у нас всего 8 элементов

Поэтому в цикле я вывел все значения m при всех возможных значениях n

Надеюсь понятно объяснил.

при n=-2   m=0

при n=-1   m=0

при n=0   m=0

при n=1   m=1

при n=2   m=2

при n=3   m=3

при n=4   m=4

при n=5   m=5

при n=6   m=6

при n=7   m=6

при n=8   m=6

Pascal

var

 a:array [0..7] of integer = (34, 16, 16, 2, 2, 0, -4, -4);

 l, n, m, key, r:integer;

 flag:boolean;

begin

 for n:=-2 to 8 do begin

   key:=-4;

   L:=1;

   r:=n;

   flag:=false;

   Repeat

     m:=(l+r)div 2;

     if a[m]>key then

       l:=m+1

     else

      if a[m]=key then

        flag:=true

      else

        r:=m-1;

   until flag or (l>r);

   writeln('при n=',n,'   m=', m);

 end;

end.


Пусть задан массив Аi={34, 16, 16, 2, 2, 0, -4, -4}, фрагмент программы L:=1; r:=n; flag:=false; Rep
4,6(30 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ