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

Упорядочить элементы массива по убыванию - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.79
max_oops
0 / 0 / 0
Регистрация: 14.07.2012
Сообщений: 28
18.07.2012, 21:16     Упорядочить элементы массива по убыванию #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
#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
int main ()
{      setlocale(LC_ALL,"Russian");
 
int number;
cout << "Èç ñêîëüêè ýëåìåГ*òîâ äîëæåГ* ñîñòîÿòü Г¬Г*Г±Г±ГЁГў??\n";
cin >> number;
int i=0;
int mass[i];
for( int i=0; i<number; i++)
{ cout << "ââåäèòå" <<" " <<i+1 <<" " << "ýëåìåГ*ГІ Г¬Г*Г±Г±ГЁГўГ* \n";
   cin >> mass[i];};
   //âûâîä Г±ГІГ*ðîãî Г¬Г*Г±Г±ГЁГўГ*
cout <<"âîò 'Г±ГІГ*ðûé' Г¬Г*Г±Г±ГЁГў\n"<<"{  " ;
i=0;
for(int i=0;i<number;i++)
   {cout<< mass[i] <<"  ";};
cout<< "}\n"; 
// óïîðÿä÷èòü ГЇГ® âîçðГ*Г±ГІГ*Г*ГЁГѕ ýëåìåГ*ГІГ» Г¬Г*Г±Г±ГЁГўГ*
i=0;
int zamena=0;
for(int i=0;i<number;i++)
{ 
              if(mass[i]>mass[++i])
              {zamena=mass[i];
               mass[i]=mass[++i];
               mass[++i]=zamena;
               }
};
//âûâîä Г*îâîãî Г¬Г*Г±Г±ГЁГўГ*
cout <<"âîò 'Г*îâûé' Г¬Г*Г±Г±ГЁГў\n"<<"{  " ;
i=0;
for(int i=0;i<number;i++)
   {cout<<mass[i]<<"  ";};
cout<< "}\n";                     
               
system("pause"); 
return 0;              
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2012, 21:16     Упорядочить элементы массива по убыванию
Посмотрите здесь:

C++ упорядочить элементы массива по убыванию модулей эл
Найти минимальный и максимальный элементы массива и упорядочить элементы по убыванию, стоящие между ними, методом «пузырька». C++
Задали массив действительных чисел х1, х2, ..., хn. Упорядочить элементы этого массива по убыванию. C++
C++ Элементы массива по убыванию модулей упорядочить методом выбора!
Упорядочить элементы массива Z по убыванию C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Leomana
58 / 58 / 5
Регистрация: 29.06.2012
Сообщений: 188
18.07.2012, 21:20     Упорядочить элементы массива по убыванию #2
может надо написать
C++
1
 int mass[number];
max_oops
0 / 0 / 0
Регистрация: 14.07.2012
Сообщений: 28
18.07.2012, 21:26  [ТС]     Упорядочить элементы массива по убыванию #3
нет ... number это число элементов массива которое вводится с клавы

Добавлено через 2 минуты
кое что изменил....прога работает.... но расставляет по порядкку только по парам 1 и 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
36
37
38
39
40
41
42
43
44
45
#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
int main ()
{      setlocale(LC_ALL,"Russian");
 
int number;
cout << "Èç ñêîëüêè ýëåìåГ*òîâ äîëæåГ* ñîñòîÿòü Г¬Г*Г±Г±ГЁГў??\n";
cin >> number;
int i=0;
int mass[i];
for( int i=0; i<number; i++)
{ cout << "ââåäèòå" <<" " <<i+1 <<" " << "ýëåìåГ*ГІ Г¬Г*Г±Г±ГЁГўГ* \n";
   cin >> mass[i];};
   //âûâîä Г±ГІГ*ðîãî Г¬Г*Г±Г±ГЁГўГ*
cout <<"âîò 'Г±ГІГ*ðûé' Г¬Г*Г±Г±ГЁГў\n"<<"{  " ;
i=0;
for(int i=0;i<number;i++)
   {cout<< mass[i] <<"  ";};
cout<< "}\n"; 
// óïîðÿä÷èòü ГЇГ® âîçðГ*Г±ГІГ*Г*ГЁГѕ ýëåìåГ*ГІГ» Г¬Г*Г±Г±ГЁГўГ*
i=0;
int zamena=0;
for(int i=0;i<number;i++)
{ 
              if(mass[i]>mass[++i])
              {zamena=mass[i];
               mass[i]=mass[++i];
               i--;
               mass[++i]=zamena;
               i--;
               }
};
//âûâîä Г*îâîãî Г¬Г*Г±Г±ГЁГўГ*
cout <<"âîò 'Г*îâûé' Г¬Г*Г±Г±ГЁГў\n"<<"{  " ;
i=0;
for(int i=0;i<number;i++)
   {cout<<mass[i]<<"  ";};
cout<< "}\n";                     
               
system("pause"); 
return 0;              
}
Leomana
58 / 58 / 5
Регистрация: 29.06.2012
Сообщений: 188
18.07.2012, 21:36     Упорядочить элементы массива по убыванию #4
да. поэтому надо выделить столько элементов массива. А как у Вас, выделяется 0 элементов

Добавлено через 2 минуты
для справки не надо писать так
C++
1
2
i=0;
for(int i=0;i<number;i++)
пишите так
C++
1
for( i=0;i<number;i++)
Добавлено через 7 минут
что у Вас за компилятор такой, что эта программа даже запускается у Вас..
max_oops
0 / 0 / 0
Регистрация: 14.07.2012
Сообщений: 28
18.07.2012, 21:36  [ТС]     Упорядочить элементы массива по убыванию #5
ничего не поменялось......сравниваются только парами
Leomana
58 / 58 / 5
Регистрация: 29.06.2012
Сообщений: 188
18.07.2012, 21:54     Упорядочить элементы массива по убыванию #6
логически неправильно написана сортировка

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
for ( i = 0; i < number-1; i ++ )
 
  for ( int j = number-2; j >= i; j -- )
 
      if ( mass[j] > mass[j+1] )
 
        {
 
        zamena = mass[j]; mass[j] = mass[j+1];
 
        mass[j+1] = c;
 
        }
вот например простая сортировка пузырьком
max_oops
0 / 0 / 0
Регистрация: 14.07.2012
Сообщений: 28
19.07.2012, 00:46  [ТС]     Упорядочить элементы массива по убыванию #7
а можно пару коментариев????
что за массив j ???
nameless
Эксперт C++
 Аватар для nameless
289 / 288 / 14
Регистрация: 16.06.2009
Сообщений: 486
19.07.2012, 01:02     Упорядочить элементы массива по убыванию #8
Цитата Сообщение от max_oops Посмотреть сообщение
что за массив j ???
Где вы здесь массив j увидели?
Про пузырек вот здесь хотя бы почитайте: http://algolist.manual.ru/sort/bubble_sort.php
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
19.07.2012, 03:28     Упорядочить элементы массива по убыванию #9
На сортировку, если честно, не похоже. Вот тебе сортировочка (большие массивы задавать не рекомендую):
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
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <iterator>
 
template <class Iterator>
bool sorted(Iterator beg, Iterator end)
{
    Iterator curr, next;
 
    if(beg == end)
        return true;
 
    for(curr = beg, next = curr + 1; next != end; curr = next++)
        if(*curr < *next)
            return false;
    return true;
}
 
// Bogosort - ultimate sorting algorithm!
template <class Iterator>
void bogosort(Iterator beg, Iterator end)
{
    while(!sorted(beg, end))
        std::random_shuffle(beg, end);
}
 
int main()
{
    const size_t array_size = 5;
    int arr[array_size];
    
    srand((size_t) time(NULL));
    for(size_t i = 0; i < array_size; ++i)
        arr[i] = rand() % 10;
 
    std::cout << "Before sorting: " << std::endl;
    std::copy(arr, arr + array_size, std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
 
    bogosort(arr, arr + array_size);
 
    std::cout << "After sorting: " << std::endl;
    std::copy(arr, arr + array_size, std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
}
А если серьезно, то смотри в сторону std::sort. Ну или смотри Алгоритмы сортировок, там все уже разжевано
max_oops
0 / 0 / 0
Регистрация: 14.07.2012
Сообщений: 28
19.07.2012, 20:05  [ТС]     Упорядочить элементы массива по убыванию #10
Всем большое спасибо .....с пузырьком разобрался.

но небольшая проблема: когда вводишь большой массив ( даже 9 элементов) программа виснет.
компилятор DEV C++
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
19.07.2012, 20:36     Упорядочить элементы массива по убыванию #11
Цитата Сообщение от max_oops Посмотреть сообщение
Всем большое спасибо .....с пузырьком разобрался.

но небольшая проблема: когда вводишь большой массив ( даже 9 элементов) программа виснет.
компилятор DEV C++
Я все-таки не понимаю, почему у тебя массив задается так :
C++
1
2
int i=0;
int mass[i];
Массив из нуля элементов? А затем идет считывание от 0 до number-1?
Делай так :
C++
1
int *mass = new int[number]; // тогда получится массив из number-элементов
В твоем случае идет обращение к невыделенной !заранее! памяти, из-за чего могут быть ошибки (как ты говоришь при 9 элементах) при обращении к другим элементам.
По сути, конструкция :
C++
1
2
int a[10];
a[1000000] = 10;
Позволительна и отработает, но вот вопрос что она испортит в памяти
Сергей25
0 / 0 / 1
Регистрация: 30.09.2013
Сообщений: 45
29.11.2013, 14:45     Упорядочить элементы массива по убыванию #12
а можно это записать на языке дельфи?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2013, 14:46     Упорядочить элементы массива по убыванию
Еще ссылки по теме:

Упорядочить элементы одномерного массива по убыванию модулей элементов C++
Упорядочить элементы массива по убыванию C++
Упорядочить элементы массива по убыванию C++

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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
29.11.2013, 14:46     Упорядочить элементы массива по убыванию #13
Можно.
Yandex
Объявления
29.11.2013, 14:46     Упорядочить элементы массива по убыванию
Ответ Создать тему
Опции темы

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