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

Сортировка пузырьком с++ - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 194, средняя оценка - 4.98
FroLe
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 7
19.12.2010, 14:26     Сортировка пузырьком с++ #1
Сортировка пузырьком, все работает, но помогите поменять ввод цифр в ручную на ввод цифр рандома (от -100 до +100).
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
#include <iostream>
using namespace std;
// наш массив
int array[100];
// сортировка
void*Sort(int col) 
{ 
    // временная переменная для хранения промежуточного результата
    int trash=0;  
    // пока не равно количеству елементов
    for (int i=1; i<=col ; i++)
    {
        // пока не равно col-i
        for (int j=1; j<=col-i; j++) 
        {
            // если левый элемент больше
            if (array [j]>array [j+1]) 
            {
                // правого, то меняем их местами
                trash=array[j]; 
                array [j]=array [j+1];
                array [j+1]=trash;
            }
        }
    }
}
// вывод на экран нашего массива после сортировки
void*Out(int col) 
{
    for (int i=1; i<=col; i++) 
    cout << array [i] <<" ";
    cout << endl; 
}
int main()
{
    int col_el;
    cout << " Enter length of array"<< endl;
    // считываем количество элементов
    cin >> col_el;
    // считываем элементы массива
    for (int n=1; n<=col_el ; n++) 
    cin >> array[n];
    Sort(col_el); 
    // сортируем их
    cout << "Result is :"<<endl; 
    // и выводим  
    Out(col_el);
    // ждем нажатия клавиши
    cin >> col_el; 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2010, 14:26     Сортировка пузырьком с++
Посмотрите здесь:

Сортировка пузырьком. C++
Сортировка пузырьком C++
C++ Сортировка пузырьком
C++ Сортировка пузырьком
C++ Сортировка пузырьком
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vx5
 Аватар для vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
19.12.2010, 14:56     Сортировка пузырьком с++ #2
C++
1
2
3
4
5
6
7
8
9
10
#include <stdlib.h>
#include <time.h>
 
int make_rand()
{
static int k=0;
srand(time(0)+k);
k++
return rand()%200-100;
}
в маине:
C++
1
2
    for (int n=1; n<=col_el ; n++) 
       array[n]=make_rand();
Добавлено через 4 минуты
можно еще без статической переменной, передавая число n в функцию из цикла.
FroLe
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 7
20.12.2010, 01:25  [ТС]     Сортировка пузырьком с++ #3
спс, но на return rand()%200-100; - ошибка вылезла.

мне уже подсказали вот так
C++
1
#include <stdlib.h>
C++
1
2
3
srand(1000);
for (int n=1; n<=col_el ; n++) 
array[n]=rand()%201-100;
Добавлено через 9 часов 16 минут
ещё, сложно будет разпарелелить такую программу в несколько потоков? с помощью библиотеки pthreads) кто поможет?))
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
20.12.2010, 01:27     Сортировка пузырьком с++ #4
сначало скажи как тебе распределить сортировку между потоками
FroLe
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 7
20.12.2010, 10:32  [ТС]     Сортировка пузырьком с++ #5
ну препрод сказал что б 1 поток сортировал с -100 до 0 , второй поток сортировал с 1 до 100, а в главном потоке идет ввод и вывод данных
vx5
 Аватар для vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
20.12.2010, 12:59     Сортировка пузырьком с++ #6
C++
1
2
3
srand(1000);
for (int n=1; n<=col_el ; n++) 
array[n]=rand()%201-100;
тебе так сортировать нечего, все элементы равны друг другу.

Добавлено через 7 минут
спс, но на return rand()%200-100; - ошибка вылезла.
ошибка у меня в пропущенной ";" после оператора инкремента, ну и действительно вместо 200 надо 201, иначе число 100 включено не будет.
исправленный вариант без стат.переменной:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int make_rand(int k)
{
srand(time(0)+k);
return rand()%201-100;
}
/*
...
*/
for (int n=1; n<=col_el ; n++) 
       array[n]=make_rand(n);
/*
...
*/
Vladislav_Sh
0 / 0 / 0
Регистрация: 18.10.2010
Сообщений: 14
24.05.2012, 21:10     Сортировка пузырьком с++ #7
Народ, попробовал этот код, Но! Например вводишь 85 50 90 12 , он выводит 0 12 50 85, и так всё время, откуда-то берется 0 , и самое большое число убирается, чего так?
albannikov
 Аватар для albannikov
