Advertisement
fferum

anna4

May 30th, 2020
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.00 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <cstdio> //подключение заголовочных файлов
  3. #include <ctime>
  4. #include <iostream>
  5. const size_t MAX_SIZE = 100; // обьявляем и инициализируем константу
  6. int random(const double a, const double b) // функция принимающая 2 переменные типа const double и осуществляющая генерацию "рандомного числа"
  7. {
  8. double rnd = double(rand()) / RAND_MAX;
  9. return a + (b - a) * rnd;// функция типа int возвращает целые числа
  10. }
  11. int similar(int rows, int cols, int Arr[][MAX_SIZE]) // функция возвращающая номер строки с максимальным количеством одинаковых символов
  12. {
  13. int max_rows = 0;
  14. int counter = 0;
  15. int max_counter = 0;
  16. for (int i = 0; i < rows; ++i) {//заносим по мере прохождения строк, индекс максимальной строки
  17. if (counter > max_counter)
  18. {
  19. max_counter = counter;
  20. max_rows = i;
  21. }
  22. counter = 0;
  23. for (int j = 0; j < cols; j++) {//считаем сколько одинаковых элементов с строке
  24. for (int k = j; k < cols; k++) {
  25. if (j != k) {
  26. if (Arr[i][j] == Arr[i][k]) counter++;
  27. }
  28. }
  29. }
  30.  
  31. }
  32. return max_rows;
  33. }
  34.  
  35. void Outputting_Matrix(int Arr[][MAX_SIZE], const int rows, const int cols) { //функция для вывода двумерного массива
  36. for (int i = 0; i < rows; i++) {
  37. printf("\n");
  38. printf("A[%d]=", i + 1);
  39. for (int j = 0; j < cols; j++) {
  40. printf("%d ", Arr[i][j]);
  41. }
  42. }
  43. printf("\n");
  44. }
  45. int main() {
  46. srand(time(NULL)); //Генерирует случайное число, используя текущею дату, как параметр, как бы для непредсказуемости результата
  47. setlocale(LC_ALL, "Russian"); //Добавляем возможность использования русского языка
  48. int Arr[MAX_SIZE][MAX_SIZE]; //Создаем двумерный массив
  49. printf("Выберите размер матрицы:\n Колличество строк: "); //вывод на экран сообщения
  50. int rows; //обьявляем переменную типа int
  51. scanf_s("%d", &rows); // считываем и записываем в переменную
  52. printf("Колличество столбцов: "); //вывод на экран сообщения
  53. int cols; //обьявляем переменную типа int
  54. scanf_s("%d", &cols); // считываем и записываем в переменную
  55. while ((rows <= 0) || (cols <= 0)) { //выводим сообщение об ошибке до тех пор пока не введут натуральное число
  56. printf("Числа не должны быть отрицательными!!!!\n");
  57. printf("Колличество строк: ");
  58. scanf_s("%d", &rows);
  59. printf("Колличество столбцов: ");
  60. scanf_s("%d", &cols);
  61. }
  62. printf("Выберите способ заполнения массива :\n 1-ручной ввод , любое другое число - с помощью генератора случайных чисел ");
  63. int your_choice;
  64. scanf_s("%d", &your_choice);
  65. if (your_choice == 1) { // Если пользователь вводит 1 запускаем цикл для заполнения массива с клавиатуры
  66. printf("Введите матрицу:\n");
  67. for (int i = 0; i < rows; i++) {
  68. for (int j = 0; j < cols; j++) {
  69. scanf_s("%d", &Arr[i][j]);
  70. }
  71. }
  72. }
  73. else { // в случае ввода любого другого числа , массив заполняется автоматически
  74. for (int i = 0; i < rows; ++i) {
  75. for (int j = 0; j < cols; j++) {
  76. Arr[i][j] = random(-1000, 1000);
  77.  
  78.  
  79. }
  80. }
  81. }
  82. Outputting_Matrix(Arr, rows, cols); //Выводим полученную матрицу на экран
  83. printf("строка с наибольшим количеством одинаковых чисел=%d", similar(rows, cols, Arr)); //выводим результат
  84. return 0; //Возвращаем 0 , что означает что программа завершена без ошибок (можно было явно и не прописывать)
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement