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

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

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

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

21.03.2011, 18:09. Просмотров 807. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2011, 18:09     Сортировка массив действительных чисел по возрастанию
Посмотрите здесь:

C++ Дан массив действительных чисел
C++ Заданы два одномерных массива действительных чисел различных размеров. Объединить их в один массив, включив второй массив между k-м и (k+1)-м элемента
Сортировка не получается (отсортировать массив по возрастанию) C++
Дан массив действительных чисел A[10]. Отсортировать по убыванию. C++
C++ Дан массив действительных чисел X[N]. Вычислить Y=max (X[i])-min(X[i]).
Опишите массив 30 действительных чисел, матрицу 6Х6 целых чисел, 256 символов C++
C++ Сортировка чисел по возрастанию
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1455 / 822 / 68
Регистрация: 26.03.2010
Сообщений: 2,811
21.03.2011, 18:10     Сортировка массив действительных чисел по возрастанию #2
Алгоритмы сортировок
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,216
Завершенные тесты: 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;
}
Ариман
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 ....надеюсь я правильно понял условие задачи ..
neske
1455 / 822 / 68
Регистрация: 26.03.2010
Сообщений: 2,811
21.03.2011, 19:43     Сортировка массив действительных чисел по возрастанию #5
Ариман, функция swap () описана в библиотеке algorithm.
Без её подключения будет ошибка.
Ариман
20 / 20 / 1
Регистрация: 18.09.2010
Сообщений: 28
21.03.2011, 19:46     Сортировка массив действительных чисел по возрастанию #6
странно я прогнал её в компиляторе и никакой ошибки не выскочило .Да и в учебнике небыло никакого алгоритм,юзаю правда старую 6 версию висуал студио. По крайней мере у меня все работает
neske
1455 / 822 / 68
Регистрация: 26.03.2010
Сообщений: 2,811
21.03.2011, 19:52     Сортировка массив действительных чисел по возрастанию #7
Ариман, http://www.cplusplus.com/reference/algorithm/swap/
По правилам нужно подключить)
Ариман
20 / 20 / 1
Регистрация: 18.09.2010
Сообщений: 28
21.03.2011, 19:54     Сортировка массив действительных чисел по возрастанию #8
Ну в любом случае спасибо впредь буду знать.
Screenly
2 / 2 / 0
Регистрация: 14.03.2011
Сообщений: 27
21.03.2011, 20:28     Сортировка массив действительных чисел по возрастанию #9
А как сделать, чтобы пользователь задавал кол-во элементов массива, далее создавалось 2 массива (нужного размера), заполнялись случайно, потом производилось их слияние и после этого сортировка и вывод получившегося массива??
neske
1455 / 822 / 68
Регистрация: 26.03.2010
Сообщений: 2,811
21.03.2011, 20:34     Сортировка массив действительных чисел по возрастанию #10
Я бы это сделал с помощью последовательного контейнера vector.
Но вам я думаю лучше воспользоваться динамическим массивом (воспользуйтесь поиском по форуму).

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

Ну или руками все это реализовывать, можно тоже попробовать поискать по форуму.
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им - вот загадка века, для меня =( порылся по форуму, не нашел
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2011, 22:40     Сортировка массив действительных чисел по возрастанию
Еще ссылки по теме:

Целую частьиз массива действительных чисел переписать в массив целых чисел C++
C++ Упорядочить обменом массив действительных чисел по возрастанию
Записать в файл n действительных чисел в заданном диапазоне, затем упорядочить их по возрастанию C++
C++ Дан массив a из n действительных чисел
Сортировка действительных чисел записанных в файл C++

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

Или воспользуйтесь поиском по форуму:
neske
1455 / 822 / 68
Регистрация: 26.03.2010
Сообщений: 2,811
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; }
}
Тут массивы статические, на динамику сами измените.
Yandex
Объявления
21.03.2011, 22:40     Сортировка массив действительных чисел по возрастанию
Ответ Создать тему
Опции темы

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