Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 27.03.2020
Сообщений: 46

Вывод

28.03.2021, 17:38. Показов 1076. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Запутался в методах и классах, помогите пожалуйста с выводом.
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include <iostream>
using namespace std;
 
class Point
{
private:
    int x, y, z, len;
public:
    Point() {
        x = rand() % 100;
        y = rand() % 100;
        z = rand() % 100;
        len = sqrt(x * x + y * y + z * z);
    }
    Point(int x, int y, int z) {
        this->x = x;
        this->y = y;
        this->z = z;
        len = sqrt(x * x + y * y + z * z);      
    }
    friend ostream& operator << (ostream& str, Point & obj) {
        str << obj.x << " " << obj.y << " " << obj.z << " Расстояние от начала координат: " << obj.len << endl;
            return str;
        }
    bool operator > (Point& obj) {
        return (len > obj.len);
    }
};
 
template <class T>
class Sort {
public:
    static void shell(T** mas, int n);
    static void heap(T** mas, int n);
    static void sift(T** mas, int n, int m);
    static string test(T** mas, int n);
};
 
template <class T>
void Sort<T>::shell(T** mas, int n) {
    int i, j, h;
    for (h = 1; h <= n / 9; h = h * 3 + 1);
    while (h >= 1) {
        for (i = h; i < n; i++)
            for (j = i - h; j >= 0 && *mas[j] >*mas[j + h]; j -= h)
                swap(mas[j], mas[j + h]);
        h = (h - 1) / 3;
    }
}
 
template <class T>
void Sort<T>::heap(T** mas, int n) {
    int i, m;
    for (i = n / 2; i >= 0; i--)
        sift(mas, i, n - 1);
    for (m = n - 1; m >= 1; m--) {
        swap(mas[0], mas[m]);
        sift(mas,0,m-1);
    }
}
 
template <class T>
void Sort<T>::sift(T** mas, int i, int m) {
    int j = i, k = i * 2 + 1;
    while (k <= m) {
        if (k < m && *mas[k] < *mas[k + 1]) k++;
        if (*mas[j] < *mas[k]) {
            swap(mas[j], mas[k]);
            j = k;
            k = k * 2 + 1;
        }
        else break;
    }
}
 
template <class T>
string Sort<T>::test(T** mas, int n) {
    int i;
    for (i = 0; i < n; i++) {
        if (*mas[i] > *mas[i]) return "Ошибка";
    }
    return "Ошибок нет";
}
 
