Главная
Регистрация
Вход
Вторник
23.04.2024
13:32
Приветствую Вас, Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Кирпич, Admin  
Форум » Форум по C++ » Решение задач » Нужна помощь! Помогите решить задачу на массив.
Нужна помощь! Помогите решить задачу на массив.
ГлашкаДата: Пятница, 27.01.2012, 19:44 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 2
Статус: Offline
Помогите, пожалуйста, с задачей. Дана целая квадратная матрица n-го порядка. Определить, является ли она магическим квадратом, т.е. такой, в которой суммы элементов во всех строках и столбцах одинаковы.

Сообщение отредактировал Глашка - Пятница, 27.01.2012, 19:47
 
AdminДата: Суббота, 28.01.2012, 14:11 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 65
Статус: Offline
Проверьте:

Code
#include <conio.h>
#include <iostream.h>

int n, i, j, summa, stolb = 0;
bool k = true;

cout<<" Порядок матрицы n = ";
cin>>n;
//динамическое выделение памяти
int **a=new int *[n];
for(int i=0;i<n;i++)
a[i]=new int[n];
if(!a) //проверка факта выделения памяти
{
cout<<"\nНедостаточно памяти";
cout<<"\nНажмите любую клавишу для завершения программы ...\n";
getch();
return 0;
}
//ввод массива
cout<<"\nВведите массив["<<n<<"]["<<n<<"]\n";
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>a[i][j];

//вывод массива
for(i=0;i<n;i++)
{
cout<<"\n";
for(j=0;j<n;j++)
cout<<a[i][j]<<" ";
}

//проверяем числа в массиве,они не должны превышать n*n
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(a[i][j] > n*n)
{
cout<<"\nКвадрат не является магическим";
k = false;//определяет результат проверки одного из условий магического квадрата
break;
}
}
}

//если предыдущее условие истино,считаем сумму в первом столбце
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
stolb = stolb + a[i][j];

break;
}

//сравниваем суммы в других столбцах
if(k)
{
for(i=0;i<n;i++)
{
summa = 0;
for(j=0;j<n;j++)
summa = summa + a[i][j];

if(summa != stolb)
{
cout<<"\nКвадрат не является магическим";
k = false;
break;
}
}
}

//сравниваем суммы в строках
if(k)
{
for(j=0;j<n;j++)
{
summa = 0;
for(i=0;i<n;i++)
summa = summa + a[i][j];

if(summa != stolb)
{
cout<<"\nКвадрат не является магическим";
k = false;
break;
}
}
}

//если все условия выполнились, сообщаем об этом
if(k)
cout<<"\nКвадрат является магическим";


С диагоналями сами подумайте.
 
ГлашкаДата: Суббота, 28.01.2012, 17:28 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 2
Статус: Offline
Спасибо!
 
BlackДата: Четверг, 15.05.2014, 07:08 | Сообщение # 4
Рядовой
Группа: Пользователи
Сообщений: 1
Статус: Offline
здравствуйте, очень нужна ваша помощь. Завтра задачу надо сдать:
Вывести массив от 1 до 50
найти числа кратные 3 и заменить их на слово Вам
найти числа кратные 5 и заменить их на слово Привет
найти числа кратные и 3 и 5 и заменить их на Вам Привет
 
AdminДата: Четверг, 15.05.2014, 22:19 | Сообщение # 5
Генералиссимус
Группа: Администраторы
Сообщений: 65
Статус: Offline
Black, вам сюда Фриланс. Или пишите в ЛС.
 
Форум » Форум по C++ » Решение задач » Нужна помощь! Помогите решить задачу на массив.
  • Страница 1 из 1
  • 1
Поиск:

Copyright H-L-L.RU © 2024
Сделать бесплатный сайт с uCoz