Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Отправлено с iPhone
- Начало переадресованного сообщения:
- От: Olya Cherednikova <olcherednikova@gmail.com>
- Дата: 3 ноября 2015 г., 0:35:16 GMT+3
- Кому: v-olesia1998@yandex.ru
- Тема: Перенапр.: ghjuf 3
- ---------- Forwarded message ----------
- From: Olya Cherednikova <olcherednikova@gmail.com>
- Date: Monday, 2 November 2015
- Subject: ghjuf 3
- To: Olya Cherednikova <olcherednikova@gmail.com>
- #include "stdio.h"
- #include "stdafx.h"
- #include "ctype.h"
- #include "conio.h"
- #include "math.h"
- #include "clocale"
- #include "stdlib.h"
- int A[20][20],
- B[20][20],
- C[20][20],
- n,
- i,
- j,
- k,
- input,
- x,
- y,
- rep;
- char ans;
- void random_A()//Автозаполнение матрицы А
- {
- i = 0;
- while (i < n)
- {
- j = 0;
- while (j < n)
- {
- A[i][j] = rand() % 100 + 1; // (% 100) — генерация чисел в диапазоне от 0 до 99 || (% 100 + 1) — генерация чисел в диапазоне от 1 до 100
- j++;
- }
- i++;
- }
- }
- void random_B()//Автозаполнение матрицы B
- {
- i = 0;
- while (i < n)
- {
- j = 0;
- while (j < n)
- {
- B[i][j] = rand() % 100 + 1;
- j++;
- }
- i++;
- }
- }
- void identity_A() //Единичная матрица A
- {
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- if (i == j)
- A[i][j] = 1;
- else
- A[i][j] = 0;
- }
- }
- }
- void identity_B() //Единичная матрица B
- {
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- if (i == j)
- B[i][j] = 1;
- else
- B[i][j] = 0;
- }
- }
- }
- void manual_A()//Ручной ввод А
- {
- system("cls");
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- printf("Введите элемент (%d;%d) матрицы A \n", i + 1, j + 1);
- scanf_s("%d", &A[i][j]);
- }
- }
- }
- void manual_B() //Ручной ввод В
- {
- system("cls");
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- printf("Введите элемент (%d;%d) матрицы B \n", i + 1, j + 1);
- scanf_s("%d", &B[i][j]);
- }
- }
- }
- void output_a() //Вывод матрицы А
- {
- printf("Матрица А: \n");
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- printf("%d\t", A[i][j]);
- }
- printf("\n");
- }
- }
- void output_b() //Вывод матрицы B
- {
- printf("Матрица B: \n");
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- printf("%d\t", B[i][j]);
- }
- printf("\n");
- }
- }
- void edit_a() //Редактирование матрицы A
- {
- system("cls");
- do // Выбор редактируемого элемента
- {
- output_a();
- printf("\nКакой элемент вы хотите редактировать?\n");//Редактирование элемента
- printf("Введите координату x элемента А(х,y) \n");//Ввод первой координаты
- scanf_s("%d", &x);
- printf("Введите координату y элемента А(х,y) \n");//Ввод второй координаты
- scanf_s("%d", &y);
- if (x > n || y > n)//Если хотя бы одна из координат не соответстует значению
- {
- system("cls");
- printf("Неверный ввод \n\n");
- continue;
- }
- else //Если соответствует
- {
- printf("Введите новое значение элемента А(%d,%d) \n", x, y);//Ввод элемента
- scanf_s("%d", &A[x - 1][y - 1]); //Нумерация идёт с нуля
- printf("\n");
- output_a();
- printf("\nПродолжить редактирование (y/n)?\n");
- scanf_s("%s", &ans, 2); //Пишем 2, потому что строки в Си закачиваются нулевым символом "\0"
- if (ans == 'y')
- {
- system("cls");
- continue;
- }
- else if (ans == 'n')
- {
- break;
- }
- else
- {
- system("cls");
- printf("Неверный ввод \n");
- continue;
- }
- }
- } while (ans != 'y' || ans != 'n');
- }
- void edit_b() //Вывод матрицы B
- {
- system("cls");
- do // Выбор редактируемого элемента
- {
- output_b();
- printf("\nКакой элемент вы хотите редактировать?\n");//Редактирование элемента
- printf("Введите координату x элемента B(х,y) \n");//Ввод первой координаты
- scanf_s("%d", &x);
- printf("Введите координату y элемента B(х,y) \n");//Ввод второй координаты
- scanf_s("%d", &y);
- if (x > n || y > n)//Если хотя бы одна из координат не соответстует значению
- {
- system("cls");
- printf("Неверный ввод \n\n");
- continue;
- }
- else //Если соответствует
- {
- printf("Введите новое значение элемента B(%d,%d) \n", x, y);//Ввод элемента
- scanf_s("%d", &B[x - 1][y - 1]);
- output_b();
- printf("\nПродолжить редактирование (y/n)?\n");
- scanf_s("%s", &ans, 2);
- if (ans == 'y')
- {
- system("cls");
- continue;
- }
- else if (ans == 'n')
- {
- break;
- }
- else
- {
- system("cls");
- printf("Неверный ввод \n");
- continue;
- }
- }
- } while (ans != 'y' || ans != 'n');
- }
- void addition()//Операция сложения матриц
- {
- printf("\nМатрица C=A+B: \n");
- i = 0;
- do {
- j = 0;
- do
- {
- printf("%d\t", A[i][j] + B[i][j]);
- j++;
- } while (j < n);
- printf("\n");
- i++;
- }
- while (i < n);
- printf("\n");
- rep++;
- }
- void multiplication() //Операция умножения матриц
- {
- printf("\nМатрица C=A*B: \n");
- i = 0;
- for (i = 0; i < n; i++){
- for (j = 0; j < n; j++)
- {
- C[i][j] = 0;
- for (k = 0; k < n; k++)
- C[i][j] += A[i][k] * B[k][j];
- }
- }
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- printf("%d\t", C[i][j]);
- }
- printf("\n");
- }
- printf("\n");
- rep++;
- }
- void repeat()//Повторение операций
- {
- system("cls");
- printf("Какую операцию вы хотите выполнить?\n");
- printf("1. Сложение \n");
- printf("2. Умножение \n");
- printf("Ваш выбор: ");
- scanf_s("%d", &input);
- system("cls");
- output_a();
- output_b();
- switch (input)
- {
- case 1:
- addition();
- break;
- case 2:
- multiplication();
- break;
- default:
- system("cls");
- printf("Неправильный ввод! \n");
- do // Повторное выполнение программы
- {
- printf("Продолжить работу с программой? (y/n)");
- {
- scanf_s("%s", &ans, 2);
- if (ans == 'y')
- {
- system("cls");
- repeat();
- }
- else if (ans == 'n')
- {
- exit(0);
- }
- else
- {
- system("cls");
- printf("Неправильный ввод!\n\n");
- continue;
- }
- }
- } while (ans != 'y' || ans != 'n');
- }
- }
- int main()
- {
- setlocale(LC_CTYPE, "rus");
- printf("Введите размер используемых квадратных матриц (не более 20):\n");//Определение размера матрицы
- scanf_s("%d", &n);
- if (n>0 && n<21) //Если введен размер, соответствующий условию
- {
- system("cls");
- printf("Ввод матрицы А. Выберите способ:\n");
- printf("1. Случайно (автозаполнение)\n");
- printf("2. Единичная матрица (автозаполнение) \n");
- printf("3. Ввод элементов с клавиатуры\n");
- printf("Ваш выбор: ");
- scanf_s("%d", &input);
- switch (input)
- {
- case 1: //Автозаполнение случайными числами
- random_A();
- break;
- case 2: //Автозаполнение единичной матрицы
- identity_A();
- break;
- case 3: //Ввод с клавиатуры
- manual_A();
- break;
- default: //При иных введенных значениях
- system("cls");
- printf("Неправильный ввод! \n");
- do // Повторное выполнение программы
- {
- printf("Продолжить работу с программой? (y/n)");
- {
- scanf_s("%s", &ans, 2);
- if (ans == 'y')
- {
- system("cls");
- main();
- }
- else if (ans == 'n')
- {
- exit(0);
- }
- else
- {
- system("cls");
- printf("Неправильный ввод!\n\n");
- continue;
- }
- }
- } while (ans != 'y' || ans != 'n');
- break;
- }
- system("cls");
- output_a();
- printf("\nВы хотите редактировать матрицу? (y/n)");//Редактирование матрицы
- scanf_s("%s", &ans, 2);
- if (ans == 'y') //При согласии на редактирование
- {
- edit_a();
- }
- else if (ans == 'n')
- {
- system("cls");
- }
- else
- {
- system("cls");
- printf("Неправильный ввод! \n");
- do // Повторное выполнение программы
- {
- printf("Продолжить работу с программой? (y/n)");
- {
- scanf_s("%s", &ans, 2);
- if (ans == 'y')
- {
- system("cls");
- main();
- }
- else if (ans == 'n')
- {
- exit(0);
- }
- else
- {
- system("cls");
- printf("Неправильный ввод!\n\n");
- continue;
- }
- }
- } while (ans != 'y' || ans != 'n');
- }
- system("cls");
- printf("Ввод матрицы B. Выберите способ:\n");
- printf("1. Случайно (автозаполнение)\n");
- printf("2. Единичная матрица (автозаполнение) \n");
- printf("3. Ввод элементов с клавиатуры\n");
- printf("Ваш выбор: ");
- scanf_s("%d", &input);
- switch (input)
- {
- case 1: //Автозаполнение случайными числами
- random_B();
- break;
- case 2: //Автозаполнение единичной матрицы
- identity_B();
- break;
- case 3: //Ввод с клавиатуры
- manual_B();
- break;
- default: //При иных введенных значениях
- system("cls");
- printf("Неправильный ввод! \n");
- do // Повторное выполнение программы
- {
- printf("Продолжить работу с программой? (y/n)");
- {
- scanf_s("%s", &ans, 2);
- if (ans == 'y')
- {
- system("cls");
- main();
- }
- else if (ans == 'n')
- {
- exit(0);
- }
- else
- {
- system("cls");
- printf("Неправильный ввод!\n\n");
- continue;
- }
- }
- } while (ans != 'y' || ans != 'n');
- break;
- }
- system("cls");
- output_b();
- printf("\nВы хотите редактировать матрицу? (y/n)");//Редактирование матрицы
- scanf_s("%s", &ans, 2);
- if (ans == 'y') //При согласии на редактирование
- {
- edit_b();
- }
- else if (ans == 'n')
- {
- system("cls");
- }
- else
- {
- system("cls");
- printf("Неправильный ввод! \n");
- do // Повторное выполнение программы
- {
- printf("Продолжить работу с программой? (y/n)");
- {
- scanf_s("%s", &ans, 2);
- if (ans == 'y')
- {
- system("cls");
- main();
- }
- else if (ans == 'n')
- {
- exit(0);
- }
- else
- {
- system("cls");
- printf("Неправильный ввод!\n\n");
- continue;
- }
- }
- } while (ans != 'y' || ans != 'n');
- }
- system("cls");
- output_a(); // Вывод А
- output_b(); // Вывод В
- system("cls");
- printf("Какую операцию вы хотите выполнить?\n");
- printf("1. Сложение \n");
- printf("2. Умножение \n");
- printf("Ваш выбор: ");
- scanf_s("%d", &input);
- system("cls");
- output_a();
- output_b();
- switch (input)
- {
- case 1:
- addition();
- break;
- case 2:
- multiplication();
- break;
- default:
- system("cls");
- printf("Неправильный ввод! \n");
- do // Повторное выполнение программы
- {
- printf("Продолжить работу с программой? (y/n)");
- {
- scanf_s("%s", &ans, 2);
- if (ans == 'y')
- {
- system("cls");
- main();
- }
- else if (ans == 'n')
- {
- exit(0);
- }
- else
- {
- system("cls");
- printf("Неправильный ввод!\n\n");
- continue;
- }
- }
- } while (ans != 'y' || ans != 'n');
- }
- }
- else //Если неверно введен размер
- {
- system("cls");
- printf("Неправильный ввод!\n\n");
- }
- if (rep > 0)
- {
- do // Повторное выполнение программы
- {
- printf("Вы хотите заново ввести матрицы, продолжить операции с введёнными матрицами или закрыть програму? \n (y-ввести заново) \n (r-продолжить операции с введёнными матрицами) \n (n-закрыть программу)");
- {
- scanf_s("%s", &ans, 2);
- if (ans == 'y')
- {
- system("cls");
- main();
- }
- else if (ans == 'n')
- {
- exit(0);
- }
- else if (ans == 'r')
- {
- repeat();
- }
- else
- {
- system("cls");
- printf("Неправильный ввод!\n\n");
- continue;
- }
- }
- } while (ans != 'y' || ans != 'n');
- }
- else
- {
- do // Повторное выполнение программы
- {
- printf("Продолжить работу с программой? (y/n)");
- {
- scanf_s("%s", &ans, 2);
- if (ans == 'y')
- {
- system("cls");
- main();
- }
- else if (ans == 'n')
- {
- exit(0);
- }
- else
- {
- system("cls");
- printf("Неправильный ввод!\n\n");
- continue;
- }
- }
- } while (ans != 'y' || ans != 'n');
- }
- }
- --
- All the best, Olga
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement