Advertisement
Guest User

Untitled

a guest
Jan 19th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.79 KB | None | 0 0
  1. #include <iostream>
  2. #include <ctime>
  3. #include <Windows.h>
  4. using namespace std;
  5.  
  6. //поиск и удаление в массиве arr размером sizeArr элементов массив кратных k
  7. void searchAndDelete(int*& arr, int& sizeArr, int k) {
  8.     int newArrSize = 0;                                             //размер нового массива
  9.     for (int i = 0; i < sizeArr; i++) {
  10.         if (arr[i] % k != 0) newArrSize++;                          //если элемент не картен k то, его нужно будет добавить в новый массив, а значит размер нового массива станет на 1 больше
  11.     }
  12.     int* newArr = new int[newArrSize];                              //выделяем память под новый массив
  13.     int j = 0;                                                      //счетчик элементов для нового массива
  14.     for (int i = 0; i < sizeArr; i++) {
  15.         if (arr[i] % k != 0) newArr[j++] = arr[i];                  //если элемент не кратен k, добавляем его в новый массив, увеличиваем счетчик j на 1
  16.     }
  17.     arr = newArr;                                                   //записываем новый массив в старый
  18.     sizeArr = newArrSize;                                           //записываем размер нового массива в старый
  19. }
  20.  
  21. int main() {
  22.  
  23.     //установка кириллицы в консоле
  24.     SetConsoleCP(1251);
  25.     SetConsoleOutputCP(1251);
  26.  
  27.     //ввод размер массива
  28.     int sizeArr;
  29.     while (true) {
  30.         cout << "Введите размер массива: " << endl;
  31.         cin >> sizeArr;
  32.         if (sizeArr <= 0) cout << "Раземер массива должен быть больше нуля" << endl;
  33.         else break;    
  34.     }
  35.  
  36.     //вввод параметров a,b, k
  37.     int a, b, k;
  38.     while (true) {
  39.         cout << "Введите параметры a,b,k" << endl;
  40.         cin >> a >> b >> k;
  41.         if (a < 0 || b < 0 || k <0 || a > b) cout << "Некоррекные данные" << endl;
  42.         else break;
  43.     }
  44.  
  45.     int* arr = new int[sizeArr];            //выделение памяти под массив
  46.     srand(time(0));                         //сброс рандома
  47.     for (int i = 0; i < sizeArr; i++) {
  48.         arr[i] = rand() % (b - a + 1) + a;          //генерация случайного значения в диапазоне [a, b]
  49.     }
  50.    
  51.     //вывод массива до обработки
  52.     cout << "массив до обработки: ";
  53.     for (int i = 0; i < sizeArr; i++) cout << arr[i] << ' ';
  54.     cout << endl;
  55.  
  56.     searchAndDelete(arr, sizeArr, k);   //вызов функции поиска и удаления
  57.  
  58.     //вывод обработанного массива
  59.     cout << "массив после обработки: ";
  60.     for (int i = 0; i < sizeArr; i++) cout << arr[i] << ' ';
  61.     cout << endl;
  62.    
  63.  
  64.     //задержка консоли
  65.     system("pause");
  66.     return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement