Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2018, 11:33   #1
DowL_HH4
Пользователь
 
Регистрация: 23.03.2018
Сообщений: 10
По умолчанию Найти строки матрицы, для которых есть коллинеарные строки

Приветствую, уважаемые. Имею две проблемы с данным кодом
Код:
#include <iostream>
#include <iomanip>
#include <ctime>
#include <cmath>
#include <math.h>
using namespace std;

int main() {
	setlocale(LC_ALL, "Russian");
	int n = 0;
	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;
	}
	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 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);
		}
		if (composition == (sqrt(length1*length2))) {
			cout << "Векторы (Строки) " << i << " и " << i + 1 << " являются коллинеарными" << endl;
		}
	}
	for (int i = 0; i < n; i++)
		delete[] mass[i];
	delete[] mass;
	system("pause");
	return 0;
}
1) Как сделать, чтобы сравнивались не только соседние строки, но и все остальные (скажем, например, имеем 3*3 матрицу, нужно сравнить 1 и 2, 1 и 3, 2 и 3)
2) vc++ 10 не понимает данные строки, как сделать, чтобы понимал любой комплиятор?
Код:
length1 += pow(mass[i][j], 2);
				length2 += pow(mass[i + 1][j], 2);
DowL_HH4 вне форума Ответить с цитированием
Старый 27.04.2018, 12:50   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от DowL_HH4 Посмотреть сообщение
vc++ 10 не понимает данные строки, как сделать, чтобы понимал любой комплиятор?
Все он понимает, поэтому и пишет вам. http://en.cppreference.com/w/cpp/numeric/math/pow Для старых компиляторов приводите к флоту или даблу, для новых так можно оставить. И определитесь math.h или cmath.

Цитата:
Сообщение от DowL_HH4 Посмотреть сообщение
Как сделать, чтобы сравнивались не только соседние строки, но и все остальные (скажем, например, имеем 3*3 матрицу, нужно сравнить 1 и 2, 1 и 3, 2 и 3)
Как обычно. Сделать цикл и работать не с mass[i + 1][j], а mass[i + k][j]. Естественно, выписав нормальные выражения для обоих индексов.

Последний раз редактировалось p51x; 27.04.2018 в 12:53.
p51x на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Напечатать только те строки из файла, в которых есть буква s. IHML Помощь студентам 0 14.03.2016 01:05
Найти и закрасить строки матрицы, все элементы которых различны Kate1414 Общие вопросы Delphi 1 11.06.2014 13:18
Вывести строки матрицы, в которых есть такой элемент, что сумма предшествующих равна сумме следующих за ним элементов. vigorouz Помощь студентам 0 21.05.2014 23:47
Найти среднее арифметическое элементов каждой строки матрицы Q (l, m) и отнять его от элементов этой строки ( язык С ) FYNZIK Помощь студентам 3 13.02.2014 21:44