Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 20.10.2017
Сообщений: 44

Найти строки матрицы, для которых есть коллинеарные строки

24.04.2018, 13:46. Показов 1612. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую, уважаемые. Имею вот такую задачу: Выдать все строки, для которых есть коллинеарные вектора (строки) в заданном массиве. Там было еще условие для ввода и вывода двумерного массива, я это написал, код приложу. Как объяснил препод вектор - строка. Я полагаю, что нужно проверять соответствие его (двумерного массива) элементов по формуле а1/b1 = a2/b2 = a3/b3 =..=an/bn. Как это реализовать? Вот код ввода и вывода, написанный по условию, осталось обработать. Помогите пожалуйста)
C++
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
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <iomanip>
#include <stdlib.h>
#include <time.h>
using namespace std;
 
int main() {
    int n, a[100][100]; do {
        cout << "Enter n: "; cin >> n;
        if (n >= 100) cout << "n>=100, Repeat please...\n";
    } 
    while (n >= 100);
    if (n < 1) {
        n = 10;
        srand(time(NULL));
        for (int i = 0; i < n; i++)  
            for (int j = 0; j < n; j++)  
                a[i][j] = 1 + rand() % 100;  
        cout << "Massive: " << endl;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++)
                cout << setw(4) << a[i][j];
            cout << endl;
        }
        return 0;
    }
    else {
        for (int i = 0; i < n; i++) {
            cout << "Vvodim " << i + 1 << " stroku\n";
            for (int j = 0; j < n; j++) {
                cout << "Vvedite celoe chislo: ";
                cin >> a[i][j];
            }
        }
        cout << "Massive: " << endl;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++)
                cout << setw(4) << a[i][j];
            cout << endl;
        }
        return 0;
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.04.2018, 13:46
Ответы с готовыми решениями:

Найти максимум в диагонали матрицы и перевернуть строки, в которых есть этот максимум
Найти максимум в диагонали матрицы и перевернуть строки, в которых есть этот максимум. Вот заполнение и максимум, но не знаю, как строки...

Для каждой строки матрицы определить минимальный элемент, среди которых найти максимальный
Задание: Дан двумерный массив из 5 строк и 6 столбцов. Определить для каждой строки минимальный элемент. Среди этих элементов найти...

Найти строки матрицы, где есть эл-т для которого сумма предшествующих равна сумме следующих за ним элементов
Доброго времени суток всем. Прошу помочь с этими заданиям, написать код в c++ 2. Вывести строки матрицы, в которых есть такой...

24
1 / 1 / 0
Регистрация: 20.10.2017
Сообщений: 44
25.04.2018, 20:01  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от qwe123qwea Посмотреть сообщение
и да чтобы не крашиласть программа при отрицательных значениях нужно вот это переделать вот так:
Это я исправил таким образом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
bool flag = false;
    do {
        cout << "Введите размерность массива: "; cin >> n;
        if (n < 1) {
            n = 10;
            flag = true;
        }
        if (n > 100) cout << " n < = 100, Пожалуйста повторите ввод...\n";
    } while (n > 100);
    int ** mass = new int*[n];
    for (int i = 0; i < n; i++)
        mass[i] = new int[n];
    if (flag == true) {
        n = 10;
        srand(time(NULL));
        for (int i = 0; i < n; i++)
            for (int j = 0; j < n; j++)
                mass[i][j] = 1 + rand() % 100;
    }
Цитата Сообщение от qwe123qwea Посмотреть сообщение
то будет проверяться противоположно направленность векторов.
С этим вроде тоже ясно. То есть теперь это нужно грамотно зациклить, я полагаю?

