Форум программистов, компьютерный форум CyberForum.ru

После каждого четного элемента массива вставить два элемента с тем же значением, после чего полученный массив отсортировать по убыванию - C++

Восстановить пароль Регистрация
 
ленчикО
0 / 0 / 0
Регистрация: 24.05.2013
Сообщений: 9
24.05.2013, 02:00     После каждого четного элемента массива вставить два элемента с тем же значением, после чего полученный массив отсортировать по убыванию #1
Ребят, помогите с задачкой новичку.
После каждого четного элемента массива вставить два элемента с тем же значением, после чего полученный массив отсортировать по убыванию.(нужно еще выбор сортировки аргументировать для моей ргр). Другими словами, нужно четные элементы массива вывести 3 раза подряд в новом массиве, а нечетные оставить так же.

например
исх массив 1 2 0 12 14
пол массив 2 2 2 12 12 12 14 14 14
отсор мас 14 14 14 12 12 12 2 2 2
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2013, 02:00     После каждого четного элемента массива вставить два элемента с тем же значением, после чего полученный массив отсортировать по убыванию
Посмотрите здесь:

Вставить два элемента после мах элемента и перед ним C++
C++ Вставить в список L после первого элемента равного x элемент со значением y
C++ В массиве А определить 5 наибольших значений и, расположив их по убыванию, вставить в массив В после его наименьшего элемента
Очередь с++ (вставить после каждого элемента, который содержит данную цифру вставить элемент x) C++
После каждого четного элемента массива вставить 2 элемента с тем же значением, полученный массив отсортировать C++
В целочисленном массиве после каждого четного числа вставить максимальный элемент массива C++
C++ В целочисленном массиве после каждого четного числа вставить максимальный элемент массива
C++ После каждого элемента массива состоящего из одинаковых цифр вставить заданное число

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rifle
 Аватар для Rifle
25 / 25 / 5
Регистрация: 15.11.2012
Сообщений: 93
Завершенные тесты: 4
24.05.2013, 09:16     После каждого четного элемента массива вставить два элемента с тем же значением, после чего полученный массив отсортировать по убыванию #2
Вот, вроде все выполнено:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>
using std::cout;
using std::endl;
#include <ctime>
 
const int size = 10; //размер исходного массива
int main()
    {
    srand(time(0)); //засеиваем новые случайные числа
    int arr[size]; //исходный массив
    for (int i=0; i<size; i++)
        arr[i] = rand()%100; //заполняем массив случайными числами от 0 до 99
    int count = 0; //счетчик четных элементов
    for (int i=0; i<size; i++)
        if ((arr[i]%2) == 0 && arr[i] != 0) //если элемент четный
            count++; //прибавляем счетчик
     //динамически создаем новый массив размером (счетчик четных элементов умножить на 3)
    int* result = new int[count*3];
    int result_i = 0; //индекс нового массива
    for (int i = 0; i<size; i++)
        {
        if ((arr[i]%2) == 0 && arr[i] != 0) //если элемент четный
            for (int j=0; j<3; j++)
                result[result_i++] = arr[i]; //три раза вставляем четный элемент
        }
    //сортируем массив
    for (int i=0; i<count*3; i++)
        {
        for (int j=i+1; j<count*3; j++)
            {
            if (result[i] < result[j]) //если следующий элемент больше чем предыдущий
                {
                //меняем их местами
                int temp = result[i];
                result[i] = result[j];
                result[j] = temp;
                }
            }
        }
    //ответы, выводим два массива
    cout << "First: ";
    for (int i=0; i<size; i++)
        cout << arr[i] << " ";
    cout << endl;
    cout << "Second: ";
    for (int i=0; i<count*3; i++)
        cout << result[i] << " ";
    cout << endl;
    }
Miwa123
37 / 37 / 1
Регистрация: 16.04.2013
Сообщений: 317
Записей в блоге: 1
24.05.2013, 09:21     После каждого четного элемента массива вставить два элемента с тем же значением, после чего полученный массив отсортировать по убыванию #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
using namespace std;
void print_arr(int*,int);
int main()
{
 setlocale(LC_ALL,"RUSSIAN");
 const int N=5;
 int k=0,n=0;
 int arr1[N]={2,5,12,7,5};//исходный
 print_arr(arr1,N);
 for(int i=0;i<N;i++)
 {
 if(!(arr1[i]%2))k+=2;
 }
 k+=N;
 int *arr2=new int[k];
  for(int i=0;i<N;i++)
  {
     if(!(arr1[i]%2))
     {
        arr2[n]=arr1[i];
        arr2[n+1]=arr1[i];
        arr2[n+2]=arr1[i];
        n+=3;
     }
     else
     {
        arr2[n]=arr1[i];
        n++;
     }
  }
  print_arr(arr2,k);
  for(int i=0;i<k-1;i++)
      for(int i=0;i<k-1;i++)
          if(arr2[i]<arr2[i+1])
          {
            int temp=arr2[i+1];
            arr2[i+1]=arr2[i];
            arr2[i]=temp;
          }
  print_arr(arr2,k);
 system("pause");
 return 0;
}
void print_arr(int *array1,int N)
{
    cout << "Array["<<N<<"]: ";
    for(int i=0;i<N;i++)
    cout<<array1[i]<<" ";
    cout << endl;
}
Yandex
Объявления
24.05.2013, 09:21     После каждого четного элемента массива вставить два элемента с тем же значением, после чего полученный массив отсортировать по убыванию
Ответ Создать тему
Опции темы

Текущее время: 08:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru