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

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

Войти
Регистрация
Восстановить пароль
 
Sinsei
3 / 3 / 0
Регистрация: 09.03.2011
Сообщений: 247
#1

Сортировка массив действительных чисел по возрастанию - C++

21.03.2011, 18:09. Просмотров 999. Ответов 11
Метки нет (Все метки)

Нужно отсортировать массив действительных чисел по возрастанию. Написал только задание массива. вот код:

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

Упорядочить обменом массив действительных чисел по возрастанию - C++
Упорядочить обменом массив действительных чисел по возрастанию.

Записать в файл n действительных чисел в заданном диапазоне, затем упорядочить их по возрастанию - C++
Создать файл в котором записать n дествительных чисел полученных с случайних чисел из диапазона A до B,потом упорядочить числа файлу за ...

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

Дано 8 действительных чисел. Вычислить сумму квадратов разностей корней из модулей действительных чисел - C++
Дано 8 действительных чисел. Вычислить сумму квадратов разностей корней из модулей действительных чисел.

Целую частьиз массива действительных чисел переписать в массив целых чисел - C++
Использовать два одномерных массива - массив целых чисел и массив действительных чисел. Прочитать 15 действительных чисел и записать их в...

Опишите массив 30 действительных чисел, матрицу 6Х6 целых чисел, 256 символов - C++
Опишите массив 30 действительных чисел, матрицу 6Х6 целых чисел, 256 символов.

11
neske
1503 / 870 / 84
Регистрация: 26.03.2010
Сообщений: 2,985
21.03.2011, 18:10 #2
Алгоритмы сортировок
0
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,341
Завершенные тесты: 1
21.03.2011, 18:37 #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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
 
void inp(int** x,int n);
void collumn(int** x,int n);
void row(int** x,int n);
void out(int** x,int n);
void oj(int**x ,int n,int* y);
int oj(int** x,int n);
 
void main()
{
        int n;
        cout<<"n=";
        cin>>n;
        char select;
      int* y;
      int m;
        int** x=new int*[n];
 
        for(int i=0;i<n;i++)
                x[i]=new int[n];
 
                cout<<"Enter i for input"
                        <<endl<<"Enter c for collumn sort"
                        <<endl<<"Enter r for row sort"
                        <<endl<<"Enter o for out"
                        <<endl<<"Enter x for operation"
                  <<endl<<"Enter e for exit"
                        <<endl;
        for(;;)
        {
                
                        cin>>select;
                switch(select)
                {
            case 'i':
            case'I':
                     inp(x,n);
                     cout<<"complite"<<endl;
                        break;
                case 'c':
            case'C':
                     collumn(x,n);
                     cout<<"complite"<<endl;
                        break;
                case 'r':
            case 'R':
                     row(x,n);
                     cout<<"complite"<<endl;
                        break;
                case 'o':
            case 'O':
                     out(x,n);
                     cout<<"complite"<<endl;
 
                  break;
            case 'x':
            case 'X':
                  m=oj(x,n);
                  y=new int[m];
                  oj(x,n,y);
                  cout<<"complite"<<endl;
               //   delete[]y;
                        break;
                case 'e':
            case 'E':
                     return;
 
                        default: cout<<"Wrong command!"<<endl;
 
                }
 
        }
        for(i=0;i<n;i++)
                delete[] x[i];
 
        delete[] x;
 
}
 
 
void inp(int** x,int n)
{
        srand(time(0));
        for(int i=0;i<n;i++)
                for(int j=0;j<n;j++)
                        *(*(x+i)+j)=rand()%10;
}
 
void out(int** x,int n)
{
        for(int i=0;i<n;i++)
                {
                        for(int j=0;j<n;j++)
                                cout<<*(*(x+i)+j)<<" ";
                        cout<<endl;
        }
        cout<<endl;
}
 
void collumn(int** x,int n)
{
        int buff;
        bool t;
        
          for(int j=0;j<n;j++)
         {
            t=0;
            while(t==0)
               {
               t=1;
                    for(int i=0;i<n-1;i++)
                      if(*(*(x+i)+j)>*(*(x+i+1)+j))
                        {
                            buff=*(*(x+i)+j);
                            *(*(x+i)+j)=*(*(x+i+1)+j);
                            *(*(x+i+1)+j)=buff;
                            t=0;
                        }
               }
        }      
}
 
 
void row(int** x,int n)
{
        int buff;
        bool t;
             for(int i=0;i<n;i++)
          {   
             t=0;
             while(t==0)
                {
                        t=1;
                        for(int j=0;j<n-1;j++)
                          if(*(*(x+i)+j)>*(*(x+i)+j+1))
                            {
                              buff=*(*(x+i)+j);
                              *(*(x+i)+j)=*(*(x+i)+j+1);
                              *(*(x+i)+j+1)=buff;
                              t=0;
                     }  
               }
          }
}
 
 
int oj(int** x,int n)
{
   int s=0;
   for(int i=1;i<n;i++)
      for(int j=n-1; j>n-1-i;j--)
         s++;
   return s;
}
 
