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

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

Войти
Регистрация
Восстановить пароль
 
4atty
45 / 45 / 1
Регистрация: 09.06.2011
Сообщений: 117
#1

Отсортировать по возрастанию и по убыванию введенные числа - C++

04.07.2011, 15:06. Просмотров 972. Ответов 11
Метки нет (Все метки)

Здраствуйте.
Пользователь вводит 10 чисел, отсортировать ихпо возростанию и по убыванию
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2011, 15:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отсортировать по возрастанию и по убыванию введенные числа (C++):

Отсортировать введенные числа по возрастанию и по убыванию - C++
Здраствуйте. Задание Пользователь вводит 10 чисел, отсортировать и вывести на экран по возрастанию и по убыванию Спасибо.

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

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

Отсортировать элементы массива, находящиеся слева от заданного числа по убыванию, а справа по возрастанию - C++
Есть задание: Дан массив из 20 целых чисел со значениями от 1 до 20. Необходимо: 1. написать функцию, разбрасывающую элементы массива...

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

Отсортировать массив по убыванию, затем добавить недостающий элемент и отсортировать массив по возрастанию - C++
2) В массиве a ...a встречаются по одному разу все целые числа от 0 до n, кроме одного. За n действий найти пропущенное число с конечной...

11
OstapBender
583 / 522 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
04.07.2011, 16:46 #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
void out(int* arr, size_t sz) {
    for (size_t i=0; i<sz; i++)
        std::cout << arr[i] << ' ';
    std::cout << '\n';
}
 
int cmp1(const void* a, const void* b) {
    return *(int*)a-*(int*)b;
}
 
int cmp2(const void* a, const void* b) {
    return *(int*) b-*(int*)a;
}
 
int main()
{
    int arr[10];
 
    for (int i=0; i<10; i++)
        std::cin >> arr[i];
    std::cin.ignore();
 
 
    qsort(arr,10,sizeof(arr[0]),cmp1);
 
    out(arr,10);
 
    qsort(arr,10,sizeof(arr[0]),cmp2);
 
    out(arr,10);
 
 
    getchar();
    return 0;
}
0
Yashman
1 / 3 / 0
Регистрация: 02.07.2011
Сообщений: 90
04.07.2011, 17:48 #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
52
53
54
55
56
57
58
59
60
#include <iostream>
 
using namespace std;
 
int main()
{
    cout << "How many numbers do you wish me to work with? ";
    int n;
    cin >> n;
    double array1[n-1];
    cout << "Enter these " << n << " values: ";
    for (int i = 0; i < n; i++)
     cin >> array1[i];
   
   double array2[n-1];
   for (int i = 0; i < n; i++)
   array2[i] = array1[i];
 
   double x = 0.0; 
   
   for (int a = 0; a < n; a++)
    {
        for (int b = 1; b+a < n; b++)
        {
            if (array1[a] > array1[b+a])
              {
                         x = array1[a];
                         array1[a] = array1[b+a];
                         array1[b+a] = x;
              }
        }
    }
    
    cout << "Numbers from the smallest to the largest:" << endl;
    for (int i = 0; i < n; i++)
    cout << array1[i] << endl;
    
    
   x = 0.0; 
   
   for (int a = 0; a < n; a++)
    {
        for (int b = 1; b+a < n; b++)
        {
            if (array2[a] < array2[b+a])
              {
                         x = array2[a];
                         array2[a] = array2[b+a];
                         array2[b+a] = x;
              }
        }
    }
    
    cout << "Numbers from the largest to the smallest:" << endl;
    for (int i = 0; i < n; i++)
    cout << array2[i] << endl;
   
    system ("PAUSE");
    return 0;
}
0
OstapBender
583 / 522 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
05.07.2011, 00:08 #4
а я бы так не делал.
C++
1
2
3
4
  cout << "How many numbers do you wish me to work with? ";
    int n;
    cin >> n;
    double array1[n-1];
