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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
GELIOSS
0 / 0 / 0
Регистрация: 05.03.2009
Сообщений: 6
#1

Одномерные массивы - C++

06.03.2009, 13:59. Просмотров 1111. Ответов 10
Метки нет (Все метки)

В векторе из 20 элементов переставить элементы так, чтобы сначала располагались все отрицательные элементы, а после этого все другие элементы, без нарушения порядка их следования.
Даже не знаю с чего начать,помогите пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2009, 13:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Одномерные массивы (C++):

Одномерные массивы - C++
Прошу помочь с заданием В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) произведение отрицательных...

Одномерные массивы С++ - C++
Помогите пожалуйста написать программку! Заполнение динамического целочисленного массива длинной N. Отсортировать массив по...

Одномерные массивы - C++
Здравствуйте, помогите пожалуйста с решением задачи!!! Только начал изучать не все понимаю, буду очень благодарен. Даны действительные...

Одномерные массивы - C++
Задан массив, содержащий несколько нулевых элементов. Сжать его, выбросив эти элементы

Одномерные массивы в С#(С++) - C++
Помогите пожалуйсто,пишу программу,а она чего-то не хочет писаться,выдает многочисленные ошибки.На основании этой программы нужно сделать...

C++ Одномерные массивы - C++
1. В одномерном массиве, состоящем из n вещественных элементов, вычислить: - сумму отрицательных элементов массива; - произведение...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Vourhey
Почетный модератор
6478 / 2253 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
06.03.2009, 15:33 #2
Идем циклом по массиву. Запоминаем смещение. Для начала - 0. Если есть отрицательный элемент встретился толкаем его по смещению (нулевой элемент), остальные сдвигаем. Смещение инкрементируем и дальше также.
profan_Artem
4 / 4 / 0
Регистрация: 17.02.2009
Сообщений: 18
06.03.2009, 15:38 #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
#include <iostream>
using namespace std;
 
void main()
{
    int const n = 20;             // размерность массива
    int vector[ n ], *forStore;   // 1 масив с данными, второй для временного хранения данных
    int total = 0, i, k = 0;        
    
    
    
    for ( i = 0; i < n; i++ ) {       // цикл для ввода 20 значений
        cout<< "Input numbers please :";
            cin>> vector[ i ];
    }
 
 
    for (i = 0; i < n; i++ )        // цикл для поиска всех отрицательных эл-тов их подсчета - для
        if ( vector[ i ] < 0 )      //  выделения памяти динамически
            total++;
    
    forStore = new int[ total ];     // вот и выделение ее динамически
 
    for ( i = 0; i < n; i++ )        // запоминаем все отрицательные эл-ты в              порядке    их следования 
        if ( vector[ i ] < 0 ){          // проверяем i эл-т, если он < 0 
            forStore[ k ] = vector[ i ]; // то запоминаем его во времменый массив
            k++;                         // увеличиваем индекс времменого масива на 1 
        }
 
   
        
    for ( i = 0; i < total; i++ )          // цикл для записи массива в нужном нам порядке
        if ( vector[ i ] == forStore[ i ]) // если текущии эл-т равен эл-ту из времменого мас-ва
            continue;                      // ничего неделаем, возвращемся к началу цикла
        else {                             // если нет то
            vector[ i + 1 ] = vector [ i ];// перемещаем текущий эл- на 1 позицию вправо
            vector[ i ] = forStore [ i ];  // присваиваем значение из времменного массива
        }
 
    for ( i = 0; i < n; i++ )        // цикл для вывода рез-тов на экран
        cout << vector[ i ] << " " ;
         if( i % 10 )
             cout<< endl;
 
    system("pause");
}
Vourhey
Почетный модератор
6478 / 2253 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
06.03.2009, 15:48 #4
Лишний тут дополнительный массив. И память из под него не удаляется.
FAT
5 / 5 / 0
Регистрация: 03.03.2009
Сообщений: 18
06.03.2009, 15:50 #5
Я так понял нужна обычная сортировка массива? Или нет?

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
#include<iostream>
#include "stdio.h"
using namespace std;
 