int main() {
    setlocale(LC_CTYPE, "rus");
    int n,i,f;
    int **pmas;
    Sort <int> a;
 
    cin >> n;
    pmas = new int*[n];
 
    Point(i1);
    Point(i2);
    cout << i1 << i2;
    if (i1 > i2)
        cout << "Длинна 1 больше длинны 2";
    else
        cout << "Длинна 2 больше длинны 1";
 
    
    cout << endl << endl;
 
    for (i = 0; i < n; i++)//?
        Point(i);
 
    for (i = 0; i < n; i++) //?
        pmas[i] = &i;
 
    Sort<int>::shell(pmas, n);
    for (i = 0; i < n; i++)
        cout << *pmas[i] << " ";
    cout<<Sort<int>::test(pmas, n);
    cout << endl << endl;
 
    Sort<int>::heap(pmas, n);
    for (i = 0; i < n; i++)
        cout << *pmas[i] << " ";
    cout << Sort<int>::test(pmas, n);
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.03.2021, 17:38
Ответы с готовыми решениями:

Реализовать вывод массива объектов типа Student на консоль (файловый ввод/вывод)
Как сделать чтобы список студентов выводился на экран в конце? #include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; ...

Поиск в массиве структур по заданному полю и вывод в алфавитном порядке (файловый ввод/вывод)
Помогите с функцией void runFile() что бы с файла брал и выводил в алфавитном порядке список товаров, хранящихся больше месяца, стоимость...

Вывод суммы в файл (файловый ввод/вывод)
Добрый день! Я пытался написать программу, которая должна вводить данные из файла №1, потом вычислять их сумму и полученное значение...

7
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
28.03.2021, 17:56
Цитата Сообщение от swarshik Посмотреть сообщение
помогите пожалуйста с выводом.
...
Миниатюры
Вывод  
0
0 / 0 / 0
Регистрация: 27.03.2020
Сообщений: 46
28.03.2021, 18:14  [ТС]
Цитата Сообщение от Folian Посмотреть сообщение
...
В классе Point представлены "точки в пространстве" и их длинна от начала координат. В шаблонном классе Sort находятся две сортировки. Обе сортировки – косвенные (методы должны получать и возвращать массивы указателей). И теперь для элементов pmas нужно выполнить обе сортировки и вывести их. С этим у меня проблемы ...
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
28.03.2021, 18:37
swarshik, что такое i1 и i2?
Цитата Сообщение от swarshik Посмотреть сообщение
В классе Point
Цитата Сообщение от swarshik Посмотреть сообщение
И теперь для элементов pmas
жто неинициализированный массив интов, причём тут Point?
Что вообще (каким образом) сортировать?
Цитата Сообщение от swarshik Посмотреть сообщение
выполнить обе сортировки и вывести их
сортировки вывести?


ААйй!..
Просто напиши ВСЁ условие максимально ВНЯТНО!
0
0 / 0 / 0
Регистрация: 27.03.2020
Сообщений: 46
28.03.2021, 18:54  [ТС]
Цитата Сообщение от Folian Посмотреть сообщение
swarshik, что такое i1 и i2?


жто неинициализированный массив интов, причём тут Point?
Что вообще (каким образом) сортировать?

сортировки вывести?


ААйй!..
Просто напиши ВСЁ условие максимально ВНЯТНО!
1.1. Создать класс Point, представляющий точки в пространстве (с вещественными координатами X, Y, Z). Класс Point должен содержать конструктор случайных точек и оператор сравнения точек по расстоянию от начала координат (расстояние должно рассчитываться только один раз при создании объекта класса Point).
1.2. Добавить в проект шаблонный класс Sort, включающий два СТАТИЧЕСКИХ метода, которые реализуют алгоритм сортировки.
Кроме того, класс Sort должен включать статический метод проверки косвенной упорядоченности.

В i1 и i2, я проверял работу класса Point. Массив интов не нужен. Нужно сгенерировать массив класса Point и выполнить обе сортировки. Результат работы сортировок вывести.

P.S. Спасибо,что пытаетесь помочь.
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
28.03.2021, 20:35
Ага, теперь понятно, это две разные задачи.

Цитата Сообщение от swarshik Посмотреть сообщение
метод проверки косвенной упорядоченности
Ага, вот тут. Нужно тупо проверить упорядоченность? Но это не косвенно, хотя логично.
Или, кмк, нужно "косвенно упорядочить" массив в массив указателей и проверить уже его "упорядоченность" (т.е что каждый адрес (p+i) < (p+(i+1)))?
0
0 / 0 / 0
Регистрация: 27.03.2020
Сообщений: 46
29.03.2021, 04:56  [ТС]
Цитата Сообщение от Folian Посмотреть сообщение
Ага, теперь понятно, это две разные задачи.


Ага, вот тут. Нужно тупо проверить упорядоченность? Но это не косвенно, хотя логично.
Или, кмк, нужно "косвенно упорядочить" массив в массив указателей и проверить уже его "упорядоченность" (т.е что каждый адрес (p+i) < (p+(i+1)))?
Второе.
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
30.03.2021, 16:52
Цитата Сообщение от swarshik Посмотреть сообщение
Второе.
Ну например:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <vector>
#include <algorithm>
 
template <class T>
class Sort {
public:
    static void shell(T* arr, int size);
    static bool test(T* arr, int size);
};
 
template <class T>
void Sort<T>::shell(T* arr, int size) {
    for (int s = size / 2; s > 0; s /= 2) {
        for (int i = 0; i < size; i++) {
            for (int j = i + s; j < size; j += s) {
                if (arr[i] > arr[j]) {
                    int temp = arr[j];
                    arr[j] = arr[i];
                    arr[i] = temp;
                }
            }
        }
    }
}
 
template <class T>
bool Sort<T>::test(T* arr, int size) {
    //** косвенная сортировка
    std::vector<T*> indirect;
    for(T* i = arr, *e = (arr + size); i < e; ++i) indirect.push_back(i); 
    std::sort(indirect.begin(), indirect.end(), [](T* a, T* b) { return *a < *b; });
    //**
    for(int i = 0, e = size - 1; i < e; ++i) if(indirect[i] > indirect[i + 1]) return false;
 
    return true;
}
 
int main() {
 
    std::vector<int> arr = { 1,4,5,6,3,-1 };
 
    for(auto i : arr) std::cout << i << " ";
    std::cout << "\n" << ( Sort<int>::test(arr.data(), arr.size()) ? "sorted" : "unsorted");
    std::cout <<  "\n";
 
    Sort<int>::shell(arr.data(), arr.size());
    for(auto i : arr) std::cout << i << " ";
    std::cout <<  "\n" << ( Sort<int>::test(arr.data(), arr.size()) ? "sorted" : "unsorted");
 
 
    double arr2[4] = { 4,3,5,7 };
    std::cout <<  "\n" << ( Sort<double>::test(arr2, 4) ? "sorted" : "unsorted");
    Sort<int>::shell(&arr[0], 4);
    std::cout <<  "\n" << ( Sort<double>::test(arr2, 4) ? "sorted" : "unsorted");
 
    float* arr4 = new float[6];
    for(int i = 0; i < 6; ++i) arr4[i] = (i%2 * 2 - 1) * i;
    std::cout <<  "\n" << ( Sort<float>::test(arr4, 6) ? "sorted" : "unsorted");
    Sort<float>::shell(arr4, 6);
    std::cout <<  "\n";
    for(int i = 0; i < 6; ++i) std::cout << arr4[i] << " ";
    std::cout <<  "\n" << ( Sort<float>::test(arr4, 6) ? "sorted" : "unsorted");
 
    system("pause");
}


Цитата Сообщение от swarshik Посмотреть сообщение
включающий два СТАТИЧЕСКИХ метода, которые реализуют алгоритм сортировки.
Просто разные виды сортировок нужны? Если б один на обычную соримровку, а второй на косвенную отвести - последняя красиво уйдёт в test и выйдет что-то логичное без std::sort и лямбд.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.03.2021, 16:52
Помогаю со студенческими работами здесь

Ввод n-значного числа, вывод цифр, из которых оно состоит и вывод суммы его цифр
Написать программу, осуществляющую ввод n-значного числа, вывод цифр, из которых оно состоит и вывод суммы его цифр. Подключить...

Заменить в программе, переводящую строку в двоичный код, консольный ввод/вывод на файловый ввод/вывод
Добрый день! Помогите, пожалуйста, с программой. Программа считывает строку с клавиатуры и переводит её в двоичный код. затем наоборот...

Не могу понять как делать вывод на экран структуры STUDENT на заполнение и вывод данных на экран
Добрый вечер. Вот задание и мой код программы на C++ Не выходит нормально реализовать 3е задание. Первая проблема в том, что вывод на...

Вывод на экран чётных слов строки исправить на вывод нечётных слов
#include&lt;conio.h&gt; #include&lt;iostream.h&gt; #include&lt;string.h&gt; #include&lt;stdio.h&gt; int i,l,j,k,p,n; char txt; char a,b; main() { ...

Поменять консольный ввод-вывод на файловый ввод-вывод
вот у меня калькулятор как мне сделать что б числа вводились из файла и результат записывался в новый файл ? // ОБРАТНАЯ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru