Магический квадрат
Народ! Подскажите, что не так в программе.
Задание: Выяснить, является ли заданная квадратная матрица «магическим квадратом». Магический квадрат - это матрица в которой сумма всех строк, всех столбцов и всех диагоналей равны. Код:
procedure TForm1.Button2Click(Sender: TObject); Огромное спасибо, всем отозвавшимся :tehnari_ru_953: |
Как то интересно ты все делаешь..Я толком не помню паскаль но одно скажу тебе точно.. ты задаёшь двумерный массив,не чем его не заполняя, сразу начинаешь что то проверять как одномерный(что не верно) ...и проверка будет совсем по другому...
для начала заполни двумерный массив и выведи его на экран, потом выполни условие проверки для него и вывод "вердикта!" ;) массив сделай лучше поменьше(а то запаришся его заполнять в ручную, а random-ом он тебе где то с 1000 раза только этот квадрат сформирует) сделай 3 на 3 и random задай удобный что бы "генерил" каждый 3 раз нужную матрицу |
там была процедура главная в проге...
вот пожалуйста вся прога целиком: Код:
unit Unit1; |
че то тут у вас уже набуровлено :D даже не разберусь наверн ))
В общем я бы сделал проще : создаем двумерный массив и потом в циклах считаем его строки, столбцы диагонали и сверяем их друг с другом, последовательно если хоть одно отличие нашлось то вывод матрица не "магическая" ..ведь задача стоит проверить маг. квадрат а не построить ;) |
Блин, очень лень разбираться в вашей программе и тем более что-то писать...
Ладно, если не много подождёте сделаю... |
Цитата:
Прежде всего, прошу прощения, я буду разбирать программу только с точки зрения Паскаля - с "дельфийскими" прибамбасами разбирайтесь сами. 1. Начинаете Вы с того, что подсчитываете сумму ВСЕХ ЭЛЕМЕНТОВ МАТРИЦЫ! Вопрос - зачем? И это Вы делаете весьма странным образом. Кто Вам мешает ввести второй счетчик? 2. Далее. В обоих циклах ("проверяем все строки" и "проверяем все столбцы") Вы ВНОВЬ СУММИРУЕТЕ ВСЕ ЭЛЕМЕНТЫ МАТРИЦЫ! Естественно, эти суммы совпадут с исходной. 3. В цикле "проверяем диагонали" Вы суммируете элементы ТОЛЬКО ГЛАВНОЙ ДИАГОНАЛИ. Эта сумма, разумеется, с исходной не совпадет. Для начала предлагаю не оптимальный, но зато простой вариант: Код:
procedure TForm1.Button2Click(Sender: TObject); |
Я сделал так...
Код:
unit Unit1; |
Часовой пояс GMT +4, время: 10:37. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.