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

Заполнить массив рандом из 20 чисел, отсортировать по возрастанию и вывести на экран - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 70, средняя оценка - 4.87
jayson
0 / 0 / 0
Регистрация: 09.03.2010
Сообщений: 26
24.03.2010, 15:43     Заполнить массив рандом из 20 чисел, отсортировать по возрастанию и вывести на экран #1
всем привет.вот пытаюсь заполнить массив рандом из 20 чисел,после мне его нужно отсортировать по возрастанию и вывести на экран,из за чего не работает?

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
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
void main()
{
    const int max_elem=20;
    int mas[max_elem];
    for(int i=0;i<20;i++)
    {
        mas[i]=rand()%200;
    }
    int elems=max_elem;
    int n;
    for(int cur=0;cur<elems;cur++)
        for(int n=0;n<elems-1;n++)
            if(mas[n]>mas[n+1])
            {
                int t=mas[n];
                mas[n]=mas[n+1];
                mas[n+1]=t;
                cout<<max_elem<<",";
            }
            
    
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2010, 15:43     Заполнить массив рандом из 20 чисел, отсортировать по возрастанию и вывести на экран
Посмотрите здесь:

C++ Отсортировать массив по возрастанию и вывести на экран
Отсортировать по возрастанию массив 10 целых чисел методом выбора C++
Cгенерировать одномерный массив из 10 чисел,отсортировать его по возрастанию или убыванию C++
Заполнить массив рядом чисел от 0 до 9, вывести его на экран C++
C++ Заполнить массив размером 10 случайными числами от 0 до 10, отсортировать его по возрастанию
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Зоти Сергей
 Аватар для Зоти Сергей
228 / 226 / 13
Регистрация: 18.12.2009
Сообщений: 316
24.03.2010, 15:51     Заполнить массив рандом из 20 чисел, отсортировать по возрастанию и вывести на экран #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
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
void main()
{
        const int max_elem=20;
        int mas[max_elem];
        for(int i=0;i<max_elem;i++)
        {
                mas[i]=rand()%200;
        }
 
        int n;
        for(int cur=0;cur<max_elem;cur++)
                for(int n=0;n<max_elem-1;n++)
 
                        if(mas[n]>mas[n+1])
                        {
                                int t=mas[n];
                                mas[n]=mas[n+1];
                                mas[n+1]=t;
 
                        }
 
        for(int i=0;i<max_elem;i++)
                cout<<mas[i]<<",";
}
jayson
0 / 0 / 0
Регистрация: 09.03.2010
Сообщений: 26
24.03.2010, 15:58  [ТС]     Заполнить массив рандом из 20 чисел, отсортировать по возрастанию и вывести на экран #3
спасибо!
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
24.03.2010, 16:34     Заполнить массив рандом из 20 чисел, отсортировать по возрастанию и вывести на экран #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <set>
#include <iterator>
#include <cstdlib>
#include <ctime>
    
/* выводит 20 случайных чисел от 0 до 99, упорядоченных по возрастанию */
    
int main(){
    std::multiset<int> ms;
    const int SIZE = 20;
    
    srand(time(NULL));
    for ( int i = 0; i < SIZE; ++i )
        ms.insert(rand() % 100);
    
    std::copy(ms.begin(), ms.end(), std::ostream_iterator<int>(std::cout, "\n"));
    
    return 0;
}
zloivan
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 8
28.09.2010, 01:00     Заполнить массив рандом из 20 чисел, отсортировать по возрастанию и вывести на экран #5
Господа программисты, только недавно начал познавать азы программирования на C++. До этого написал только одну прогу Hello World. В общем, есть задание написать прогу, чтобы после ввода 4ех целых чисел она их сортировала, и выводила по убыванию и возрастанию, вот что получилось:
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
#include <iostream.h>
#include <conio.h>
int main()
{int a,b,c,d,n1,n2,n3,n4,rez1,rez2,rez3,rez4;
cout<<"Trebuetsya vvesti 4 chisla"<<endl;
getch();
cout<<"Vvedite chislo 1 - ";
cin>>a;
cout<<"Vvedite chislo 2 - ";
cin>>b;
cout<<"Vvedite chislo 3 - ";
cin>>c;
cout<<"Vvedite chislo 4 - ";
cin>>d;
cout<<"Sortirovka po ubivaniyu - "<<endl;
 
if (a>b) n1=a, n3=b;
        else n3=a, n1=b;
if (c>d) n2=c, n4=d;
        else n4=c, n2=d;
if (n1>n2) rez1=n1, rez2=n2;
        else rez2=n1, rez1=n2;
if (n3>n4) rez4=n4,rez3=n3;
        else rez3=n4,rez4=n3;
cout<<"1 = "<<rez1<<endl<<"2 = "<<rez2<<endl <<"3 = "<<rez3<<endl<<"4 = "<<rez4<<endl;
cout<<"Sortirovka po vozrastaniyu - "<<endl;
cout<<"1 = "<<rez4<<endl<<"2 = "<<rez3<<endl <<"3 = "<<rez2<<endl<<"4 = "<<rez1<<endl;
 
getch(); return 0;
Прога работает, но написана на мой взгляд крайне коряво, тк если бы переменных было не 4 а скажем 6 или более, количество переменных увеличилось бы еще на 4, пожалуйста подскажите какой нить более человеческий способ выполнения задачи (с массивами пока что работать не умею)... Хотелось бы избавится от такого количества переменных, и сократить их хотя бы до 8.

За одно посоветуйте пожалуйста какую-нибудь литературу, толковую, для начинающих. Заранее спасибо.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
28.09.2010, 01:32     Заполнить массив рандом из 20 чисел, отсортировать по возрастанию и вывести на экран #6
Цитата Сообщение от zloivan Посмотреть сообщение
пожалуйста подскажите какой нить более человеческий способ выполнения задачи (с массивами пока что работать не умею)...
прийдётся научиться...
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
#include <iostream>
#include <algorithm>
#include <functional>
 
int main(){
    int * arr, size;
    std::cout << "Number of elements: ";
    std::cin >> size;
    arr = new int [ size ];
    for ( int i = 0; i < size; ++i ){
        std::cout << "ARRAY[" << i << "] = ";
        std::cin >> arr[i];
    }
    std::cout << "\nSorted ascendant:\n";
    std::sort(arr, arr + size, std::less<int>());
    for ( int i = 0; i < size; ++i )
        std::cout << arr[i] << ' ';
    std::cout << "\n\nSorted descendant:\n";
    std::sort(arr, arr + size, std::greater<int>());
    for ( int i = 0; i < size; ++i )
        std::cout << arr[i] << ' ';
    std::cout << std::endl;
    
    delete [] arr;
    return 0;
}
Цитата Сообщение от zloivan Посмотреть сообщение
недавно начал познавать азы программирования на C++
вот сюда http://www.cplusplus.com/reference/ почаще заглядывайте - много для себя нового найдёте
Yandex
Объявления
28.09.2010, 01:32     Заполнить массив рандом из 20 чисел, отсортировать по возрастанию и вывести на экран
Ответ Создать тему
Опции темы

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