0
Yashman
1 / 3 / 0
Регистрация: 02.07.2011
Сообщений: 90
05.07.2011, 15:23 #5
Цитата Сообщение от OstapBender Посмотреть сообщение
а я бы так не делал.
C++
1
2
3
4
  cout << "How many numbers do you wish me to work with? ";
    int n;
    cin >> n;
    double array1[n-1];
Это сделанно, что-бы можно было любое кол-во чисел сортировать, а не именно 10.
0
co6ak
Кошковед
408 / 501 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
05.07.2011, 15:26 #6
только работать оно так не будет.

надо делать как минимум double *array = new array [ N ];
а то что вы написали - ошибка.
компиль не поймет такой логики

Добавлено через 1 минуту
да и по заданию 10 чисел.
наф выеживаться
0
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
05.07.2011, 15:34 #7
некоторые поймут
0
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.07.2011, 15:45 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <algorithm>
#include <iterator>
#include <functional>
void in( int &x){ std::cin >> x; }
int main(){
    int arr[10];
    std::for_each(arr, arr + 10, in);
    std::sort(arr, arr + 10, std::less_equal<int>());
    std::copy(arr, arr + 10, std::ostream_iterator<int> (std::cout," ") );
    std::cout << std::endl;
    std::sort(arr, arr + 10, std::greater_equal<int>());
    std::copy(arr, arr + 10, std::ostream_iterator<int> (std::cout, " ") );
    std::cout << std::endl;
    return 0;
}
0
OstapBender
583 / 522 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
05.07.2011, 15:47 #9
да нет, память то выделяется под статический массив на этапе компиляции, а n = случайному мусорному числу.

вообще хороший компилятор должен выдавать ошибку "размер массива не константа".

а то что хочет сделать Yashman лучше сделать через псевдодинамический массив
C++
1
2
3
double array[1024];
std::cin >> n;
for (int i=0; i<n ...
0
easybudda
Модератор
Эксперт CЭксперт С++
9663 / 5613 / 952
Регистрация: 25.07.2009
Сообщений: 10,775
05.07.2011, 15:53 #10
Цитата Сообщение от OstapBender Посмотреть сообщение
C++
1
2
3
4
5
void out(int* arr, size_t sz) { 
    for (size_t i=0; i<sz; i++) 
        std::cout << arr[i] << ' '; 
    std::cout << '\n'; 
}
Выпендрёжный вариант
C++
1
2
3
4
void out(int * arr, size_t sz){
    while ( sz-- )
        std::cout << *arr++ << ( sz ? ' ' : '\n' );
}
0
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
05.07.2011, 15:57 #11
Yashman наверно mingw пользуется или другим компилером совместимым с c99. А они такую конструкцию прожёвывают выделяя память в стеке функцией alloca в RT
0
Yashman
1 / 3 / 0
Регистрация: 02.07.2011
Сообщений: 90
16.07.2011, 22:10 #12
Цитата Сообщение от co6ak Посмотреть сообщение
только работать оно так не будет.

надо делать как минимум double *array = new array [ N ];
а то что вы написали - ошибка.
компиль не поймет такой логики
да, тут я ошибся, но ведь и так
C++
1
double *array = new array [ N ]
делать нельзя, поскольку array - не имя типа, то есть должно быть
C++
1
double *array = new double [ N ]
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2011, 22:10
Привет! Вот еще темы с ответами:

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

Вывести введенные числа по возрастанию - C++
Здравствуйте помогите написать програму чтобы выводила 5 введеных чисел по возрастанию

Как отсортировать массив по убыванию и возрастанию? - C++
Здравствуйте. Как отсортировать массив по убыванию и возрастанию?

Отсортировать массив по убыванию или по возрастанию - C++
Дан массив натуральных чисел А( N), значения элементов которого лежат в диапазоне . Отсортировать этот массив по убыванию или по...


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

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

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