Advertisement
Guest User

Untitled

a guest
Nov 3rd, 2015
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 14.40 KB | None | 0 0
  1.  
  2.  
  3. Отправлено с iPhone
  4.  
  5. Начало переадресованного сообщения:
  6.  
  7. От: Olya Cherednikova <olcherednikova@gmail.com>
  8. Дата: 3 ноября 2015 г., 0:35:16 GMT+3
  9. Кому: v-olesia1998@yandex.ru
  10. Тема: Перенапр.: ghjuf 3
  11.  
  12.  
  13.  
  14. ---------- Forwarded message ----------
  15. From: Olya Cherednikova <olcherednikova@gmail.com>
  16. Date: Monday, 2 November 2015
  17. Subject: ghjuf 3
  18. To: Olya Cherednikova <olcherednikova@gmail.com>
  19.  
  20.  
  21. #include "stdio.h"
  22. #include "stdafx.h"
  23. #include "ctype.h"
  24. #include "conio.h"
  25. #include "math.h"
  26. #include "clocale"
  27. #include "stdlib.h"
  28.  
  29. int     A[20][20],
  30. B[20][20],
  31. C[20][20],
  32. n,
  33. i,
  34. j,
  35. k,
  36. input,
  37. x,
  38. y,
  39. rep;
  40. char    ans;
  41.  
  42. void random_A()//Автозаполнение матрицы А
  43. {
  44.     i = 0;
  45.     while (i < n)
  46.     {
  47.         j = 0;
  48.         while (j < n)
  49.         {
  50.             A[i][j] = rand() % 100 + 1; // (% 100) — генерация чисел в диапазоне от 0 до 99 || (% 100 + 1) — генерация чисел в диапазоне от 1 до 100
  51.             j++;
  52.         }
  53.         i++;
  54.     }
  55. }
  56.  
  57. void random_B()//Автозаполнение матрицы B
  58. {
  59.     i = 0;
  60.     while (i < n)
  61.     {
  62.         j = 0;
  63.         while (j < n)
  64.         {
  65.             B[i][j] = rand() % 100 + 1;
  66.             j++;
  67.         }
  68.         i++;
  69.     }
  70. }
  71.  
  72. void identity_A() //Единичная матрица A
  73. {
  74.     for (i = 0; i < n; i++)
  75.     {
  76.         for (j = 0; j < n; j++)
  77.         {
  78.             if (i == j)
  79.                 A[i][j] = 1;
  80.             else
  81.                 A[i][j] = 0;
  82.         }
  83.     }
  84. }
  85.  
  86. void identity_B() //Единичная матрица B
  87. {
  88.     for (i = 0; i < n; i++)
  89.     {
  90.         for (j = 0; j < n; j++)
  91.         {
  92.             if (i == j)
  93.                 B[i][j] = 1;
  94.             else
  95.                 B[i][j] = 0;
  96.         }
  97.     }
  98. }
  99.  
  100. void manual_A()//Ручной ввод А
  101. {
  102.     system("cls");
  103.     for (i = 0; i < n; i++)
  104.     {
  105.         for (j = 0; j < n; j++)
  106.         {
  107.             printf("Введите элемент (%d;%d) матрицы A \n", i + 1, j + 1);
  108.             scanf_s("%d", &A[i][j]);
  109.         }
  110.     }
  111. }
  112.  
  113. void manual_B() //Ручной ввод В
  114. {
  115.     system("cls");
  116.     for (i = 0; i < n; i++)
  117.     {
  118.         for (j = 0; j < n; j++)
  119.         {
  120.             printf("Введите элемент (%d;%d) матрицы B \n", i + 1, j + 1);
  121.             scanf_s("%d", &B[i][j]);
  122.         }
  123.     }
  124. }
  125.  
  126. void output_a() //Вывод матрицы А
  127. {
  128.     printf("Матрица А: \n");
  129.     for (i = 0; i < n; i++)
  130.     {
  131.         for (j = 0; j < n; j++)
  132.         {
  133.             printf("%d\t", A[i][j]);
  134.         }
  135.         printf("\n");
  136.     }
  137. }
  138.  
  139. void output_b() //Вывод матрицы B
  140. {
  141.     printf("Матрица B: \n");
  142.     for (i = 0; i < n; i++)
  143.     {
  144.         for (j = 0; j < n; j++)
  145.         {
  146.             printf("%d\t", B[i][j]);
  147.         }
  148.         printf("\n");
  149.     }
  150. }
  151.  
  152. void edit_a() //Редактирование матрицы A
  153. {
  154.     system("cls");
  155.     do // Выбор редактируемого элемента
  156.     {
  157.         output_a();
  158.         printf("\nКакой элемент вы хотите редактировать?\n");//Редактирование элемента
  159.         printf("Введите координату x элемента А(х,y) \n");//Ввод первой координаты
  160.         scanf_s("%d", &x);
  161.         printf("Введите координату y элемента А(х,y) \n");//Ввод второй координаты
  162.         scanf_s("%d", &y);
  163.         if (x > n || y > n)//Если хотя бы одна из координат не соответстует значению
  164.         {
  165.             system("cls");
  166.             printf("Неверный ввод \n\n");
  167.             continue;
  168.         }
  169.         else //Если соответствует
  170.         {
  171.             printf("Введите новое значение элемента А(%d,%d) \n", x, y);//Ввод элемента
  172.             scanf_s("%d", &A[x - 1][y - 1]); //Нумерация идёт с нуля
  173.             printf("\n");
  174.             output_a();
  175.             printf("\nПродолжить редактирование (y/n)?\n");
  176.             scanf_s("%s", &ans, 2); //Пишем 2, потому что строки в Си закачиваются нулевым символом "\0"
  177.             if (ans == 'y')
  178.             {
  179.                 system("cls");
  180.                 continue;
  181.             }
  182.             else if (ans == 'n')
  183.             {
  184.                 break;
  185.             }
  186.  
  187.             else
  188.             {
  189.                 system("cls");
  190.                 printf("Неверный ввод \n");
  191.                 continue;
  192.             }
  193.         }
  194.     } while (ans != 'y' || ans != 'n');
  195. }
  196.  
  197. void edit_b() //Вывод матрицы B
  198. {
  199.     system("cls");
  200.     do // Выбор редактируемого элемента
  201.     {
  202.         output_b();
  203.         printf("\nКакой элемент вы хотите редактировать?\n");//Редактирование элемента
  204.         printf("Введите координату x элемента B(х,y) \n");//Ввод первой координаты
  205.         scanf_s("%d", &x);
  206.         printf("Введите координату y элемента B(х,y) \n");//Ввод второй координаты
  207.         scanf_s("%d", &y);
  208.         if (x > n || y > n)//Если хотя бы одна из координат не соответстует значению
  209.         {
  210.             system("cls");
  211.             printf("Неверный ввод \n\n");
  212.             continue;
  213.         }
  214.         else //Если соответствует
  215.         {
  216.             printf("Введите новое значение элемента B(%d,%d) \n", x, y);//Ввод элемента
  217.             scanf_s("%d", &B[x - 1][y - 1]);
  218.             output_b();
  219.  
  220.             printf("\nПродолжить редактирование (y/n)?\n");
  221.             scanf_s("%s", &ans, 2);
  222.             if (ans == 'y')
  223.             {
  224.                 system("cls");
  225.                 continue;
  226.             }
  227.             else if (ans == 'n')
  228.             {
  229.                 break;
  230.             }
  231.  
  232.             else
  233.             {
  234.                 system("cls");
  235.                 printf("Неверный ввод \n");
  236.                 continue;
  237.             }
  238.         }
  239.     } while (ans != 'y' || ans != 'n');
  240. }
  241.  
  242. void addition()//Операция сложения матриц
  243. {
  244.     printf("\nМатрица C=A+B: \n");
  245.     i = 0;
  246.     do {
  247.         j = 0;
  248.         do
  249.         {
  250.             printf("%d\t", A[i][j] + B[i][j]);
  251.             j++;
  252.         } while (j < n);
  253.  
  254.         printf("\n");
  255.         i++;
  256.     }
  257.  
  258.     while (i < n);
  259.     printf("\n");
  260.     rep++;
  261. }
  262.  
  263. void multiplication() //Операция умножения матриц
  264. {
  265.     printf("\nМатрица C=A*B: \n");
  266.     i = 0;
  267.     for (i = 0; i < n; i++){
  268.         for (j = 0; j < n; j++)
  269.         {
  270.             C[i][j] = 0;
  271.             for (k = 0; k < n; k++)
  272.                 C[i][j] += A[i][k] * B[k][j];
  273.         }
  274.     }
  275.     for (i = 0; i < n; i++)
  276.     {
  277.         for (j = 0; j < n; j++)
  278.         {
  279.             printf("%d\t", C[i][j]);
  280.         }
  281.         printf("\n");
  282.     }
  283.     printf("\n");
  284.     rep++;
  285. }
  286.  
  287. void repeat()//Повторение операций
  288. {
  289.     system("cls");
  290.     printf("Какую операцию вы хотите выполнить?\n");
  291.     printf("1. Сложение \n");
  292.     printf("2. Умножение \n");
  293.     printf("Ваш выбор: ");
  294.     scanf_s("%d", &input);
  295.     system("cls");
  296.     output_a();
  297.     output_b();
  298.     switch (input)
  299.     {
  300.     case 1:
  301.         addition();
  302.         break;
  303.     case 2:
  304.         multiplication();
  305.         break;
  306.     default:
  307.         system("cls");
  308.         printf("Неправильный ввод! \n");
  309.         do // Повторное выполнение программы
  310.         {
  311.             printf("Продолжить работу с программой? (y/n)");
  312.             {
  313.                 scanf_s("%s", &ans, 2);
  314.                 if (ans == 'y')
  315.                 {
  316.                     system("cls");
  317.                     repeat();
  318.                 }
  319.                 else if (ans == 'n')
  320.                 {
  321.                     exit(0);
  322.                 }
  323.  
  324.                 else
  325.                 {
  326.                     system("cls");
  327.                     printf("Неправильный ввод!\n\n");
  328.                     continue;
  329.                 }
  330.             }
  331.         } while (ans != 'y' || ans != 'n');
  332.  
  333.     }
  334. }
  335.  
  336. int main()
  337. {
  338.     setlocale(LC_CTYPE, "rus");
  339.     printf("Введите размер используемых квадратных матриц (не более 20):\n");//Определение размера матрицы
  340.     scanf_s("%d", &n);
  341.     if (n>0 && n<21) //Если введен размер, соответствующий условию
  342.     {
  343.         system("cls");
  344.         printf("Ввод матрицы А. Выберите способ:\n");
  345.         printf("1. Случайно (автозаполнение)\n");
  346.         printf("2. Единичная матрица (автозаполнение) \n");
  347.         printf("3. Ввод элементов с клавиатуры\n");
  348.         printf("Ваш выбор: ");
  349.         scanf_s("%d", &input);
  350.         switch (input)
  351.         {
  352.         case 1: //Автозаполнение случайными числами
  353.             random_A();
  354.             break;
  355.         case 2: //Автозаполнение единичной матрицы
  356.             identity_A();
  357.             break;
  358.         case 3: //Ввод с клавиатуры
  359.             manual_A();
  360.             break;
  361.         default: //При иных введенных значениях
  362.             system("cls");
  363.             printf("Неправильный ввод! \n");
  364.             do // Повторное выполнение программы
  365.             {
  366.                 printf("Продолжить работу с программой? (y/n)");
  367.                 {
  368.                     scanf_s("%s", &ans, 2);
  369.                     if (ans == 'y')
  370.                     {
  371.                         system("cls");
  372.                         main();
  373.                     }
  374.                     else if (ans == 'n')
  375.                     {
  376.                         exit(0);
  377.                     }
  378.  
  379.                     else
  380.                     {
  381.                         system("cls");
  382.                         printf("Неправильный ввод!\n\n");
  383.                         continue;
  384.                     }
  385.                 }
  386.             } while (ans != 'y' || ans != 'n');
  387.             break;
  388.         }
  389.         system("cls");
  390.         output_a();
  391.         printf("\nВы хотите редактировать матрицу? (y/n)");//Редактирование матрицы
  392.         scanf_s("%s", &ans, 2);
  393.         if (ans == 'y') //При согласии на редактирование
  394.         {
  395.             edit_a();
  396.         }
  397.         else if (ans == 'n')
  398.         {
  399.             system("cls");
  400.         }
  401.         else
  402.         {
  403.             system("cls");
  404.             printf("Неправильный ввод! \n");
  405.             do // Повторное выполнение программы
  406.             {
  407.                 printf("Продолжить работу с программой? (y/n)");
  408.                 {
  409.                     scanf_s("%s", &ans, 2);
  410.                     if (ans == 'y')
  411.                     {
  412.                         system("cls");
  413.                         main();
  414.                     }
  415.                     else if (ans == 'n')
  416.                     {
  417.                         exit(0);
  418.                     }
  419.  
  420.                     else
  421.                     {
  422.                         system("cls");
  423.                         printf("Неправильный ввод!\n\n");
  424.                         continue;
  425.                     }
  426.                 }
  427.             } while (ans != 'y' || ans != 'n');
  428.         }
  429.  
  430.         system("cls");
  431.         printf("Ввод матрицы B. Выберите способ:\n");
  432.         printf("1. Случайно (автозаполнение)\n");
  433.         printf("2. Единичная матрица (автозаполнение) \n");
  434.         printf("3. Ввод элементов с клавиатуры\n");
  435.         printf("Ваш выбор: ");
  436.         scanf_s("%d", &input);
  437.         switch (input)
  438.         {
  439.         case 1: //Автозаполнение случайными числами
  440.             random_B();
  441.             break;
  442.         case 2: //Автозаполнение единичной матрицы
  443.             identity_B();
  444.             break;
  445.         case 3: //Ввод с клавиатуры
  446.             manual_B();
  447.             break;
  448.         default: //При иных введенных значениях
  449.             system("cls");
  450.             printf("Неправильный ввод! \n");
  451.             do // Повторное выполнение программы
  452.             {
  453.                 printf("Продолжить работу с программой? (y/n)");
  454.                 {
  455.                     scanf_s("%s", &ans, 2);
  456.                     if (ans == 'y')
  457.                     {
  458.                         system("cls");
  459.                         main();
  460.                     }
  461.                     else if (ans == 'n')
  462.                     {
  463.                         exit(0);
  464.                     }
  465.  
  466.                     else
  467.                     {
  468.                         system("cls");
  469.                         printf("Неправильный ввод!\n\n");
  470.                         continue;
  471.                     }
  472.                 }
  473.             } while (ans != 'y' || ans != 'n');
  474.             break;
  475.         }
  476.         system("cls");
  477.         output_b();
  478.         printf("\nВы хотите редактировать матрицу? (y/n)");//Редактирование матрицы
  479.         scanf_s("%s", &ans, 2);
  480.         if (ans == 'y') //При согласии на редактирование
  481.         {
  482.             edit_b();
  483.         }
  484.         else if (ans == 'n')
  485.         {
  486.             system("cls");
  487.         }
  488.         else
  489.         {
  490.             system("cls");
  491.             printf("Неправильный ввод! \n");
  492.             do // Повторное выполнение программы
  493.             {
  494.                 printf("Продолжить работу с программой? (y/n)");
  495.                 {
  496.                     scanf_s("%s", &ans, 2);
  497.                     if (ans == 'y')
  498.                     {
  499.                         system("cls");
  500.                         main();
  501.                     }
  502.                     else if (ans == 'n')
  503.                     {
  504.                         exit(0);
  505.                     }
  506.  
  507.                     else
  508.                     {
  509.                         system("cls");
  510.                         printf("Неправильный ввод!\n\n");
  511.                         continue;
  512.                     }
  513.                 }
  514.             } while (ans != 'y' || ans != 'n');
  515.         }
  516.  
  517.         system("cls");
  518.         output_a(); // Вывод А
  519.         output_b(); // Вывод В
  520.         system("cls");
  521.         printf("Какую операцию вы хотите выполнить?\n");
  522.         printf("1. Сложение \n");
  523.         printf("2. Умножение \n");
  524.         printf("Ваш выбор: ");
  525.         scanf_s("%d", &input);
  526.         system("cls");
  527.         output_a();
  528.         output_b();
  529.         switch (input)
  530.         {
  531.         case 1:
  532.             addition();
  533.             break;
  534.         case 2:
  535.             multiplication();
  536.             break;
  537.         default:
  538.             system("cls");
  539.             printf("Неправильный ввод! \n");
  540.  
  541.             do // Повторное выполнение программы
  542.             {
  543.                 printf("Продолжить работу с программой? (y/n)");
  544.                 {
  545.                     scanf_s("%s", &ans, 2);
  546.                     if (ans == 'y')
  547.                     {
  548.                         system("cls");
  549.                         main();
  550.                     }
  551.                     else if (ans == 'n')
  552.                     {
  553.                         exit(0);
  554.                     }
  555.  
  556.                     else
  557.                     {
  558.                         system("cls");
  559.                         printf("Неправильный ввод!\n\n");
  560.                         continue;
  561.                     }
  562.                 }
  563.             } while (ans != 'y' || ans != 'n');
  564.         }
  565.     }
  566.     else //Если неверно введен размер
  567.     {
  568.         system("cls");
  569.         printf("Неправильный ввод!\n\n");
  570.     }
  571.     if (rep > 0)
  572.     {
  573.         do // Повторное выполнение программы
  574.         {
  575.             printf("Вы хотите заново ввести матрицы, продолжить операции с введёнными матрицами или закрыть програму? \n (y-ввести заново) \n (r-продолжить операции с введёнными матрицами) \n (n-закрыть программу)");
  576.             {
  577.                 scanf_s("%s", &ans, 2);
  578.                 if (ans == 'y')
  579.                 {
  580.                     system("cls");
  581.                     main();
  582.                 }
  583.                 else if (ans == 'n')
  584.                 {
  585.                     exit(0);
  586.                 }
  587.  
  588.                 else if (ans == 'r')
  589.                 {
  590.                     repeat();
  591.                 }
  592.  
  593.                 else
  594.                 {
  595.                     system("cls");
  596.                     printf("Неправильный ввод!\n\n");
  597.                     continue;
  598.                 }
  599.             }
  600.         } while (ans != 'y' || ans != 'n');
  601.     }
  602.  
  603.     else
  604.     {
  605.         do // Повторное выполнение программы
  606.         {
  607.             printf("Продолжить работу с программой? (y/n)");
  608.             {
  609.                 scanf_s("%s", &ans, 2);
  610.                 if (ans == 'y')
  611.                 {
  612.                     system("cls");
  613.                     main();
  614.                 }
  615.                 else if (ans == 'n')
  616.                 {
  617.                     exit(0);
  618.                 }
  619.  
  620.                 else
  621.                 {
  622.                     system("cls");
  623.                     printf("Неправильный ввод!\n\n");
  624.                     continue;
  625.                 }
  626.             }
  627.         } while (ans != 'y' || ans != 'n');
  628.     }
  629. }
  630.  
  631.  
  632.  
  633. --
  634. All the best, Olga
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement