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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2007, 22:41   #1
drakon803
Пользователь
 
Регистрация: 10.12.2007
Сообщений: 14
По умолчанию Определить, является ли матрица магическим квадратом.

Приветик всем!
Помогите решить задачу :
задана матрица 7x7,элементы вводятся с клавиатуры.Определить ,является ли матрица магическим квадратом.
Прогу надо написать на турбо паскале.
drakon803 вне форума Ответить с цитированием
Старый 11.12.2007, 20:25   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Стесняюсь спросить, а что такое магический квадрат?
_Dmitry вне форума Ответить с цитированием
Старый 11.12.2007, 20:43   #3
Tayfun
Форумчанин
 
Аватар для Tayfun
 
Регистрация: 24.06.2007
Сообщений: 351
По умолчанию

Цитата:
Сообщение от _Dmitry Посмотреть сообщение
Стесняюсь спросить, а что такое магический квадрат?
Квадратная матрица, размером N*N где ниразу не повторяються эллементы ни в строках ни в столбцах, сумма всех строк, столбцов равны между собой.
Я не маюсь бездельем, я от него тащусь!

Последний раз редактировалось Tayfun; 11.12.2007 в 20:46.
Tayfun вне форума Ответить с цитированием
Старый 11.12.2007, 20:49   #4
Tayfun
Форумчанин
 
Аватар для Tayfun
 
Регистрация: 24.06.2007
Сообщений: 351
По умолчанию

Может на примере понятней будет... Здесь находиться программа нохождения волшебного квадрата размером 9Х9
Код:
program volhebniy_kvadrat;
uses crt;
var
per,a:array[1..9] of integer;
incl:array[1..9] of boolean;
s:array[1..8] of integer;
t,i,j:integer;
nep:boolean;
procedure perest(p:integer);
var
c:integer;
begin
if p-1=9 then begin
nep:=false;
s[1]:=per[1]+per[5]+per[9];
s[2]:=per[1]+per[4]+per[7];
s[3]:=per[2]+per[5]+per[8];
s[4]:=per[3]+per[6]+per[9];
s[5]:=per[3]+per[5]+per[7];
s[6]:=per[1]+per[2]+per[3];
s[7]:=per[4]+per[5]+per[6];
s[8]:=per[7]+per[8]+per[9];
for i:=1 to 8 do
for j:=1 to 8 do
if s[i]<>s[j] then nep:=true;
if nep=false then begin
writeln;
t:=t+1;
for i:=1 to 9 do begin
write(per[i]);
end;
end;
end;
for c:=1 to 9 do begin
if not incl[c] then begin
per[p]:=a[c];
incl[c]:=true;
perest(p+1);
per[p]:=0;
incl[c]:=false;
end;
end;
end;
begin
clrscr;
for i:=1 to 9 do begin a[i]:=i; write(a[i],' '); end;
perest(1);
writeln;
writeln(t);
readkey;
end.
Я не маюсь бездельем, я от него тащусь!
Tayfun вне форума Ответить с цитированием
Старый 12.12.2007, 09:16   #5
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

Цитата:
Сообщение от Tayfun Посмотреть сообщение
Может на примере понятней будет... Здесь находиться программа нохождения волшебного квадрата размером 9Х9
пример программы должен быть рабочим.
что она выводит извенити я не понял.

А есть разница между "волшебным" и "магическим" квадратом в принципе?

Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Старый 12.12.2007, 09:33   #6
Dront
 
Регистрация: 12.12.2007
Сообщений: 8
По умолчанию

Очень простой код, сделанный в C++. Перевести, думаю, не составит труда. Чем мог - помог. Турбопаскаль не знаю .
Код:
#include <vcl.h>
#include <iostream.h>
#include <conio.h>