void oj(int**x ,int n,int* y)
{
   int c=0;
   for(int i=1;i<n;i++)
      for(int j=n-1;j>n-1-i;j--)
      {
         *(y+c++)=*(*(x+i)+j);
         cout<<*(y+c++)<<" ";
      }
 
   cout<<endl;
}
0
Ариман
20 / 20 / 1
Регистрация: 18.09.2010
Сообщений: 28
21.03.2011, 19:41 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
void main()
{ const int n=15;
    int arr[n]={0};
srand(time(NULL));
for(int i=0;i<n;i++)
arr[i]=rand()%45;
/////////////////////////////////////////
for(int k=0;k<n-1;k++)//сортировка тут
for(int j=0;j<n-1;j++)
if(arr[j]>arr[j+1])
swap(arr[j],arr[j+1]);
cout<<"Sorted array"<<endl;
for(i=0;i<n;i++)
cout<<arr[i]<<endl;
}
я тут тупо задал масив и заполнил его случайными числами а сортировку взял простейшую пузырьковую ,для перестановки элементов использовал функцию swap ....надеюсь я правильно понял условие задачи ..
1
neske
1503 / 870 / 84
Регистрация: 26.03.2010
Сообщений: 2,985
21.03.2011, 19:43 #5
Ариман, функция swap () описана в библиотеке algorithm.
Без её подключения будет ошибка.
0
Ариман
20 / 20 / 1
Регистрация: 18.09.2010
Сообщений: 28
21.03.2011, 19:46 #6
странно я прогнал её в компиляторе и никакой ошибки не выскочило .Да и в учебнике небыло никакого алгоритм,юзаю правда старую 6 версию висуал студио. По крайней мере у меня все работает
0
neske
1503 / 870 / 84
Регистрация: 26.03.2010
Сообщений: 2,985
21.03.2011, 19:52 #7
Ариман, http://www.cplusplus.com/reference/algorithm/swap/
По правилам нужно подключить)
0
Ариман
20 / 20 / 1
Регистрация: 18.09.2010
Сообщений: 28
21.03.2011, 19:54 #8
Ну в любом случае спасибо впредь буду знать.
1
Screenly
2 / 2 / 0
Регистрация: 14.03.2011
Сообщений: 27
21.03.2011, 20:28 #9
А как сделать, чтобы пользователь задавал кол-во элементов массива, далее создавалось 2 массива (нужного размера), заполнялись случайно, потом производилось их слияние и после этого сортировка и вывод получившегося массива??
0
neske
1503 / 870 / 84
Регистрация: 26.03.2010
Сообщений: 2,985
21.03.2011, 20:34 #10
Я бы это сделал с помощью последовательного контейнера vector.
Но вам я думаю лучше воспользоваться динамическим массивом (воспользуйтесь поиском по форуму).

Слияние массивов можно сделать с помощью алгоритма merge (описан в библиотеке algorithm).
Сортировка с помощью алгоритма sort (algorithm).

Ну или руками все это реализовывать, можно тоже попробовать поискать по форуму.
0
Screenly
2 / 2 / 0
Регистрация: 14.03.2011
Сообщений: 27
21.03.2011, 22:34 #11
Цитата Сообщение от neske Посмотреть сообщение
Я бы это сделал с помощью последовательного контейнера vector.
Но вам я думаю лучше воспользоваться динамическим массивом (воспользуйтесь поиском по форуму).

Слияние массивов можно сделать с помощью алгоритма merge (описан в библиотеке algorithm).
Сортировка с помощью алгоритма sort (algorithm).

Ну или руками все это реализовывать, можно тоже попробовать поискать по форуму.
Мне желательно без дополнительных библиотек. Т.к. потом это все нужно объяснять преподавателю, а мы еще не дошли до различных других библиотек. Объединить 2 динамических массива в 1 на данный момент не удалось(

*массивы должны быть динамическими, заполняются методом rand(); размерность задает пользователь

Добавлено через 12 минут
C++
1
2
3
4
5
6
7
8
9
10
11
                int* A; 
        int size1,i;
        cout << "Введите размер первого массива: ";
        cin >> size1;
        A = new int [size1];
        cout << "Первый массив: ";
        for (i = 0; i < size1; i++)
        {
            A[i]=rand()%100; 
            cout << A[i] << " ";
        };
так же делается 2ой массив. А как их объединить 3им - вот загадка века, для меня =( порылся по форуму, не нашел
0
neske
1503 / 870 / 84
Регистрация: 26.03.2010
Сообщений: 2,985
21.03.2011, 22:40 #12
Screenly, вам крупно повезло))
Нашел я на форуме код, давно когда-то кому-то писал.

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 <iostream>
void func_sort (int *, int);
 
int main ()
{
    const int size=5;
    int MAS_one[size]={1,3,5,7,9};
    int MAS_two[size]={2,4,6,8,10};
    int MAS_rez[size*2];
 
    for (int i=0; i<size; i++) { // просто объединяем.
        MAS_rez[i]=MAS_one[i];
        MAS_rez[i+size]=MAS_two[i]; }
 
    func_sort (MAS_rez, size*2); // вызываем функцию сортировки.
    for (int i=0; i<size*2; i++)
    std::cout<< " " << MAS_rez[i];
 
    std::cout << std::endl;
    system ("pause");
    return 0;
}
 
void func_sort (int *MAS, int size) // тут мы сортируем пузырьком.
{
    int tmp;
 
    for(int i=0; i < size; i++)
        for(int j = size-1; j > i; j-- )
        if ( MAS[j-1] > MAS[j] ) {
      tmp=MAS[j-1]; MAS[j-1]=MAS[j]; MAS[j]=tmp; }
}
Тут массивы статические, на динамику сами измените.
0
21.03.2011, 22:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2011, 22:40
Привет! Вот еще темы с ответами:

Дан массив a из n действительных чисел - C++
Дан массив a из n действительных чисел. Вычислить П.5.18.Правил Запрещено размещать задания и решения в виде картинок и других файлов...

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

Заданы два одномерных массива действительных чисел различных размеров. Объединить их в один массив, включив второй массив между k-м и (k+1)-м элемента - C++
Заданы два одномерных массива действительных чисел различных размеров. Объединить их в один массив, включив второй массив между k-м и...

Сортировка чисел по возрастанию - C++
пожалуйста напишите программу сразу говорю я только начал обучаться! поэтому с которая будет сортировать введённые мной числа! по...


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

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

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