void bubbleSort(int array[], int col){                    
    int temp=0;                              
    for (int i=1;i<col;i++){            
        for (int j=0; j<col-i;j++){     
            if (array [j]>array[j+1]){     
                temp=array[j];           
                array[j]=array[j+1];    
                array[j+1]=temp;
            }
        }
    }
}
 
void main(){
    int i, size;
    int *array;
    cout<<"Введите количество элементов массива";
    cin>>size;
    array = new int[size];
    for ( i = 0; i < size; i ++ ){
        cout<<"Введите "<<i<<" элемент массива:";
        cin>>array[i];
    }
 
    bubbleSort( array, size );
 
    cout << "Массив после сортировки:";
    for (i=0; i<size;i++ )
    {
        cout<<array[i]<<" ";
    } 
    cout<<endl;
    cout << "Нажмите любую клавишу для продолжения..." << endl; 
    getchar();
}
Vourhey
Почетный модератор
6478 / 2253 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
06.03.2009, 16:23 #6
FAT, сортировка там вообще не нужна. Черным по белому же написали:
а после этого все другие элементы, без нарушения порядка их следования
GELIOSS
0 / 0 / 0
Регистрация: 05.03.2009
Сообщений: 6
06.03.2009, 17:14  [ТС] #7
Нет сортировка не нужна
FAT
5 / 5 / 0
Регистрация: 03.03.2009
Сообщений: 18
06.03.2009, 21:31 #8
Извиняюсь, не понял.
GELIOSS
0 / 0 / 0
Регистрация: 05.03.2009
Сообщений: 6
07.03.2009, 13:43  [ТС] #9
Цитата Сообщение от FAT Посмотреть сообщение
Извиняюсь, не понял.
Да ничего страшного,ваш пример мне немного помог,так что ещё раз спасибо

Добавлено через 15 часов 15 минут 27 секунд
Может у когото будут ещё предложения?
profan_Artem
4 / 4 / 0
Регистрация: 17.02.2009
Сообщений: 18
10.03.2009, 17:30 #10
можно еще так

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
#include <iostream>
using namespace std;
 
void main()
{
    int const n = 20;             // размерность массива
    int vector[ n ], store = 0;  
    int i, k = 0;        
        
    for ( i = 0; i < n; i++ ) {       // цикл для ввода 20 значений
        cout<< "Input numbers please :";
            cin>> vector[ i ];
    }
 
    for ( i = 0; i < n; i++ )        // внешнийцикл для проверки текущего значения
        if ( vector[ i ] < 0)        // если он < 0, то
    
        {                          
            store = vector[ i ];      // запоминаем этот эл-т
            
            for ( int j = i; j > k ; j-- ) // цикл для смещения эл-тов,
                if ( vector[ j - 1 ] < 0 ) // если эл-т, перед текущим УЖЕ отрицательный
                    continue;              // нихера не делаем, переходим к внешнему циклу  
                else                         
                    vector[j]  = vector[ j - 1 ]; // иначе смещаем все эл-ты
                
                    vector[ k ] = store ;         // переносим отрицательные значения
                    k++;                                                 
                
        }
                    
 
    for ( i = 0; i < n; i++ )        // цикл для вывода рез-тов на экран
        cout << vector[ i ] << " " ;
         if( i % 10 )
             cout<< endl;
 
    system("pause");
}
Elena272727
0 / 0 / 0
Регистрация: 25.05.2009
Сообщений: 4
25.05.2009, 12:53 #11
Помогите решить задачу
Сформировать одномерный массив В из положительных элементов массива А.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2009, 12:53
Привет! Вот еще темы с ответами:

Одномерные массивы - C++
Очень прошу помочь составить код (или направить мысли в правильное русло). Необходимо решить следующую поставленную задачу: В одномерном...

Одномерные массивы. - C++
Помогите пожалуйста! На завтра нужна прога в С++, а у меня ничего не выходит=(.Известны данные о численности населения (в млн жителей) и...

Одномерные массивы - C++
Задание во вложении, сделал как понял задание, но с ошибками, которые ни как не могу найти. Даны 3 одномерных массива, в каждом посчитать...

Одномерные массивы - C++
Среди некоторого количества точек плоскости указать пару точек, которые максимально удалены друг от друга.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.05.2009, 12:53
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru