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

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

Восстановить пароль Регистрация
 
qweas1234
0 / 0 / 0
Регистрация: 03.06.2012
Сообщений: 8
06.06.2012, 19:46     Уменьшить программу/снизить количество операторов #1
В этой программе описан динамический массив, который сортирует числа по возрастанию. Можно ли как-нибудь уменьшить программу?

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++ Количество условных операторов подряд
C++ Дан массив.Все положительные элементы уменьшить на количество отрицательных элементов. Осуществить сдвиг вправо
Составить программу вычисления с применением операторов цикла C++
Написать программу, вычисляющую выражение с использованием условных операторов C++
C++ [Сортировка слиянием] Уменьшить количество требуемой памяти для сортировки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Catstail
Модератор
 Аватар для Catstail
21492 / 10245 / 1670
Регистрация: 12.02.2012
Сообщений: 17,129
06.06.2012, 19:52     Уменьшить программу/снизить количество операторов #2
Особых резервов для уменьшения кода нет... Но у класса странный конструктор. Он создаёт массив из 10 эл-тов. А если нужно - из ста или из 1000? Конструктору нужно дать параметр целого типа - размер массива. Кроме того: конструктор создает дин. массив, а кто будет его уничтожать (где деструктор)?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4923 / 2666 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
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
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
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
Ворчун
Эксперт С++
 Аватар для MrGluck
4923 / 2666 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
06.06.2012, 20:01     Уменьшить программу/снизить количество операторов #5
Делать вывод массива в функции сортировки - как-то по быдлокодерски.

P.S. проблемы с памятью остались.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
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
Ворчун
Эксперт С++
 Аватар для MrGluck
4923 / 2666 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
06.06.2012, 20:27     Уменьшить программу/снизить количество операторов #7
Цитата Сообщение от MrGluck Посмотреть сообщение
Не хватает:
Конструктора копирования, оператора присваивания
.....
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2012, 20:31     Уменьшить программу/снизить количество операторов
Еще ссылки по теме:

Как уменьшить количество кода? C++
C++ Оптимизировать алгоритм, чтобы уменьшить количество операций для проверок деления
Составить программу, где с помощью операторов / и % вычислить возраст человека C++

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

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

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