Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
kirill1059
14 / 14 / 2
Регистрация: 16.04.2013
Сообщений: 370
#1

Сортировка массива по убыванию - C++

04.01.2014, 19:54. Просмотров 1239. Ответов 6
Метки нет (Все метки)

Добрый вечер.
Нужно отсортировать массив по убыванию. В гугле что то нашёл, но так как я ещё начинающий, то чужой код понимаю с трудом, тем более без комментариев.
Нужно отсортировать второй массив по убыванию, сам пробывал но ни чего почему то не получалось. Может что то не заметил)

Вот сам код

Нужно отсортировать второй массив по убыванию.

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
#include <iostream>
using namespace std;
 
int mas[100];
int mas1[100];
int main() {
    setlocale(LC_ALL, "Rus");
 
    int n, n1;
    int i, i1;
    int j, j1;
    
 
    cout << "Введите размер массива: ";
    cin >> n;
 
    for (i = 0; i < n; i++)
        cin >> mas[i];
 
    // Сортировка первого массива
    for (i = 0; i < n; i++)
        for (j = i + 1; j < n; j++)
            if (mas[j] < mas[i]) swap (mas[i], mas[j]);
 
    for (i = 0; i < n; i++)
 
    cout << mas[i] << ' ';
    cout << "\n";
 
    // Сортировка воторого массива
    cout << "Введите размер массива 2: ";
    cin >> n1;
 
    for (i1 = 0; i1 < n1; i1++)
        cin >> mas1[i1];
 
    for (i1 = 0; i1 < n1 - 1; i1++)
        for (j1 = i1 + 1; j1 < n1; j1++)
            if (mas1[j1] < mas1[i1]) swap (mas1[i1], mas1[j1]);
 
    for (i1 = 0; i1 > n1; i1--)
 
    cout << mas1[i1] << ' ';
    cout << "\n";
 
    system("pause");
    return 0;
}
Спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2014, 19:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка массива по убыванию (C++):

Сортировка массива по убыванию - C++
Помогите отсортировать массив по убыванию. #include &lt;iostream&gt; using namespace std; void main(){ setlocale (LC_ALL, &quot;Russian&quot;); ...

Сортировка массива по убыванию - C++
добрый вечер, нужно исправить ошибки в алгоритме сортировки по убыванию. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using...

Сортировка массива по убыванию - C++
Здравствуйте. нужно отсортировать массив типа unsigned long по убыванию последним двум значениям (доп условие: если последние два...

Сортировка массива по убыванию - C++
Дан массив целых чисел. Написать программу для сортировки массива по убыванию суммы цифр элементов. помогите пожалуйста, ни хрена не...

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

Сортировка массива по убыванию - C++
Отсортировать массив P={1,2,3,4,5,6,7,8,9,0} по убыванию методом вставок. Подскажите пожалуйста как это сделать в borland 3.11?

6
MicM
822 / 480 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
04.01.2014, 20:00 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int tmp;
bool flag;
do
{
    flag = true;
    for (int i=0; i<n1-1; i++)
        if (mas1[i+1]>mas1[i])
        {
            flag = false;
            tmp = mas1[i+1];
            mas1[i+1] = mas1[i];
            mas1[i] = tmp;
        }
}
while (!flag);
0
Genn55
374 / 221 / 41
Регистрация: 26.12.2012
Сообщений: 724
04.01.2014, 20:17 #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
#include <iostream>
using namespace std;
 
int mas[100];
int mas1[100];
int main() {
    setlocale(LC_ALL, "Rus");
 
    int n, n1;
    int i, i1;
    int j, j1;
 
 
    cout << "Введите размер массива: ";
    cin >> n;
 
    for (i = 0; i < n; i++)
        cin >> mas[i];
 
    // Сортировка первого массива
    for (i = 0; i < n; i++)
        for (j = i + 1; j < n; j++)
            if (mas[j] < mas[i]) swap (mas[i], mas[j]);
 
    for (i = 0; i < n; i++)
 
    cout << mas[i] << ' ';
    cout << "\n";
 
    // Сортировка воторого массива
    cout << "Введите размер массива 2: ";
    cin >> n1;
        for (i1 = 0; i1 < n; i1++)
        cin >> mas[i1];
 
    for (i1 = 0; i1 < n1; i1++)
        for (j1 = i1 + 1; j1 < n1; j1++)
            if (mas[j1] > mas[i1]) swap (mas[i1], mas[j1]);
 
    for (i1 = 0; i1 < n; i1++)
 
    cout << mas[i1] << ' ';
    cout << "\n";
 
   // system("pause");
    return 0;
}
Хотя все это можно сделать получше.
1
kirill1059
14 / 14 / 2
Регистрация: 16.04.2013
Сообщений: 370
04.01.2014, 23:01  [ТС] #4
Genn55, спасибо большое)
главное так же всё делал первый раз и первый раз код написал так же как и вы мне его исправили, просто пытался что то переделать и забыл вернуть в исходное положение)
спасибо большое, всё нормально теперь)

Добавлено через 2 часа 16 минут
Genn55, А можно ли как нибудь содеинить эти два массива и отсортировать его по возрастанию?)
посмотрел примеры, но не понял, но кажется в этом коде не реально это сделать.
0
Genn55
374 / 221 / 41
Регистрация: 26.12.2012
Сообщений: 724
04.01.2014, 23:13 #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
//склеить 2 массива
#include <iostream>
#include <stdlib.h>
#include <cstring>
using namespace std;
//ФУНКЦИЯ ВВОДА ЭЛЕМЕНТОВ В МАССИВ
//ФУНКЦИЯ ЗАПОЛНЕНИЯ МАССИВА
void Fill(int *Arr,int N)
{
    for (int i=0;i<N;i++) Arr[i]=i;
}
//ФУНКЦИЯ ВЫВОДА МАССИВА НА ЭКРАН
void Show(int *Arr,int N)
{
    for (int i=0;i<N;i++) cout<<Arr[i]<<" ";
    cout<<endl;
}
int main()
{
system("chcp 1251 > nul");
   int N=3; //Размер первого массива
    int M=11; //Размер второго массива
   int *a=new int [N]; //Выделение памяти под первый массив
   int *b=new int [M]; //Выделение памяти под второй массив
   int *Arr=new int[N+M]; //Выделение памяти под итоговый массив
   Fill(a,N); //Заполнение первого массива
   Fill(b,M);//Заполнение второго массива
 
//ДВЕ СТРОЧКИ СКЛЕИВАЮТ ДВА МАССИВА В ИТОГОВОМ
     memcpy(Arr,a,N*sizeof(int)); //Копирование в итог данных из первого массива
      memcpy(Arr+N,b,M*sizeof(int)); //Копирование в конец итогового данных второго массива
     Show(a,N); //Отображаем первый массив
     Show(b,M); //Отображаем второй массив
     Show(Arr,N+M); //Отображаем склеенный массив
  delete []Arr; //Освобождения памяти
  delete []b;
  delete []a;
 return 0;
}
Можно и ваши склеить,но у вас будет много неипользованной памяти,а это не есть хорошо.
1
kirill1059
14 / 14 / 2
Регистрация: 16.04.2013
Сообщений: 370
04.01.2014, 23:24  [ТС] #6
Genn55, Спасибо) но видимо пока для меня это ещё сложновато будет))) могу пока только отсортировать))) может потом как нибудь это пойму, когда опыта наберусь)))
0
Sasha
4884 / 2359 / 245
Регистрация: 05.06.2008
Сообщений: 7,417
Записей в блоге: 3
04.01.2014, 23:31 #7
Цитата Сообщение от Genn55 Посмотреть сообщение
cout << "Введите размер массива 2: ";
* * cin >> n1;
* * * * for (i1 = 0; i1 < n; i1++)
* * * * cin >> mas[i1];
for (i1 = 0; i1 < n1; i1++)
* * * * for (j1 = i1 + 1; j1 < n1; j1++)
* * * * * * if (mas[j1] > mas[i1]) swap (mas[i1], mas[j1]);
for (i1 = 0; i1 < n; i1++)
cout << mas[i1] << ' ';
* * cout << "\n";
// system("pause");
Во втором массиве в коде опечатка надо так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    cout << "Ââåäèòå Г°Г*çìåð Г¬Г*Г±Г±ГЁГўГ* 2: ";
    cin >> n1;
        for (i1 = 0; i1 < n1; i1++)
        cin >> mas[i1];
 
    for (i1 = 0; i1 < n1; i1++)
        for (j1 = i1 + 1; j1 < n1; j1++)
            if (mas[j1] > mas[i1]) swap (mas[i1], mas[j1]);
 
    for (i1 = 0; i1 < n1; i1++)
 
    cout << mas[i1] << ' ';
    cout << "\n";
    getch();
вместо n надо ставить n1
0
04.01.2014, 23:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2014, 23:31
Привет! Вот еще темы с ответами:

Сортировка одномерного массива по убыванию - C++
Здравствуйте. Голова уже не варит, не могу понять, где ошибка моя. Задание: Используя memo, записать массив, отсортировать его по...

Сортировка массива по убыванию элементов - C++
Скажите пожалуйста, что не так, если не так, в этом коде) Задание: отсортировать массив по убыванию значений элементов в строках и...

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

Массив: сортировка элементов массива по убыванию - C++
Привет всем с Казахстана) Хотелось бы от вас пару уроков взять про массивов. Сначала, пожалуй, начну с этого: Массив, состоящий из 15и...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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