Задача: одномерный массив [сортировка, нечетность индексов]

Тема в разделе "C/C++/C#", создана пользователем Pvpggpk, 12 ноя 2010.

  1. Pvpggpk

    Pvpggpk Гость

    Даны натуральные числа n,p,q,a1,a2,...,an, причем n>=q>p>=1.
    найти количество членов последовательности a1,a2,...,aq удовлетворяющих условию pow(3,i+1)<ai<(i-1)!, где i=1,2,...,q. Определить сумму четных
    членов последовательности ap,ap+1,....,an имеющих нечетные индексы. Упорядочить члены последовательности ap,ap+1,...,aq по возрастанию
    используя алгоритм сортировки методом вставки.
     
  2. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    сколько заплатишь? ;)
     
  3. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Свои собственные идеи есть???
    Хоть какие-нибудь?

    Добавлено: Может, хотя бы сможешь написать проверку условий?
     
  4. flashkpi

    flashkpi Гость

    Если что, пиши
    icq: 588002847
    email: flash_1989@ukr.net
     
  5. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Ладно будем считать, что ты задумался и попытался что то написать :)
    Код (C++):
    /*
    Даны натуральные числа n,p,q,a1,a2,...,an, причем n>=q>p>=1.
    найти количество членов последовательности a1,a2,...,aq удовлетворяющих условию pow(3,i+1)<ai<(i-1)!, где i=1,2,...,q. Определить сумму четных
    членов последовательности ap,ap+1,....,an имеющих нечетные индексы. Упорядочить члены последовательности ap,ap+1,...,aq по возрастанию
    используя алгоритм сортировки методом вставки.
    */

    /*
    codeby.net
    Autor: DarkKnight125
    */

    #include <iostream>
    #include <time.h>

    using namespace std;

    void main (void)
    {
    unsigned int n, p, q; //Наши натуральные коэффициенты
    unsigned int* Arr; //Массив

    setlocale(LC_ALL,"Russian"); //Установим локаль в кодовую страницу .1251
    srand(time(NULL)); //Инициализируем генератор случайно величины
    cout<<"Введите размерность массива n = ";
    cin>>n; //Введем нашу n
    Arr = new unsigned int[n]; //Выделим память под массив, (unsigned int) использую т.к. числа натуральные и не могут быть отрицательны

    //Заполним рандомно массив и выведем его на экран
    cout<<endl<<"Значение массива A = ";
    for (int i=0; i<n; i++)
    {
    Arr[i] = rand()%999+1; //Сгенерируем значение i-ого элемента от 1..999
    cout<<Arr[i]<<" "; //Выведим его на экран
    }
    cout<<endl;

    cout<<"Введите натуральное q (<=n) = ";
    cin>>q; //Введем q
    if (q>n) { //Проверим условие
    cout<<"Не верный ввод q";
    return;
    }
    cout<<"Введите натуральное p (>=1 И <"<<q<<") = ";
    cin>>p;//Введем p
    if (p>=q){ //Проверим и его условие
    cout<<"Не верный ввод p";
    return;
    }

    //Нахождение кол-ва членов до q, которые соответствуют условиям
    int Count = 0; //Счетчик
    for (int i=0; i<q;i++) //Обойдем массив до q
    if (pow((double)3,(double)i+1+1)<Arr[i] && !(Arr[i]<(i+1-1))) //Проверим наше условие +1 - встречается потому что в C/С++ индексы массива начинаются с
    //нуля (0), а по задачи у нас они идут 1..n
    Count++; //Увеличиваем счетчик если условие выполняется
    cout<<endl<<"Кол-во членов послед. a1,...,aq удовлетворяющих условию pow(3,i+1)<ai<(i-1)! : "<<endl;
    cout<<"Count = "<<Count<<endl<<endl;

    //Определить сумму четных членов последовательности ap,ap+1,....,an имеющих нечетные индексы.
    int Sum = 0; //Обнулим первоначально сумму
    for (int i = p-1; i< n; i++) //Обойдем массив от p-ого элемента до n
    if (Arr[i]%2==0 && (i+1)%2==1) Sum+=Arr[i]; //Проверяем четность значения и нечетность индекса если выполняется условие увеличиваем сумму
    cout<<"Сумма четных членов последовательности ap,..,an имеющих нечетные индексы :"<<endl
    <<"Sum = "<<Sum<<endl;

    ///Упорядочить члены последовательности ap,ap+1,...,aq по возрастанию используя алгоритм сортировки методом вставки. /
    for (int i=p+1; i<q; i++) // алгоритм сортировки Методом Вставки
    {
    unsigned int Value = Arr[i];
    int j = i-1;
    while (j>=0 && Arr[j] > Value)
    {
    Arr[j+1] = Arr[j];
    j = j-1;
    }
    Arr[j+1] = Value;
    }

    cout<<endl<<"Отсортированные элементы :"<<endl;
    for (int i=p; i<q; i++) //Выведим отсортированные элементы
    {
    cout<<Arr[i]<<" ";
    }
    }
     

    Вложения:

    • zd39104.jpg
      zd39104.jpg
      Размер файла:
      69,9 КБ
      Просмотров:
      24
Загрузка...
Похожие Темы - Задача одномерный массив
  1. Янчик
    Ответов:
    0
    Просмотров:
    480
  2. TrishaRay
    Ответов:
    1
    Просмотров:
    781
  3. elzim
    Ответов:
    0
    Просмотров:
    929
  4. ShaoKahn
    Ответов:
    0
    Просмотров:
    1.117
  5. eremin-sanek
    Ответов:
    3
    Просмотров:
    1.105

Поделиться этой страницей