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

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

Войти
Регистрация
Восстановить пароль
 
Relike
6 / 6 / 0
Регистрация: 24.04.2013
Сообщений: 260
#1

Осталось только упорядочить - C++

24.12.2013, 01:28. Просмотров 187. Ответов 6
Метки нет (Все метки)

Как упорядочить Массив b по неубыванию?
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
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int *a, *b, n, i, j=0, k=0, p;
    cout<<"Vv. razm. massiva a : "; cin>>n;
    a = new int [n];
    for(i = 0; i<n; i++){
        cout<<"a["<<i<<"] = "; cin>>a[i];
        }
    for(i = 0; i<n; i++){
        if(a[i]>0) k++;
        }
    b = new int [k];
    for(i = 0; i<n; i++ ){
        if(a[i]>0) {
            b[j]=a[i];
            j++;
            }
        }
    cout<<"Massiv b: \n";
    for(i = 0; i<k; i++){
        cout<<b[i]<<"\t";
        }
   
        cout<<endl;
    system("pause");
    return EXIT_SUCCESS;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт CЭксперт С++
6435 / 3633 / 452
Регистрация: 29.11.2010
Сообщений: 9,602
24.12.2013, 01:44     Осталось только упорядочить #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
int main()
{
    const int M = 10;
    int arr[M] = {1, 2, -3, 4, 5, -1, 4, -2, 27, 1};
 
    // модифицированная пузырьковая сортировка
    for (int i=0; i < M; i++)
        for (int j=M-1; j > i; j--)
            if (arr[j] < arr[i])
            {
                int tmp = arr[i];
                arr[i] = arr[j];
                arr[j] = tmp;
            }
 
    for (int i=0; i < M; i++)
        std::cout << arr[i] << " ";
    std::cout << std::endl;
}
И память освободите, delete[] a; delete[] b;
Relike
6 / 6 / 0
Регистрация: 24.04.2013
Сообщений: 260
24.12.2013, 01:49  [ТС]     Осталось только упорядочить #3
MrGluck, А что собственно мне стоит добавить в свой код? Это?
Цитата Сообщение от MrGluck Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
for (int i=0; i < M; i++)
* * * * for (int j=M-1; j > i; j--)
* * * * * * if (arr[j] < arr[i])
* * * * * * {
* * * * * * * * int tmp = arr[i];
* * * * * * * * arr[i] = arr[j];
* * * * * * * * arr[j] = tmp;
* * * * * * }
?
И еще вопрос, как вот это понять?
Цитата Сообщение от MrGluck Посмотреть сообщение
std::cout
, т.е. если прописать
C++
1
using namespace std
то не надо просто употреблять?
Genn55
355 / 202 / 38
Регистрация: 26.12.2012
Сообщений: 680
24.12.2013, 01:54     Осталось только упорядочить #4
Еще модифицированная пузырьковая сортировка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for (int i = 1; i < size; i++) //цикл проходов
{
int label = 0; //обнуляется при каждом входе в цикл проходов
for (int j = 0; j < size - i; j++) //количество сравнений сокращается при уменьшении количества проходов
{
if (A[j] > A[j + 1])
{
temp = A[j + 1];
A[j + 1] = A[j];
A[j] = temp;
label++;
}
}
if (label == 0) //если в массиве уже сортировать нечего, то выходим из цикла
i = size - 1;
}
Relike
6 / 6 / 0
Регистрация: 24.04.2013
Сообщений: 260
24.12.2013, 02:04  [ТС]     Осталось только упорядочить #5
Блин, ребят если не сложно. Напишите как сделать это для моих переменных...я вообще запутался.
MrGluck
Ворчун
Эксперт CЭксперт С++
6435 / 3633 / 452
Регистрация: 29.11.2010
Сообщений: 9,602
24.12.2013, 02:04     Осталось только упорядочить #6
Цитата Сообщение от Relike Посмотреть сообщение
Это?
А сами как думаете? Я показал пример пузырьковой сортировки, вместо arr подставляете ваш массив, вместо M - его размер.
Цитата Сообщение от Relike Посмотреть сообщение
И еще вопрос, как вот это понять?
я пишу полное имя функций и объектов (с явным указанием пространства имен). Если добавить строчку
Цитата Сообщение от Relike Посмотреть сообщение
using namespace std
то все будет свалено в пространство std и указывать явно не понадобится.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2013, 02:11     Осталось только упорядочить
Еще ссылки по теме:

Выяснить, сколько бюллетеней осталось необработанными C++
C++ Определить виды блюд, которые есть только на завтраке, только на обеде и только на ужине
C++ Упорядочить по возрастанию только: положительные элементы списка
Нужно упорядочить главную диагональ матрицы. Не могу найти ошибку в коде. P.S. я только начинаю потому, еслиш C++
C++ Определить сколько секунд осталось до времени2

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

Или воспользуйтесь поиском по форуму:
Relike
6 / 6 / 0
Регистрация: 24.04.2013
Сообщений: 260
24.12.2013, 02:11  [ТС]     Осталось только упорядочить #7
MrGluck, Всё понял. Спасибо большое!

Добавлено через 4 минуты
MrGluck,
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
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int *a, *b, n, i, j=0, k=0, p;
    cout<<"Vv. razm. massiva a : "; cin>>n;
    a = new int [n];
    for(i = 0; i<n; i++){
        cout<<"a["<<i<<"] = "; cin>>a[i];
        }
    for(i = 0; i<n; i++){
        if(a[i]>0) k++;
        }
    b = new int [k];
    for(i = 0; i<n; i++ ){
        if(a[i]>0) {
            b[j]=a[i];
            j++;
            }
        }
    cout<<"Massiv b: \n";
    for(i = 0; i<k; i++){
        cout<<b[i]<<"\t";
        }
    for (int i=0; i < n; i++)
        for (int j=n-1; j > i; j--)
            if (b[j] < b[i])
            {
                int tmp = b[i];
                b[i] = b[j];
                b[j] = tmp;
            }
    cout<<"\nUpor. Massiv b: \n";
    for(i = 0; i<k; i++){
        cout<<b[i]<<"\t";
        }
        cout<<endl;
    system("pause");
    return EXIT_SUCCESS;
}
Почему она теперь вылетает?
Yandex
Объявления
24.12.2013, 02:11     Осталось только упорядочить
Ответ Создать тему
Опции темы

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