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

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

24.04.2018, 13:46. Показов 1699. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru