С одномерным массивом из n вещественных элементов произвести следующие операции

Условие задачи: С одномерным  массивом,  состоящим из n вещественных элементов, произвести следующие операции: 

1) вычислить сумму элементов массива с нечетными номерами;  

2) вычислить сумму элементов массива, расположенных  между  первым  и последним отрицательными элементами; 

3) сжать массив, удалив из него все элементы, модуль которых не превышает 1. Освободившиеся в конце массива элементы заполнить нулями. При сжатии сохранить исходный порядок элементов.  
 
Примечание: Размеры массивов задаются именованными константами. Все операции над массивами  выполняются отдельными процедурами и функциями в том порядке, в котором они описаны в задании. Элементы массивов задаются одним из двух способов: генерация  случайным образом или  ввод с клавиатуры. Способ заполнения массива выбирается пользователем. Реальную размерность массива программа должна спрашивать у пользователя (в диапазоне от единицы до значения, определяемое константой).
Листинг (исходник) программы:


		#include <iostream>
		#include <locale>
		#include <time.h>
		#include <vector>
		#include <windows.h>
		#include <conio.h>
		using namespace std;
		
		
		float SumNe4etnye(const float* M, int n);
		float SumInterval(const float* M, int n);
		void ClearSmallElement(float* M, int n);
		
		
		int main()
		{
		    setlocale(LC_ALL,"Russian");
		    const int max = 20, min=1;int n;
		    float* Arr;
		    cout<<"Введите размерность массива: ";cin>>n;
		    if( n <= 1 )
		    {
		        Arr = new float[min];
		        n = min;
		    }
		    else if(n > 20)
		    {
		        Arr = new float[max];
		        n = max;
		    }
		    else
		        Arr = new float[n];
		    short Question;
		Choozen:
		    system("cls");
		    cout<<"Выберите способ заполнения массива:\\n\\t1-Для ручного заполнения\\n\\t2-Для автоматического заполнения\\n";
		    cin>>Question;
		
		
		    switch(Question)
		    {
		        case 1:
		            cout<<"Заполните одномерный массив:"<<endl;
		            system("cls");
		            for(int i=0; i<n; i++)
		            {
		                cout << \'[\' << i+1 << \']\' << " = ";
		                cin>>Arr[i];
		            }
		            system("cls");
		            break;
		
		
		        case 2:
		            system("cls");
		            srand((int)time(0));
		            for(int i=0; i<n; i++)
		                Arr[i] = (float)(rand()%40-20);
		            system("cls");
		            break;
		
		
		        default:
		            system("cls");
		            cout<<"Вы ввели не допустимую цифру, повторите ввод!";
		            Sleep(2000);
		            goto Choozen;
		    }
		    
		    cout<<"Одномерный массив:"<<endl;
		    for( int i=0; i<n; i++)
		        cout<<Arr[i]<<" ";
		
		
		    cout<<"\\n\\nСумма элементов массива с нечетными номерами: "<<SumNe4etnye(Arr,n)<<endl;
		    cout<<"\\nСумму элементов  массива, расположенных  между первым  и последним отрицательными элементами: "<<SumInterval(Arr,n)<<endl;
		    ClearSmallElement(Arr,n);
		
		
		    cout<<"\\nСжатый массив: "<<endl;
		    for( int i=0; i<n; i++)
		        cout<<Arr[i]<<" ";
		    cout<<endl;
		    _getch();
		    return 0;
		}
		
		
		float SumNe4etnye(const float* M, int n)
		{
		    float Sum = 0;
		    for( int i=0; i<n; i+=2)
		        Sum += M[i];
		    return Sum;
		}
		
		
		float SumInterval(const float* M, int n)
		{
		    float Sum = 0;
		    int begin=0,end=n;
		    for( int i=0; i<n; i++)
		        if( M[i] < 0)
		        {
		            begin = i;
		            break;
		        }
		    for( int i=n; i>0; i--)
		        if( M[i] < 0)
		        {
		            end = i;
		            break;
		        }
		    for( int i=begin; i<end; i++)
		        Sum += M[i];
		    return Sum;
		}
		
		
		void ClearSmallElement(float* M, int n)
		{
		
		
		    vector <float> Mass;
		    for( int i=0; i<n; i++)
		    {
		        if( abs(M[i]) <= 1 )
		            M[i] = 0;
		    }
		
		
		    int counts=0;
		    for( int i=0; i<n; i++)
		        if( M[i] != 0 )
		            Mass.push_back(M[i]);
		        else
		            counts++;
		
		
		    for( int i=0; i<counts; i++)
		        Mass.push_back(0);
		
		
		    for(int i=0; i<n; i++)
		    {
		        if(Mass[i] != 0)
		            M[i] = Mass[i];
		        else
		            M[i] = 0;
		    }
		    Mass.clear();
		}
		
		

 

[свернуть]

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *