Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <locale>
- using namespace std;
- void bubble(double *mas, int st, int n) // по возрастанию
- {
- for (int i = n - 1; i >= st; i--)
- for (int j = st; j<i; j++)
- if (mas[j] > mas[j + 1])
- {
- double tmp = mas[j];
- mas[j] = mas[j + 1];
- mas[j + 1] = tmp;
- }
- }
- void bubble_desc(double *mas, int n) //сортировка пузырьком по убыванию
- {
- for (int i = n - 1; i >= 0; i--)
- for (int j = 0; j<i; j++)
- if (mas[j] < mas[j + 1])
- {
- double tmp = mas[j];
- mas[j] = mas[j + 1];
- mas[j + 1] = tmp;
- }
- }
- void Shell_desc(double *mas, int n) //сортировка Шелла по убыванию
- {
- int d, i, j;
- d = n;//шаг
- d = d / 2;
- while (d>0)
- {
- for (i = 0; i< (n - d); i++)
- {
- j = i;
- while (j >= 0 && fabs(mas[j])<fabs(mas[j + d]))
- {
- double count = mas[j];
- mas[j] = mas[j + d];
- mas[j + d] = count;
- j--;
- }
- }
- d = d / 2;
- }
- }
- void outarray(double *array, int size)
- {
- for (int i = 0; i < size; i++)
- cout << array[i] << " ";
- cout << endl;
- }
- void input(double *array, int size, bool &falseinput)
- {
- for (int i = 0; i < size; i++)
- {
- cin >> array[i];
- if (!cin)
- {
- cout << "Вы ввели неправильное число." << endl;
- falseinput = true;
- break;
- }
- }
- cout << endl;
- }
- void vectorC(double *arrayA, double *arrayB, int sizeA, int sizeB)
- {
- const int size_const = 10000;
- double arrayC[size_const];
- int i, j;
- for (i = 0, j = 0; (i < sizeA) || (i < sizeB); i++)
- {
- if (i < sizeA)
- {
- if ((int)arrayA[i] % 2 == 0)
- {
- arrayC[j] = arrayA[i];
- j++;
- }
- }
- if (i < sizeB)
- {
- if ((int)arrayB[i] % 2 == 0)
- {
- arrayC[j] = arrayB[i];
- j++;
- }
- }
- }
- bubble_desc(arrayC, j);
- int st = j;
- for (i = 0; (i < sizeA) || (i < sizeB); i++)
- {
- if (i < sizeA)
- {
- if ((int)arrayA[i] % 2 != 0)
- {
- arrayC[j] = arrayA[i];
- j++;
- }
- }
- if (i < sizeB)
- {
- if ((int)arrayB[i] % 2 != 0)
- {
- arrayC[j] = arrayB[i];
- j++;
- }
- }
- }
- bubble(arrayC, st, j);
- cout << "Задание №1: " << endl;
- cout << "Вектор C :" << endl;
- outarray(arrayC, j);
- }
- void vectorA(double *array, int size)
- {
- int min = 0, max = 0;
- for (int i = 1; i < size; i++)
- {
- if (fabs(array[i]) < fabs(array[min]))
- min = i;
- if (fabs(array[i]) > fabs(array[max]))
- max = i;
- }
- if (min > max)
- {
- int tmp = min;
- min = max;
- max = tmp;
- }
- double dob = 1;
- while (min <= max)
- {
- dob *= array[min];
- min++;
- }
- cout << "Задание №2:" << endl;
- cout << "Произведение элементов вектора А (в промежутке) = " << dob << endl;
- }
- int main(int argc, char *argv[])
- {
- setlocale(LC_ALL, "rus");
- const int size_const = 10000;
- double arrayA[size_const];
- double arrayB[size_const];
- int sizeA, sizeB;
- if (argc == 1)
- {
- cout << "Вы не ввели размеры массивов в командной строке." << endl;
- return 1;
- }
- else
- if (argc == 2)
- {
- cout << "Вы не ввели размер второго массива в командной строке." << endl;
- return 1;
- }
- sizeA = atoi(argv[1]);
- sizeB = atoi(argv[2]);
- input(arrayA, sizeA);
- input(arrayB, sizeB);
- cout << "Вектор А :" << endl;
- outarray(arrayA, sizeA);
- cout << "Вектор B :" << endl;
- outarray(arrayB, sizeB);
- vectorC(arrayA, arrayB, sizeA, sizeB);
- vectorA(arrayA, sizeA);
- cout << "Задание №3:" << endl;
- cout << "вектор А :" << endl;
- Shell_desc(arrayA, sizeA);
- outarray(arrayA, sizeA);
- cout << "вектор B :" << endl;
- Shell_desc(arrayB, sizeB);
- outarray(arrayB, sizeB);
- system("pause");
- return 0;
- }
Add Comment
Please, Sign In to add comment