Epso

Untitled

May 2nd, 2012
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.93 KB | None | 0 0
  1. /*  Лабараторная работа №2
  2.     Задача №1
  3.     Дата написания: 20.04.2012
  4.     Группа: ВМИ-111, ЮУрГУ
  5.     Выполнил: Туприков Максим
  6. */
  7.  
  8. #include <stdio.h>
  9. #include <conio.h>
  10. #include <clocale>
  11.  
  12. int main() // Основная программа
  13. {
  14. setlocale(LC_ALL, "Russian");
  15. FILE* text_file;
  16. text_file = fopen("input.txt","r");
  17.  
  18. if(text_file == 0)
  19. {
  20.   printf("Ошибка! Не могу открыть файл input.txt. Для завершения работы нажмите Ввод");
  21.   getch();
  22.   return 0;
  23. }
  24.  
  25. int n; // кол-во строк в магическом квадрате
  26. bool Result = 1; // является ли квадрат магическим. 1 - да. 0 - нет.
  27. fscanf(text_file,"%i", &n);
  28.  
  29. int a[10][10];                // чтение самого квадрата
  30. for (int i = 0; i < n; i++)
  31.   for (int j = 0; j < n; j++)
  32.     fscanf(text_file, "%i", &a[i][j]);
  33.  
  34.  
  35.    
  36. fclose(text_file);
  37.  
  38. int Value = 0;                  // вычисление возможного числа магического квадрата
  39. for (int i = 0; i < n; i++)
  40.   Value += a[0][i];
  41.  
  42.  
  43. int TmpValueH, TmpValueV; // переменная для проверки числа маг. квадрата
  44. for (int i = 0; i < n; i++)
  45.   {
  46.   TmpValueH = TmpValueV = 0;
  47.   for (int j = 0; j < n; j++)
  48.     {
  49.     TmpValueH += a[i][j];
  50.     TmpValueV += a[j][i];
  51.     }
  52.   if ( (TmpValueH != Value) || (TmpValueV!= Value) )
  53.     Result = 0;
  54.   }
  55.  
  56. int TmpValue = 0; // Проверка диагонали
  57. for (int i = 0; i < n; i++)
  58.   TmpValue += a[i][i];
  59. if (TmpValue != Value)
  60.   Result = 0;
  61.  
  62. text_file = fopen("output.txt","w"); // запись ответа в файл
  63.  
  64. if (Result)
  65.   fprintf(text_file,"YES");
  66. else fprintf(text_file,"NO");
  67.  
  68. fclose(text_file);
  69.  
  70. for (int i = 0; i < n; i++)
  71. {
  72.   for (int j = 0; j < n; j++)
  73.     printf("%i ", a[i][j]);
  74. printf("\n");
  75. }
  76.  
  77. printf("Программа выполнена успешно.\nДля завершения работы нажмите Ввод");
  78. getch();
  79. return 0;
  80. }
  81.  
  82. /*---Тесты
  83. Номер      входные данные         ожидаемый результат       действительный:       Тест пройден?
  84. 1.          корректные, явл.          YES                       YES                   Да
  85.             магическим квадратом                                                                                
  86. 2.          N < действ. сторон       ----                     проверяет не            Нет
  87.             квадрата                                          весь квадрат
  88. 3.          N > действ. сторон       ----                     берет не объявл.        Нет  
  89.              квадрата                                         числа. NO
  90.  
  91. */
Advertisement
Add Comment
Please, Sign In to add comment