2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Магический квадрат(microsoft visual c++)
Сообщение14.04.2014, 14:52 


14/04/14
2
Помогите,пожалуйста,записать алгоритм и программу (microsoft visual c++) ,которая проверяет, является ли введенная с клавиатуры квадратная матрица "магическим квадратом".

 Профиль  
                  
 
 Re: Магический квадрат(microsoft visual c++)
Сообщение14.04.2014, 15:31 


05/09/12
2587
Начинайте, поможем. Для начала напишите словами алгоритм.

 Профиль  
                  
 
 Re: Магический квадрат(microsoft visual c++)
Сообщение15.04.2014, 14:50 


14/04/14
2
я написала программу,она работает ( здесь я ее представила не полностью)
теперь мне нужно записать алгоритм ( не помню как он называется),но там вот так
алг
нач
ввод ...
нц
если ....
иначе
совсем не понимаю
int i, j,n;
int a[40][40];
int g[40], b[40];
cout<<"Введите размер матрицы н"<<endl;
cin>>n;
cout<<"Введите элементы массива"<<endl;
for (i=0;i<n;i++)
{for(j=0;j<n;j++)
{cin>>a[i][j]; //создаём массив;
};};

for (i=0;i<n;i++){g[i]=0;};

for (i=0;i<n;i++)
{for (j=0;j<n;j++)
{g[i]=g[i]+a[i][j]; //создаём массив из значений сумм горизонталей;
};};
for (i=0;i<n;i++){cout<<g[i]<<' ';};
cout<<endl;

for (i=0;i<n;i++){b[i]=0;};
for (j=0;j<n;j++)
{for (i=0;i<n;i++)
{b[j]=b[j]+a[i][j]; //создаём массив из элементов вертикали;
};};
for (i=0;i<n;i++){cout<<b[i]<<' ';};
cout<<endl;

int c1=0;
for (i=0,j=0; i<n,j<n; i++,j++)
{c1=c1+a[i][j];}; //сумама по нисходящей диоганали;
cout<< c1<<endl;

int c2=0;
for (i=n-1, j=0; i>=0, j<n; i--,j++)
{c2=c2+a[i][j];}; //сумма по восходящей диагонали;
cout<<c2;
// ищем несовпадения;
for (i=0; i<n; i++)
{if (g[0]!= g[i+1])
{cout<<("Квадрат не мегический");break;}
else
if (g[0]!= b[i])
{cout<<("Квадрат не мегический");break;}
else
if (g[0]=c2)
{cout<<"Матрица магическая";break;}
else {cout<<("Квадрат не мегический");break;};}
getchar();
getchar();}

 Профиль  
                  
 
 Re: Магический квадрат(microsoft visual c++)
Сообщение15.04.2014, 15:04 


05/09/12
2587
Чтобы упростить себе жизнь в дальнейшем, напишите сразу программу, которая будет делать следующее: брать на вход текст, заменять в нем все "if" на "если", "else" на "иначе" "for" на "для", "cin>>" на "ввод" и т.д. и выгружать это в выходной файл. Потом будете скармливать ей тексты ваших программ и на выходе получать красивые тексты алгоритмов :D . Ну, красивые с точностью до наличия "сумама" и "мегический" в исходном тексте.

 Профиль  
                  
 
 Re: Магический квадрат(microsoft visual c++)
Сообщение15.04.2014, 15:33 
Заслуженный участник
Аватара пользователя


28/07/09
1238
У вас есть ошибки в алгоритме проверки на "магичность".
Во-первых, вы обращаетесь к g[n], хотя такого элемента нет, у вас же массив до n-1 только.
Во-вторых, вы забыли сравнить с g[0] с c1.
В-третьих, вы на кой-то чёрт делаете проверку g[0]==с2 аж n раз в цикле, хотя достаточно одного раза.
В-четвёртых, у вас там вообще присвоение стоит, а не сравнение (одно равно вместо двух)
В-пятых, алгоритм проверки у вас вообще полностью некорректный, у вас достаточно совпадения с g[0] суммы первой вертикали, суммы второй горизонтали и одной диагонали, чтобы признать квадрат магическим.

-- Вт апр 15, 2014 16:34:36 --

Это только то, что я заметил. Переписывайте.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group