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

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

Войти
Регистрация
Восстановить пароль
 
qweas1234
0 / 0 / 0
Регистрация: 03.06.2012
Сообщений: 8
#1

Уменьшить программу/снизить количество операторов - C++

06.06.2012, 19:46. Просмотров 338. Ответов 7
Метки нет (Все метки)

В этой программе описан динамический массив, который сортирует числа по возрастанию. Можно ли как-нибудь уменьшить программу?

C++ (Qt)
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
#include <iostream>
#include <conio.h>
#include <stdlib.h>
 
using namespace std;
 
class Sort {
private:
    int size;
    int *arr;
public:
 
    Sort()
    {
     size = 10;
     arr = new int [size];
    }
    void vvodArr()
    {
        for(int i = 0; i < size; i++)
        {
            arr[i] = rand()%10;
            cout << arr[i] << ' ' << endl;
        }
    }
void sortArr()
    { int t = 0;
        for (int i=1;  i<size;  i++){
                for (int j=0;  j<size-i;  j++){
                    if (arr [j]>arr[j+1]){
                        t=arr[j];
                        arr [j]=arr [j+1];
                        arr [j+1]=t;
                    }
                }
            }
    for(int i = 0; i < size; i++)
        cout << arr[i] << endl;
    }
};
 
int main()
{
    Sort a;
    a.vvodArr();
    cout << endl;
    a.sortArr();
 
    getch();
    return 0;
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2012, 19:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Уменьшить программу/снизить количество операторов (C++):

Как уменьшить количество кода? - C++
Здравствуйте. Имеется костыль код. Этот код делает типа &quot;сколько чисел вместится в одно большое число&quot;. Так, как я с С++ недавно, решил...

Количество условных операторов подряд - C++
Можно ли записать условные операторы таким образом ? if (условие 1) { оператор 1; оператор 2; ....... оператор n;

[Сортировка слиянием] Уменьшить количество требуемой памяти для сортировки - C++
Добрый, на момент написания, день всем. Изучаю алгоритмы данных, дошёл до сортировки слиянием (Merge Sort). Прочитал, что для...

Оптимизировать алгоритм, чтобы уменьшить количество операций для проверок деления - C++
Всего один вопрос. Как оптимизировать алгоритм, чтобы уменьшить количество операций для проверок деления? #include &lt;iostream&gt; #include...

Составить программу и выполнить перегрузку операторов - C++
Описать класс для работы со строкой. Выполнить перегрузку операторов ввода «&gt;&gt;», вывода «&lt;&lt;» и оператора присваивания «=».

Посимвольное считывание из файла и проверка на наличие (+ показать количество операторов) - C++
Условия задачи: Из файла необходимо считывать посимвольно (нельзя прочитать сразу весь файл или по строкам). Так же нельзя дублировать...

7
Catstail
Модератор
22831 / 11197 / 1812
Регистрация: 12.02.2012
Сообщений: 18,438
06.06.2012, 19:52 #2
Особых резервов для уменьшения кода нет... Но у класса странный конструктор. Он создаёт массив из 10 эл-тов. А если нужно - из ста или из 1000? Конструктору нужно дать параметр целого типа - размер массива. Кроме того: конструктор создает дин. массив, а кто будет его уничтожать (где деструктор)?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7490 / 4605 / 691
Регистрация: 29.11.2010
Сообщений: 12,589
06.06.2012, 19:58 #3
Не хватает:
Конструктора копирования, оператора присвоения и деструктора.
динамический массив, который сортирует числа по возрастанию
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <algorithm>
#include <iterator>
#include <random>
 
int main()
{
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> uid(0, 99);
    int *A, N; 
    std::cin>> N;
    A = new int[N];
    std::generate(A, A + N, [&uid, &gen] {return uid(gen); } );
    std::copy(A, A + N, std::ostream_iterator<int> (std::cout, " ") );
    std::cout<< std::endl;
    std::sort(A, A + N);
    std::copy(A, A + N, std::ostream_iterator<int> (std::cout, " ") );
    delete []A;
    return 0;
}
http://liveworkspace.org/code/47da934919c573abbdd362d55e7b965d

Динамический массив ничего не сортирует. Динамический массив это динамический массив.
0
Andrey.K
343 / 264 / 15
Регистрация: 14.11.2010
Сообщений: 482
06.06.2012, 19:58 #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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
 
class Sort {
private:
    int size;
    int *arr;
public:
 
    Sort()
    {
     size = 10;
     arr = new int [size];
    }
    void vvodArr()
    {
        for(int i = 0; i < size; i++)
        {
            arr[i] = rand()%10;
            cout << arr[i] << ' ' << endl;
        }
    }
void sortArr()
    {
        sort(arr,arr+size);
    for(int i = 0; i < size; i++)
        cout << arr[i] << endl;
    }
};
 
int main()
{
    Sort a;
    a.vvodArr();
    cout << endl;
    a.sortArr();
 
    getch();
    return 0;
 
}
0
MrGluck
Модератор
Эксперт CЭксперт С++
7490 / 4605 / 691
Регистрация: 29.11.2010
Сообщений: 12,589
06.06.2012, 20:01 #5
Делать вывод массива в функции сортировки - как-то по быдлокодерски.

P.S. проблемы с памятью остались.
0
Andrey.K
343 / 264 / 15
Регистрация: 14.11.2010
Сообщений: 482
06.06.2012, 20:07 #6
Цитата Сообщение от MrGluck Посмотреть сообщение
Делать вывод массива в функции сортировки - как-то по быдлокодерски.

P.S. проблемы с памятью остались.
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
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
 
class Sort {
private:
    int size;
    int *arr;
public:
 
    Sort()
    {
     size = 10;
     arr = new int [size];
    }
    ~Sort()
    {
                      delete[] arr;
        cout<<"\nObect unichtojen. "<<endl;
        getch();
    }
    void vvodArr()
    {
        for(int i = 0; i < size; i++)
        {
            arr[i] = rand()%10;
            cout << arr[i] << ' ';
        }
        cout<<endl;
    }
void sortArr()
    {
        sort(arr,arr+size);
    }
void vivodArr()
{
        for(int i = 0; i < size; i++)
        cout << arr[i] << " ";
}
 
};
 
int main()
{
    Sort a;
    a.vvodArr();
    a.sortArr();
    a.vivodArr();
    getch();
    return 0;
 
}
Я думаю теперь проблема решена.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7490 / 4605 / 691
Регистрация: 29.11.2010
Сообщений: 12,589
06.06.2012, 20:27 #7
Цитата Сообщение от MrGluck Посмотреть сообщение
Не хватает:
Конструктора копирования, оператора присваивания
.....
0
Catstail
Модератор
22831 / 11197 / 1812
Регистрация: 12.02.2012
Сообщений: 18,438
06.06.2012, 20:31 #8
Конструктор копирование не нужен. А вот деструктор - да!
0
06.06.2012, 20:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2012, 20:31
Привет! Вот еще темы с ответами:

Уменьшить число в 2 раза (деление нацело). Проверить, изменилось ли после уменьшения количество разрядов - C++
Цель: Использование функций в программе Дано натуральное число N. Уменьшить число в 2 раза (деление нацело). Проверить, изменилось ли...

Составить программу вычисления с применением операторов цикла - C++
p=\prod_{i=1}^{5}{e}^{{i}^{2}}+1

Дан массив.Все положительные элементы уменьшить на количество отрицательных элементов. Осуществить сдвиг вправо - C++
Помогите доделать задачу на С++ 1.Дан массив A. Все положительные элементы уменьшить на количество отрицательных элементов. Осуществить...

Написать программу, вычисляющую выражение с использованием условных операторов - C++
Написать программу, вычисляющую выражение с использованием условных операторов. Написать программу, которая: a. запрашивает какую...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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