main () {
	int x[10][10], i, j, k, n, check;
	cout << "Vvedite razmernost' kvadrata chisel: ";
	cin >> n;
	cout << "\nVvedite elementy kvadrata:\n";
	for (i = 1; i <= n; i++) {
		cout << "...dlya " << i << "-oy stroki:\n";
		for (j = 1; j <= 3; j++) {
			cin >> x[i][j];
		}
	}
	cout << "\nVvedyonnyy kvadrat:\n";
	for (i = 1; i <= n; i++) {
		for (j = 1; j <= n; j++) {
			cout << "\t" << x[i][j];
		}
		cout << "\n";
	}
	check = 0;
	for (i = 1; i <= n; i++) {
		for (j = 1; j <= n - 1; j++) {
			for (k = j + 1; k <= n; k++) {
				if (x[i][j] == x[i][k]) {
					check++;
				}
			}
		}
	}
	for (j = 1; j <= n; j++) {
		for (i = 1; i <= n - 1; i++) {
			for (k = i + 1; k <= n; k++) {
				if (x[i][j] == x[k][j]) {
					check++;
				}
			}
		}
	}
	if (check == 0) {
		cout << "\nVvedyonnyy kvadrat yavlyaetsya magicheskim.\n";
	} else {
		cout << "\nVvedyonnyy kvadrat ne yavlyaetsya magicheskim.\n";
	}
	getch ();
	return 0;
}
Dront вне форума Ответить с цитированием
Старый 12.12.2007, 09:40   #7
Dront
 
Регистрация: 12.12.2007
Сообщений: 8
По умолчанию

Ой... забыл про проверку сумм. Ладно, сейчас на занятия, оттуда приду и доделаю.
Dront вне форума Ответить с цитированием
Старый 12.12.2007, 20:15   #8
drakon803
Пользователь
 
Регистрация: 10.12.2007
Сообщений: 14
По умолчанию

Огромное СИБА за помощь!!!Теперь знаю как делать!
drakon803 вне форума Ответить с цитированием
Старый 12.12.2007, 23:22   #9
Dront
 
Регистрация: 12.12.2007
Сообщений: 8
По умолчанию

Эх... и доделывать не пришлось. Ладно. Удачи!
Dront вне форума Ответить с цитированием
Старый 14.12.2011, 12:06   #10
energylol
Новичок
Джуниор
 
Регистрация: 14.12.2011
Сообщений: 1
По умолчанию

привет) написала код на такую же задачу. нужно проверить является ли матрица, введённая с клавы, магическим квадратом. компилятор ругается =( причем очень сильно. heeelp me)
код:

#include<iostream.h>
#include <conio.h>
#include <windows.h>
#include <iomanip.h>
char* Rus(const char* text);
void main(void)
{
int n,i, j, sum1=0, sum2=0, sum3=0, sum4=0, a[10][10]; // sum1-сумма эл.строк, sum2-сумма эл.столбцов, sum3-сумма эл. главной диагонали, sum4-сумма эл. побочной диагонали
cout << Rus("Введите размерность матрицы ");
cin >> n;
cout << Rus("Введите элементы матрицы последовательно: ") << endl;
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
cin >> a[i][j];
}}
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
sum1=sum1+a[i][j];
}
cout << Rus("сумма элеметов") << i << Rus("строки: ") << sum1 << endl;
}
for (j=0; j<n; j++)
{
for (i=0; i<n; i++)
{
sum2=sum2+a[i][j];
}
cout << Rus("сумма элементов") << j << Rus("столбца: ") << sum2 << endl;
}
for (i=0; i<n; i++)
{
sum3=sum3+a[i][i];
}
cout << Rus("сумма элементов главной диагонали: ") << sum3 << endl;
for (i=0; i<n; i++)
{
sum4=sum4+a[i][i-n-1];
}
cout << Rus("сумма элементов побочной диагонали: ") << sum4 << endl;
if (sum3!=sum4)
{
cout << Rus("Матрица не является магическим квадратом") << endl;
}
if (sum1=sum2)
{
cout << Rus("Матрица является магическим квадратом") << endl;
}
char bufRus[256];
char* Rus(const char* text){
CharToOem(text,bufRus);
return bufRus;
}
energylol вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
По введенному номеру билета определить, является ли билет счастливым. veter_s_morya Паскаль, Turbo Pascal, PascalABC.NET 26 14.06.2011 20:39
Среди 20 введёных чисел определить чётные, распечатать их, определить min Spade Помощь студентам 4 15.06.2008 18:39
является ли матрица А ленточной Andrei18 Помощь студентам 3 23.11.2007 19:05
Определить, является ли заданная строка правильной записью вещественного числа Sergik1977 Паскаль, Turbo Pascal, PascalABC.NET 2 18.10.2007 16:53