Добавлено через 34 минуты
Не, не вдупляю, куда цикл пихать и тот ли вообще пишу.
Пытался сделать что-то по подобию отсюда ( Сравнение элементов двумерного массива ) проверку элементов
0
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
25.04.2018, 20:17
Цитата Сообщение от DowL_HH4 Посмотреть сообщение
Не, не вдупляю, куда цикл пихать и тот ли вообще пишу.
Пытался сделать что-то по подобию отсюда ( Сравнение элементов двумерного массива ) проверку элементов
Не то, надо искать сравнивание одной строки со всеми остальными, т.е. у тебя должно в результате 3 цикла получиться.
0
1 / 1 / 0
Регистрация: 20.10.2017
Сообщений: 44
25.04.2018, 20:36  [ТС]
Цитата Сообщение от qwe123qwea Посмотреть сообщение
3 цикла
Т.е. еще на этой стадии мне нужно проверять все строки? Не затрагивая алгоритм? Или, я полагаю, его нужно тоже немного переработать?
C++
1
2
3
4
5
6
7
8
9
for (int i = 0; i < (n - 1); i++) {
        double length1 = 0;
        double length2 = 0;
        double composition = 0;
        for (int j = 0; j < n; j++) {
            composition += mass[i][j] * mass[i + 1][j];
            length1 += pow(mass[i][j], 2);
            length2 += pow(mass[i + 1][j], 2);
        }
0
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
25.04.2018, 21:24
Там только индексы немного изменятся.
1
1 / 1 / 0
Регистрация: 20.10.2017
Сообщений: 44
10.05.2018, 13:49  [ТС]
Задача решена, может кому-то пригодится код.
C++
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream> 
#include <iomanip> 
#include <ctime> 
#include <cmath> 
using namespace std;
 
int main() {
    bool flag = false;
    setlocale(LC_ALL, "Russian");
    int n = 0;
    do {
        cout << "Введите размерность массива: "; cin >> n;
        if (n < 1) {
            n = 10;
            flag = true;
        }
        if (n > 100) cout << " n > 100, Пожалуйста повторите ввод...\n";
    } while (n > 100);
    int ** mass = new int*[n];
    for (int i = 0; i < n; i++)
        mass[i] = new int[n];
    if (flag == true) {
        n = 10;
        srand(time(NULL));
        for (int i = 0; i < n; i++)
            for (int j = 0; j < n; j++)
                mass[i][j] = 1 + rand() % 100;
    }
    else {
        for (int i = 0; i < n; i++) {
            cout << "Вводим " << i + 1 << " строку\n";
            for (int j = 0; j < n; j++) {
                cout << "Введите целое число: ";
                cin >> mass[i][j];
            }
        }
    }
    cout << "Массив: " << endl;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++)
            cout << setw(4) << mass[i][j];
        cout << endl;
    }
    for (int l = 0; l < n; l++) {
        for (int i = 0; i < (n - 1); i++) {
            double length1 = 0;
            double length2 = 0;
            double composition = 0;
            for (int j = 0; j < n; j++) {
                composition += mass[i][j] * mass[l][j];
                length1 += mass[i][j] * mass[i][j];
                length2 += mass[l][j] * mass[l][j];
            }
            if ((composition == (sqrt(length1*length2))) && (i != l)) {
                cout << "Векторы (строки) " << i+1 << " и " << l+1 << " являются коллинеарными" << endl;
            }
        }
    }
    for (int i = 0; i < n; i++)
        delete[] mass[i];
    delete[] mass;
    system("pause");
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.05.2018, 13:49

Удалить строки заданной матрицы, в которых есть хотя бы один особый элемент
Здравствуйте. Я только начал постигать язык С++ и остановился на одной задачи и не могу сдвинуться с места... Прочёл в 2-х книгах про...

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

Матрица m x n. Найти макс значение среди средних значений для каждой строки матрицы. Вернуть номер строки
Здравствуйте. Код есть, но ведет себя не стабильно. Выводит не то, что нужно. Прошу помочь. matrix.cpp #include &lt;iostream&gt; ...

Удалить из матрицы A все строки, сумма элементов которых четна, а из матрицы B – строки, сумма элементов которых нечетна(функции)
Удалить из матрицы А (7х5) все строки, сумма элементов которых четна, а из матрицы В (6х8) – строки, сумма элементов которых нечетна.

Динамический массив (вывести строки матрицы, в которых есть элемент, больший суммы элементов, следующих за ним)
Необходимо вывести строки матрицы, в которых есть элемент, больший суммы элементов, следующих за ним. Я долго пытался это сделать, но не...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru