|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Магический квадрат |
|
|
C/C++ - Магический квадрат
|
Новый участник Сообщения: 2 |
Профиль | Сайт | Отправить PM | Цитировать Написать программу, которая проверяет, является ли введенная с клавиатуры
квадратная матрица "магическим" квадратом. "Магическим" квадратом называется матрица, у которой сумма чисел в каждом горизонтальном ряду, в каждом вертикальном и по каждой из диагоналей одна и та же. Надеюсь, что люди умные тут сидят, сколько сам пытался написать ничего не выходит... |
|
Отправлено: 20:35, 03-09-2014 |
Забанен Сообщения: 5828
|
Предлагаете за вас всё написать? Где ваш код?
|
Отправлено: 20:56, 03-09-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 2
|
Профиль | Сайт | Отправить PM | Цитировать LehaMechanic,
#include <stdio.h> void main() { const int Height = 2; const int Weight = 2; int matrix[Height][Weight]= { {0, 0}, {0, 0} }; int sumINSTR = 0; //сумма в строках int sumINSTB = 0; //сумма в столбцах int DYAG1 = 0; //cумма в одной диагонали. int DYAG2 = 0; //сумма в другой диагонали. //Суммируем с строках for(int i = 0;i<Height;i++){ for(int j = 0;j<Weight;j++){ sumINSTR+=matrix[i][j]; } } //Суммируем в столбцах for(int t = 0;t<Weight;t++){ for(int j = 0;j<Height;j++){ sumINSTB+=matrix[t][j]; } } //Если матрица не квадратная возможен выход за буфер по строке //Суммируем в одной диагонали for(int p = 0, j = 0; p<Weight; p++,j++){ DYAG1+=matrix[p][j]; } //Если матрица не квадратная возможен выход за буфер по строке //Суммируем в другой диагонали for(int g = 0, k = Weight-1; k>=0; g++,k--){ DYAG2+=matrix[g][k]; } //Выводим суммы---------------- printf("%d",sumINSTR);printf("\n"); printf("%d",sumINSTB);printf("\n"); printf("%d",DYAG1);printf("\n"); printf("%d",DYAG2);printf("\n"); //----------------------------- int CONTROL = sumINSTR; //Проверка if((sumINSTB==CONTROL)&&(DYAG1==CONTROL)&&(DYAG2==CONTROL)){ printf("Magic Matrix\n"); } return; } |
Отправлено: 21:00, 03-09-2014 | #3 |
Забанен Сообщения: 5828
|
//Суммируем с строках for(int i = 0;i<Height;i++){ for(int j = 0;j<Weight;j++){ sumINSTR+=matrix[i][j]; Та же самая фигня у вас и для столбцов. |
Отправлено: 21:33, 03-09-2014 | #4 |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать Цитата colds0ul@vk:
|
||
------- Отправлено: 15:57, 04-09-2014 | #5 |
Ветеран Сообщения: 6211
|
Профиль | Отправить PM | Цитировать Цитата mwz:
|
|
Отправлено: 16:58, 04-09-2014 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Tau_0, обязательно. Иначе и быть не должно.
|
Отправлено: 18:21, 04-09-2014 | #7 |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Tau_0:
Почему и предпочитал всегда закладывать проверки на допустимость всех данных, какие возможно: "лучше перебдеть чем недобдеть". Как, впрочем, и инициализацию массивов в случаях, когда их можно не декларировать заранее а создавать по ходу дела. |
|
------- Отправлено: 19:13, 04-09-2014 | #8 |
Ветеран Сообщения: 6211
|
Профиль | Отправить PM | Цитировать Цитата mwz:
Цитата Iska:
Как правило за ВСЁ отвечает вызывающий модуль/программа, которая и генерирует данные. Хотя в зависимости от алгоритма порою и вниз задачу спустить можно В силу специфики задач (разреженные симметричные положительно определённые квадратные матрицы) для хранения матриц использовались ленточные и профильные схемы (одномерный масств + массивы указателей), а не двухмерные массивы. ЗЫ Зачем что-то долго в крутить в цикле на неверных данных..???... ЗЗЫ Про студенческие программки я не говорю --- приказали проверять (мусора наплодить), --- приказ следует выполнять... |
||
Отправлено: 20:53, 04-09-2014 | #9 |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Tau_0:
Ага. Но "если бы директором был я", то за такие отвлечённые комментарии в тексте курсовой одного балла студент точно не досчитался бы. В обоих случаях: и если вызывающий модуль выполняет эту проверку, в т.ч. если матрица даётся преподавателем гарантированно квадратная (что означает, что работа выполнена вообще бездумно), и если не выполняет (а тогда какого хрена не учёл, зная из этих слизанных комментариев, что возможен нештатный вылет программы). |
|
------- Отправлено: 00:27, 05-09-2014 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] Квадрат Малевича | Тинранище | Microsoft Windows 7 | 17 | 23-06-2013 22:44 | |
.NET - классы Circle (окружность), Square (квадрат) и Triangle (треугольник), производные от | Tomogochi | Программирование и базы данных | 1 | 19-06-2011 12:42 | |
Интерфейс - [решено] Черный квадрат Малевича вместо значка ярлыка на рабочем столе | S.M.A.X. | Microsoft Windows Vista | 15 | 08-09-2010 16:01 | |
Вместо любой картинки у меня белый квадрат с красным крестом внутри! | Tigina | Программное обеспечение Windows | 1 | 16-05-2008 22:12 | |
При печати на струйном принтере вместо картинки черный квадрат | Alexis72 | Программное обеспечение Windows | 0 | 18-10-2007 10:01 |
|