Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*В одномерном массиве, состоящем из н вещ элементов, вычислить:
- 1)номер максимального по модулю элемента массива
- 2)сумму элементов массива, расположенных после первого положительного элемента
- преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых лежит
- в интервале [а...б], а потом все остальные */
- #include <iostream>
- #include <time.h>
- #include <conio.h>
- #include <cmath>
- #include <memory>
- using namespace std;
- void input(float *arr, int N){
- for (int i = 0; i < N; i++)
- scanf_s("%f", &arr[i]);
- }
- void output(float *arr, int N){
- for (int i = 0; i < N; i++)
- printf("%6.2f ", arr[i]);
- printf("\n");
- }
- int max_index(float *arr, int N) {
- int indmax = 0;
- float max;
- max = abs(arr[0]);
- for (int i = 1; i < N; ++i) {
- if (max < abs(arr[i])) {
- max = abs(arr[i]);
- indmax = i;
- }
- }
- cout << "\n" << "1) index of max: ";
- return indmax + 1;
- }
- void sum(float *arr, int N){
- int indpos = -1;
- float sum = 0;
- for (int i = 0; i < N; ++i) {
- if (arr[i] > 0) {
- indpos = i;
- break;
- }
- }
- if (indpos == -1)
- cout << "2) array hasn't positive items " << "\n\n";
- else if (indpos == N - 1)
- cout << "2) positive item is last" << "\n\n";
- else {
- for (int i = indpos + 1; i < N; ++i)
- sum += arr[i];
- cout << "2) sum after first positive item: " << sum << "\n\n";
- }
- }
- void interval(float *arr, int N){
- int a, b;
- cout << "[a...b]" << "\n";
- cin >> a >> b;
- for (int k = 0; k < N; k++)
- for (int i = k + 1; i < N; i++)
- if (int(arr[i]) >= a && int(arr[i]) <= b)
- swap(arr[k], arr[i]);
- cout << "new array with interval [" << a << ".." << b << "]: " << "\n";
- for (int i = 0; i < N; ++i) {
- cout << arr[i] << " ";
- }
- }
- void Shell_sort(float *a, int N){
- int k, l;
- float item;
- for (int step = N / 2; step>0; step /= 2)
- for (l = step; l < N; ++l) {
- item = a[l];
- for (k = l; k >= step; k -= step) {
- if (item > a[k - step])
- a[k] = a[k - step];
- else
- break;
- }
- a[k] = item;
- }
- }
- int main() {
- int N;
- cout << "size array: ";
- cin >> N;
- float *arr = new float[N];
- cout << "original array: " << "\n";
- input(arr, N);
- output(arr, N);
- cout << max_index(arr, N)<<"\n";
- sum(arr, N);
- interval(arr, N);
- cout << "new array after interval sort" << "\n";
- output(arr, N);
- Shell_sort(arr, N);
- cout << "\n\n" << "new array after Shell sort" << "\n";
- output(arr, N);
- _getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement