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

Обмен положительных элементов в массиве - C++

Восстановить пароль Регистрация
 
dimm93
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 7
23.10.2012, 21:18     Обмен положительных элементов в массиве #1
Все положительные числа в массиве Z переставить в обратном порядке, не изменяя положения остальных чисел.

Помогите написать обработку. Вот мои заготовки но оно циклится, и не хочет корректно работать(
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void vector::obrabotka2()//menyaem polog el v massive z v obratnom poryadke
 {
        int i,j,k,g,l;
        l=dk;
        k=0;
        for (i=0;i<dm;i=i+2)
                {if (z[i]>0)
                {k=1;}
                if(k==1)
                    {for(j=l;j>0;j--)
                        if(z[j]>0)
                        {k=0;
                        l=j;
                        break;}
                    }
                        k=z[i];
                        z[i]=z[j];
                        z[j]=z[i];
                }  
  }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2012, 21:18     Обмен положительных элементов в массиве
Посмотрите здесь:

обмен элементов в массиве C++
В одномерном массиве из 100 элементов определить сумму положительных элементов C++
C++ В одномерном массиве, вычислить произведение положительных элементов, сумму элементов, расположенных до минимального, а также отсортировать массив.
C++ В одномерном массиве из n элементов,найти суму положительных элементов
Найти сумму положительных элементов в одномерном массиве C++
C++ Посчитать произведение положительных элементов в двумерном массиве
В одномерном массиве, состоящем из n вещественных элементов, вычислить: • сумму положительных элементов массив C++
C++ Найти количество положительных элементов в массиве

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HomeR_J_SimpsoN
59 / 59 / 2
Регистрация: 15.10.2010
Сообщений: 356
23.10.2012, 22:28     Обмен положительных элементов в массиве #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
int i = 0, j = SIZE - 1;
for (i, i < SIZE; i++)
{
    // Идем от начала массива
    if (z[i] > 0)
    {
        // Нашли положительный элемент, идем с конца массива
        // чтобы найти последний положительный элемент
        for (j, j >= 0; j--)
        {
            if (z[j] > 0)
            {
                // Меняем мастами i-ый и j-ый элементы
                int tmp = z[i];
                z[i] = z[j];
                z[j] = tmp;
                break;
            }
        }
    }
    if (i > j)
        break;  // Все элементы уже просмотрены
}
Таким образом мы поменяем местами все пары положительных элементов.
Yandex
Объявления
23.10.2012, 22:28     Обмен положительных элементов в массиве
Ответ Создать тему
Опции темы

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