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

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

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

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

06.06.2012, 19:46. Просмотров 334. Ответов 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;
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2012, 19:46     Уменьшить программу/снизить количество операторов
Посмотрите здесь:

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Catstail
Модератор
22514 / 10919 / 1774
Регистрация: 12.02.2012
Сообщений: 18,066
06.06.2012, 19:52     Уменьшить программу/снизить количество операторов #2
Особых резервов для уменьшения кода нет... Но у класса странный конструктор. Он создаёт массив из 10 эл-тов. А если нужно - из ста или из 1000? Конструктору нужно дать параметр целого типа - размер массива. Кроме того: конструктор создает дин. массив, а кто будет его уничтожать (где деструктор)?
MrGluck
Модератор
Эксперт CЭксперт С++
7159 / 4325 / 630
Регистрация: 29.11.2010
Сообщений: 11,750
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/47da93...d362d55e7b965d

Динамический массив ничего не сортирует. Динамический массив это динамический массив.
Andrey.K
342 / 263 / 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;
 
}
MrGluck
Модератор
Эксперт CЭксперт С++
7159 / 4325 / 630
Регистрация: 29.11.2010
Сообщений: 11,750
06.06.2012, 20:01     Уменьшить программу/снизить количество операторов #5
Делать вывод массива в функции сортировки - как-то по быдлокодерски.

P.S. проблемы с памятью остались.
Andrey.K
342 / 263 / 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;
 
}
Я думаю теперь проблема решена.
MrGluck
Модератор
Эксперт CЭксперт С++
7159 / 4325 / 630
Регистрация: 29.11.2010
Сообщений: 11,750
06.06.2012, 20:27     Уменьшить программу/снизить количество операторов #7
Цитата Сообщение от MrGluck Посмотреть сообщение
Не хватает:
Конструктора копирования, оператора присваивания
.....
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2012, 20:31     Уменьшить программу/снизить количество операторов
Еще ссылки по теме:

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

Линейный алгоритм, переписать программу без условных операторов - C++
Можно ли как-то переписать данную программу без условных операторов? Что бы алгоритм был линейный? #include &lt;iostream&gt; using namespace...

Написать консольную программу на языке С/C++ с использованием операторов цикла while или do while - C++
Задание написать консольную программу на языке С/C++ с использованием операторов цикла while или do..while. Строковый тип для...

Составить программу с использованием условных операторов. Даны три вещественных числа. Вычислить max(x+y+z, xyz). - C++
Составить программу с использованием условных операторов. Даны три вещественных числа. Вычислить max(x+y+z, xyz).


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

Или воспользуйтесь поиском по форуму:
Catstail
Модератор
22514 / 10919 / 1774
Регистрация: 12.02.2012
Сообщений: 18,066
06.06.2012, 20:31     Уменьшить программу/снизить количество операторов #8
Конструктор копирование не нужен. А вот деструктор - да!
Yandex
Объявления
06.06.2012, 20:31     Уменьшить программу/снизить количество операторов
Ответ Создать тему
Опции темы

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