Advertisement
Guest User

Untitled

a guest
Mar 29th, 2015
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.77 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <fstream>
  3. #include <iostream>
  4. using namespace std;
  5. // Получение суммы A[][] по столбцам в sum[]
  6. void get_sum(int**A, int *sum)
  7. {
  8.     for (int i = 0; i < 5; i++) sum[i] = 0;
  9.     for (int i = 0; i < 5; i++) {
  10.         for (int j = 0; j < 5; j++) {
  11.             sum[i] += A[j][i];
  12.         }
  13.     }
  14. }
  15. // Выбор номеров столбцов с нулевой суммуой
  16. // и добавление их в delete_list
  17. int get_index(int *sum, int *index, int *delete_list)
  18. {
  19.     int j = 0; int max_i = 0;
  20.     for (int i = 0; i < 5; i++) {
  21.         if (sum[i] == 0) { index[j] = i; j++; delete_list[i] = 1; max_i++; }
  22.     }
  23.     return max_i;
  24. }
  25. // заполнение строк из delete_list нулями
  26. void do_fill(int**A, int *delete_list)
  27. {
  28.     int i;
  29.     for (i = 0; i < 5; i++) {
  30.         if (delete_list[i] == 1) {
  31.             for (int j = 0; j < 5; j++) {
  32.                 A[i][j] = 0;
  33.             }
  34.         }
  35.     }
  36.    
  37. }
  38.  
  39. int _tmain(int argc, _TCHAR* argv[])
  40. {
  41.     ifstream in("in.txt");
  42.     int **A = new int*[5];
  43.     for (int i = 0; i < 5; ++i)
  44.         A[i] = new int[5];
  45.     for (int i = 0; i < 5; i++) {
  46.         for (int j = 0; j < 5; j++) {
  47.             in >> A[i][j];
  48.         }
  49.     }
  50.     int sum[5];
  51.     int index[5];
  52.     int max_i = 0;
  53.     int delete_list[5] = { 0, 0, 0, 0, 0 };
  54.    
  55.     for (int i = 0; i < 5; i++) {
  56.         get_sum(A, sum);
  57.         // если сумма по всем столбцам 0 - записать оставшиеся вершины и выйти из цикла
  58.         if (sum[0] == 0 && sum[1] == 0 && sum[2] == 0 && sum[3] == 0 && sum[4] == 0) {
  59.            
  60.             for (int i = 0; i < 5; i++) {
  61.                 if (delete_list[i] == 0) { index[max_i] = i; max_i++; }
  62.  
  63.             }
  64.             break;
  65.         }
  66.         max_i = get_index(sum, index, delete_list);
  67.         do_fill(A, delete_list);
  68.        
  69.     }
  70.    
  71.     for (int i = 0; i < 5; i++) {
  72.         cout << index[i];
  73.     }
  74.     return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement