Другие языки программирования и технологии

Помогите плиз, написать прогу на Си++! Срочно очень нужно!

Матрица называется диагональной, если все ее элементы за исключением диагональных равны нулю. Написать программу, которая проверяет, является ли матрица диа-гональной. Или просто прогу, задающую диагональную матрицу, хотя бы объясните, ПОЖАЛУЙСТА)))))
// Тамара_Вагина_2011-12-03
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
#define N 7

int main()
{
srand((unsigned) time(NULL));
int a[N][N] = {0};
int b[N][N] = {0};
bool first = true, second = true;

// Создание диагональной матрицы
for (int n = 0; n < N; n++, cout << endl)
for (int m = 0; m < N; m++)
{
if (n == m) a[n][m] = rand() % 9 + 1;
cout << ' ' << a[n][m];
}

cout << endl;

// Создание квадратной матрицы
for (int n = 0; n < N; n++, cout << endl)
for (int m = 0; m < N; m++)
{
b[n][m] = rand() % 9 + 1;
cout << ' ' << b[n][m];
}

// Проверка
for (int n = 0; n < N; n++)
{
for (int m = 0; m < N; m++)
{
if (n == m) continue;
if (a[n][m] != 0) first = false;
if (b[n][m] != 0) second = false;
}
if (first == false && second == false) break;
}

cout << endl << " Matrix 1 = " << boolalpha << first;
cout << endl << " Matrix 2 = " << boolalpha << second;

cin.get();
return 0;
}
Александр Перегудов
Александр Перегудов
51 179
Лучший ответ
Честно говоря, не знаю, что тут еще можно объяснять. Таблица умножения и программа для ее создания- сложнее.
ВК
Вова Кине
94 962
#include <iostream>
#include <iomanip>

#define N (4)

int main() {
int a[N][N];
std::cout << "enter matrix:" << std::endl;
int r, c;
for (r = 0; r < N; ++r) {
for (c = 0; c < N; ++c) {
std::cin >> a[r][c];
}
}
bool isdiagonal = true;
for (r = 0; r < N; ++r) {
for (c = 0; c < N; ++c) {
if (r != c && a[r][c] != 0) {
isdiagonal = false;
break;
}
}
if (!isdiagonal) {
break;
}
}
std::cout << std::boolalpha << isdiagonal;
return 0;
}
Максим Мелёхин
Максим Мелёхин
86 599
могу тебе скинуть лекции по программированию массивов
int[][] MATRIX =new int[10][10];//ну или как там определять не помню
//заполняем и поехали

for(int i=0;i<matrix.lengs;i++)>[j]=!1)
{//значит пройдя по диагонали есть не единичный}
}else//не на диагонали
break;
{
if(MATRIX[j]!=0)
{//один из не диагональных элементов отличен от нуля
break;
}
}
}
}

мда тупой майл весь код испортил, сука
пиши сама.. . тут всего 2 цикла в программе
Перебираем значения массива и если находим не нулевое значение то смотрим равны ли координаты по вертикали и горизонтали. Если равны то идем дальше.. . если не равны то вываливаемся из цикла и говорим ВАЙ МАТРИЦА НЕПРАВИЛЬНЫЙ!
Если же цикл отработает до конца то все хорошо.

А вообще можно реализовать 1000 способами ) без сравнения с 0 ) тупо посчитать сумму диагонали и матрицы в целом ) если равны то все ок ) правда программа от этого меньше не станет ) зато не как у всех
Эду По
Эду По
1 576