12 / 12 / 2
Регистрация: 20.12.2012
Сообщений: 75
20.12.2012, 13:08     Сортировка пузырьком с++ #8
То, что надо

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
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <conio.h>
 
 
 
void RangedRand( int range_min, int range_max)      //генератор случайных чисел
{   
    int i;
    for ( i = 0; i < 5; i++ )     
   {
      rand();
      int u = (double)rand() / (RAND_MAX + 1) * (range_max - range_min)
            + range_min;       
      printf("%6d\n",u);        
   }
}
 
int main( void )
{
    srand( (unsigned)time( NULL ) );
    RangedRand(-100,100);
   _getch();
   
}
 
//------------------------------------------------------------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------------------------------------------------------------//
 
 
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <conio.h>
 
 
 
int RangedRand( int range_min, int range_max)
{       
      rand();
      int u = (double)rand() / (RAND_MAX + 1) * (range_max - range_min)
            + range_min;
      return u;
           
}
 
int main(void)
{
    srand( (unsigned)time( NULL ) ); 
    int mas[7][7],i,j;
 
    for (i=0;i<6;i++)
    {
        for(j=0;j<6;j++)
        {
        mas[i][j] = RangedRand(-100,100);
        printf(" %d\t", mas[i][j]); 
        }
 
        printf("\n");
    
    }   
    _getch();
}
Julianna
0 / 0 / 0
Регистрация: 24.05.2012
Сообщений: 5
17.04.2013, 09:22     Сортировка пузырьком с++ #9
Не могли бы вы в комментариях описать алгоритм выполнения вашей программы, запуталась в том какая строчка что делает. Заранее спасибо

Добавлено через 2 минуты
albannikov, Не могли бы вы в комментариях описать алгоритм выполнения вашей программы, запуталась в том какая строчка что делает. Заранее спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2013, 08:12     Сортировка пузырьком с++
Еще ссылки по теме:

C++ Сортировка пузырьком
Сортировка Пузырьком :) C++
C++ Сортировка пузырьком

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

Или воспользуйтесь поиском по форуму:
albannikov
 Аватар для albannikov
12 / 12 / 2
Регистрация: 20.12.2012
Сообщений: 75
19.05.2013, 08:12     Сортировка пузырьком с++ #10
Цитата Сообщение от Julianna Посмотреть сообщение
Не могли бы вы в комментариях описать алгоритм выполнения вашей программы, запуталась в том какая строчка что делает. Заранее спасибо

Добавлено через 2 минуты
albannikov, Не могли бы вы в комментариях описать алгоритм выполнения вашей программы, запуталась в том какая строчка что делает. Заранее спасибо
Пожалуйста

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
#include "stdafx.h"         //Подключаем библиотеки
#include <stdlib.h>        //Подключаем библиотеки
#include <stdio.h>  //Подключаем библиотеки
#include <time.h>   //Подключаем библиотеки
#include <conio.h>  //Подключаем библиотеки
 
 
 
int RangedRand( int range_min, int range_max)   // Функция "Генератор случайных чисел"
{       
      rand();
      int u = (double)rand() / (RAND_MAX + 1) * (range_max - range_min)  // Переменной присваиваем сл. значение
            + range_min;
      return u;                     //Возвращаем значение переменной           
}
 
int main(void)  // Главная функция
{
    srand( (unsigned)time( NULL ) );  // Сбрасываем генератор сл. чисел, иначе числа каждый раз будут одинаковые
    int mas[7][7],i,j;            // Объявляем 2-мерный массив 7х7
 
    for (i=0;i<7;i++)                 // Запускаем цикл заполнения строк
    {
        for(j=0;j<7;j++)              // Вложенный цикл заполнения столбцов
        {
        mas[i][j] = RangedRand(-100,100); // Каждому элементу присваиваем сл. значение
        printf(" %d\t", mas[i][j]);       // После чего выводим этот элемент массива на экран
        }
 
        printf("\n");      // Для отступа между строками
    
    }   
    _getch();   // Программа выполнилась, ожидаем нажатия Any Key
}
Yandex
Объявления
19.05.2013, 08:12     Сортировка пузырьком с++
Ответ Создать тему
Опции темы

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