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

Распечатать результат в порядке возрастания - C++

Восстановить пароль Регистрация
 
Frozen_Sky
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 10
15.04.2014, 22:51     Распечатать результат в порядке возрастания #1
Написал код, вроде работает, единственная проблема, нужно, чтобы результат выводился в порядке возрастания, но я не знаю как это сделать...помогите пожалуйста, завтра уже сдать нужно...
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
61
62
63
64
65
66
67
#include "stdafx.h"
#include "conio.h"
 
int main()
{
    unsigned int lenthOfArray=0;         //переменная длины массива
    scanf ("%d", &lenthOfArray);                 //считываем длину массива
    
    if ( lenthOfArray<2 || lenthOfArray>20) // проверка на корректность ввода
    {
        printf ("outside the range");
        getch();
        return 0;
    }
 
    //создаем Массив 
    int** Array = new int *[lenthOfArray];
    for (int i = 0; i < lenthOfArray; i++)
        Array[i] = new int [2];
 
    for(int i=0;i<lenthOfArray;i++)
    {
        Array[i][1]=0;                  //заполняем 0 количество повторов для каждого элемента
    }
    unsigned int max=0;
    printf ("\n");
    for(int i=0;i<lenthOfArray;i++)
    {
        scanf ("%d", &Array[i][0]);            //считываем массив
        for(int j=0;j<i;j++)
        {
            if(Array[j][0]==Array[i][0])
                Array[i][1]++;         //увеличиваем на 1, если такой элемент уже встречался
        }
        if ( Array[i][0]<-1000 || Array[i][0]>1000) // проверка на корректность ввода
        {
        printf ("outside the range");
        getch();
        return 0;
        }
    }
 
 
    for(int i=0;i<lenthOfArray;i++)
    {
        if (Array[i][1]>max)
        {
            max=Array[i][1];       //ищем максимальное число повторов
        }
    }
    printf ("\n");
    for(int i=0;i<lenthOfArray;i++)
    {
        if (Array[i][1]==max)
        {
            printf ("%d ", Array[i][0]);   //выводим элементы с максимальным числом повторов
        }
    }
    getch();
 
    for (int i = 0; i < lenthOfArray; i++)
    {
        delete [] Array[i];
    }
    delete [] Array;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2014, 22:51     Распечатать результат в порядке возрастания
Посмотрите здесь:

C++ Распечатать в порядке убывания
C++ Выведите все числа от A до B включительно, в порядке возрастания, если A < B, или в порядке убывания в противном случае.
Три числа в порядке возрастания C++
Расположить столбцы в порядке возрастания C++
Первые десять элементов массива М(30) отсортировать в порядке возрастания, а остальные в порядке убывания C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NikitaQ
5 / 5 / 1
Регистрация: 10.09.2013
Сообщений: 51
16.04.2014, 00:13     Распечатать результат в порядке возрастания #2
Цитата Сообщение от Frozen_Sky Посмотреть сообщение
чтобы результат выводился в порядке возрастания
Отсортировать и вывести нельзя что ли?
Frozen_Sky
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 10
16.04.2014, 00:17  [ТС]     Распечатать результат в порядке возрастания #3
я пытался, и сейчас пытаюсь... у меня кракозябра какая-то выходит, то ли я переменные где-то путаю, то ли значение не то задаю... сюда обратился от безысходности -_-
NikitaQ
5 / 5 / 1
Регистрация: 10.09.2013
Сообщений: 51
16.04.2014, 00:59     Распечатать результат в порядке возрастания #4
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
int main()
{
    int sizeOfArr = 0;
    std::cin >> sizeOfArr;
    
    int number[sizeOfArr];
    int repeat[sizeOfArr];
    
    for (int i = 0 ; i < sizeOfArr; i++) {
        std::cin >> number[i];
        repeat[i] = 0;
    }
    
    for (int i = 0 ; i < sizeOfArr ; i++)
        for (int j = 0 ; j < sizeOfArr; j++)
            if (number[i] == number[j])
                repeat[i]++;
    
    int tmp = 0;
    for(int i = 0; i < sizeOfArr - 1; ++i) // i - номер прохода
        for(int j = 0; j < sizeOfArr - 1; ++j) // внутренний цикл прохода
            if (repeat[j + 1] > repeat[j])
            {
                tmp = repeat[j + 1];
                repeat[j + 1] = repeat[j];
                repeat[j] = tmp;
                
                tmp = number[j + 1];
                number[j + 1] = number[j];
                number[j] = tmp;
            }
    
    for (int i = 0 ; i < sizeOfArr ; i++)
        std::cout << "число: " << number[i] << " повторений: " << repeat[i] << std::endl;
    
    return 0;
}
Yandex
Объявления
16.04.2014, 00:59     Распечатать результат в порядке возрастания
Ответ Создать тему
Опции темы

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