2014 dxdy logo

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

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




 
 Магический квадрат(microsoft visual c++)
Сообщение14.04.2014, 14:52 
Помогите,пожалуйста,записать алгоритм и программу (microsoft visual c++) ,которая проверяет, является ли введенная с клавиатуры квадратная матрица "магическим квадратом".

 
 
 
 Re: Магический квадрат(microsoft visual c++)
Сообщение14.04.2014, 15:31 
Начинайте, поможем. Для начала напишите словами алгоритм.

 
 
 
 Re: Магический квадрат(microsoft visual c++)
Сообщение15.04.2014, 14:50 
я написала программу,она работает ( здесь я ее представила не полностью)
теперь мне нужно записать алгоритм ( не помню как он называется),но там вот так
алг
нач
ввод ...
нц
если ....
иначе
совсем не понимаю
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 
Чтобы упростить себе жизнь в дальнейшем, напишите сразу программу, которая будет делать следующее: брать на вход текст, заменять в нем все "if" на "если", "else" на "иначе" "for" на "для", "cin>>" на "ввод" и т.д. и выгружать это в выходной файл. Потом будете скармливать ей тексты ваших программ и на выходе получать красивые тексты алгоритмов :D . Ну, красивые с точностью до наличия "сумама" и "мегический" в исходном тексте.

 
 
 
 Re: Магический квадрат(microsoft visual c++)
Сообщение15.04.2014, 15:33 
Аватара пользователя
У вас есть ошибки в алгоритме проверки на "магичность".
Во-первых, вы обращаетесь к g[n], хотя такого элемента нет, у вас же массив до n-1 только.
Во-вторых, вы забыли сравнить с g[0] с c1.
В-третьих, вы на кой-то чёрт делаете проверку g[0]==с2 аж n раз в цикле, хотя достаточно одного раза.
В-четвёртых, у вас там вообще присвоение стоит, а не сравнение (одно равно вместо двух)
В-пятых, алгоритм проверки у вас вообще полностью некорректный, у вас достаточно совпадения с g[0] суммы первой вертикали, суммы второй горизонтали и одной диагонали, чтобы признать квадрат магическим.

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

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

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group