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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.79
max_oops
0 / 0 / 0
Регистрация: 14.07.2012
Сообщений: 28
#1

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

18.07.2012, 21:16. Просмотров 2440. Ответов 12
Метки нет (Все метки)

упорядочить элементы массива по убыванию.......написал программу ....зависает и выключается после ввода массива
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;              
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2012, 21:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Упорядочить элементы массива по убыванию (C++):

В одномерном массиве все отрицательные элементы заменить нулями и упорядочить элементы массива по убыванию - C++
В одновимірному масиві всі від’ємні елементи замінити нулями і впорядкувати елементи масиву за спаданням.

Упорядочить элементы массива по убыванию - C++
В одномерном массиве,состоящем из n вещественных элементов,вычислить: 1)Сумму элементов массива,расположенных после максимального...

Упорядочить элементы массива по убыванию - C++
В одномерном массиве, состоящем из n действительных элементов, найдите 3) упорядочение элементы массива по убыванию.

Упорядочить элементы массива по убыванию - C++
УКР Дано масив з N речовинних чисел. Упорядкувати елементи масиву за спаданням. Визначити суму 5-ти найменших елементів. РУС ...

Упорядочить элементы массива Z по убыванию - C++
Помогите решить пожалуйста.Можно с коментариями, просто недавно начал учить. Задача Сгенерировать и вывести на экран одномерный массив...

Найти минимальный и максимальный элементы массива и упорядочить элементы по убыванию, стоящие между ними, методом «пузырька». - C++
Привет ВСЕМ!!! Обратите вниминие на эту задачку, ПЛЗ!!! =) Можно и без метода &quot; пузырька&quot;!!! Дан массив А(40). Найти минимальный и...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Leomana
58 / 58 / 5
Регистрация: 29.06.2012
Сообщений: 188
18.07.2012, 21:20 #2
может надо написать
C++
1
 int mass[number];
0
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;              
}
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 минут
что у Вас за компилятор такой, что эта программа даже запускается у Вас..
0
max_oops
0 / 0 / 0
Регистрация: 14.07.2012
Сообщений: 28
18.07.2012, 21:36  [ТС] #5
ничего не поменялось......сравниваются только парами
0
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;
 
        }
вот например простая сортировка пузырьком
0
max_oops
0 / 0 / 0
Регистрация: 14.07.2012
Сообщений: 28
19.07.2012, 00:46  [ТС] #7
а можно пару коментариев????
что за массив j ???
0
nameless
Эксперт C++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
19.07.2012, 01:02 #8
Цитата Сообщение от max_oops Посмотреть сообщение
что за массив j ???
Где вы здесь массив j увидели?
Про пузырек вот здесь хотя бы почитайте: http://algolist.manual.ru/sort/bubble_sort.php
1
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
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. Ну или смотри Алгоритмы сортировок, там все уже разжевано
2
max_oops
0 / 0 / 0
Регистрация: 14.07.2012
Сообщений: 28
19.07.2012, 20:05  [ТС] #10
Всем большое спасибо .....с пузырьком разобрался.

но небольшая проблема: когда вводишь большой массив ( даже 9 элементов) программа виснет.
компилятор DEV C++
0
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;
Позволительна и отработает, но вот вопрос что она испортит в памяти
0
Сергей25
0 / 0 / 1
Регистрация: 30.09.2013
Сообщений: 45
29.11.2013, 14:45 #12
а можно это записать на языке дельфи?
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
29.11.2013, 14:46 #13
Можно.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2013, 14:46
Привет! Вот еще темы с ответами:

Упорядочить элементы каждого столбца массива по убыванию - C++
Дано задачку: Дано двумерный массив знаковых целых чисел FAM 1. Упорядочить элементы каждого столбца массива FAM по убыванию. 2....

Упорядочить элементы массива по убыванию модулей элементов - C++
в 1мерном массиве состоящем из n эл. вычислить: 1 колич эл массива лежащих от А до В 2 сумму эл массива расположенных после макс...

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

Элементы массива по убыванию модулей упорядочить методом выбора! - C++
Дан целочисленный массив A(n) с элементами, сгенерированными случайными числами в диапазоне (-20, 20). Требуется: Упорядочить методом...


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

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

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