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

Как создать класс

29.09.2020, 23:15. Показов 383. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
У меня есть сортировка для массива,но я не знаю как мне реализовать класс на С++.
Вот сам код.
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
#include<iostream>
#include<fstream>
#include<string>
#include<cstdlib>
using namespace std;
 
struct Exchange  {
    string pod;
    string phone;
    string fio;
    int count_workers;
    int salery;
 
}; Exchange* arr = new Exchange[2048];
 
 
 
void struct_file(const string& path,int & amount)  {
    fstream file(path, ios::in | ios::out | ios::binary);
 
    while(file.peek() !=EOF)  {
          file >> arr[amount].pod >> arr[amount].phone >> arr[amount].fio >> arr[amount].count_workers >> arr[amount].salery;
            ++amount;
    }
    file.close();
 
}
void sort_struct_result_to_file(const string& path2,const int &amount) {
    int sh = 0; // Смещение
    bool b;
        do
        {
            b = false;
            for (int i = 0; i < amount; i++)
            {
                if (i * 2 + 2 + sh < amount)
                {
                    if ((arr[i + sh].salery < arr[i * 2 + 1 + sh].salery) || (arr[i + sh].salery  < arr[i * 2 + 2 + sh].salery))
                    {
                        if (arr[i * 2 + 1 + sh].salery > arr[i * 2 + 2 + sh].salery)
                        {
                            swap(arr[i + sh].salery, arr[i * 2 + 1 + sh].salery);
                            b = true;
                        }
                        else if (arr[i * 2 + 2 + sh].salery > arr[i * 2 + 1 + sh].salery)
                        {
                            swap(arr[i + sh], arr[i * 2 + 2 + sh]);
                            b = true;
                        }
 
                    }
                    else if ((arr[i + sh].salery == arr[i * i + 1 + sh].salery))
                    {
                        if (arr[i + sh].count_workers < arr[ i * i + 1 + sh].count_workers)
                        {
                            swap(arr[i + sh], arr[i * i + 1 + sh]);
                            b = true;
                        }
 
                    }
 
                    // Дополнительная проверка для последних двух элементов;
                    // с её помощью можно отсортировать пирамиду
                    // состоящую всего лишь из трёх элементов
                    if (arr[i * 2 + 2 + sh].salery > arr[i * 2 + 1 + sh].salery)
                    {
                        swap(arr[i * 2 + 1 + sh], arr[i * 2 + 2 + sh]);
                        b = true;
                    }
                }
                else if (i * 2 + 1 + sh < amount)
                {
                    if (arr[i + sh].salery < arr[ i * 2 + 1 + sh].salery)
                    {
                        swap(arr[i + sh], arr[i * 2 + 1 + sh]);
                        b = true;
                    }
                }
 
            }
 
            if (!b)
                ++sh; // Смещение увеличивается, когда на текущем этапе сортировать больше нечего
        } while (sh + 2 < amount); // Конец сортировки
 
 
 
    for (int i = 0; i < amount; i++)
    {
      cout << arr[i].pod << " " << arr[i].phone << " " << arr[i].fio << " " << arr[i].count_workers << " " << arr[i].salery << endl;
    }
}
 
 
int main()   {
   string path = "C:/Users/artem/Desktop/Algoritm/pod.txt", path2 = "C:/Users/artem/Desktop/Algoritm/sort.txt";
   int amount = 0;
 
   struct_file(path,amount);
 
   sort_struct_result_to_file(path2,amount);
  // cout<<"yes";
   delete[]arr;
   arr=nullptr;
   return 0;
}
Спасибо за внимание
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.09.2020, 23:15
Ответы с готовыми решениями:

Как создать динамический массив типа string? Как создать класс такого массива?
Как создать динамический массив типа string? Как создать класс такого массива? =-O Помогите, пожалуйста, очень нужна помощь!

Как создать класс со вложенной структурой указателей на класс?
В классе Concept хранится массив (точнее map) структур Rel. Сама же структура Rel должна содержать указатели на класс Concept. ...

Создать класс Man (человек), с полями: имя, возраст, пол и вес. Создать производный класс Student ...
Создать класс Man (человек), с полями: имя, возраст, пол и вес. Определить методы задания имени, возраста и веса. Создать производный класс...

2
 Аватар для VLaDoS_2001a
319 / 216 / 114
Регистрация: 14.05.2020
Сообщений: 890
29.09.2020, 23:38 2
Artem222, класс реализовать просто , есть ключевое слово class
C++ Скопировано
1
2
3
4
class class_t
{
 
};
0
фрилансер
 Аватар для Алексей1153
6327 / 5459 / 1108
Регистрация: 11.10.2019
Сообщений: 14,523
30.09.2020, 07:31 3
Цитата Сообщение от Artem222 Посмотреть сообщение
struct Exchange  {
    string pod;
    string phone;
    string fio;
    int count_workers=0;
    int salery=0;
};
класс уже имеется. Осталось в нём оператор < нарисовать и воспользоваться std::sort

Цитата Сообщение от Artem222 Посмотреть сообщение
arr = new Exchange[2048];
Цитата Сообщение от Artem222 Посмотреть сообщение
delete[]arr;
- а это лучше заменить на глобальный статический массив или вектор

Добавлено через 2 минуты
нигде не контролируется выход за край arr - это плохо
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.09.2020, 07:31
Помогаю со студенческими работами здесь

Создать абстрактный базовый класс Тройка чисел с виртуальными методами увеличения на 1. Создать производный класс Время со своими функциями
Здравствуйте, пожалуйста помогите написать код к данной задаче, с таким условием: Создать абстрактный базовый класс Тройка чисел с...

Как создать класс кот может создать general purpose counting objects
Как создать класс (CounterType) кот может создать general purpose counting objects. Этот объект содержит an integer count. но не может...

Создать класс - данные - абстрактный базовый класс. Создать производные классы
Всем привет! У меня вот такая проблема.... Создать класс - данные - абстрактный базовый класс. Создать производные классы - данные типа...

Создать класс Overcoat (верхняя одежда) , Создать класс Flat (квартира)
Задание 1. Создать класс Overcoat (верхняя одежда). Реализовать перегруженные операторы: 1. Проверка на равенство типов...

Создать базовый класс прямоугольник. Создать дочерний класс квадрат
Необходимо создать базовый класс прямоугольник. Создать дочерний класс квадрат. Для каждого класса определить виртуальный метод print(), в...


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Контейнеризация ML моделей с помощью Docker и Kubernetes
Mr. Docker 14.03.2025
Перенос ML-моделей из лаборатории в продакшн сопровождается целым комплексом проблем. Нередко код, который отлично работает на локальной машине, отказывается функционировать в промышленной среде. . . .
Организация масштабируемого хранилища с Apache Cassandra
Codd 14.03.2025
Изначально разработанная в Facebook, а затем переданная Apache Software Foundation, Cassandra сочетает в себе принципы Amazon's Dynamo и Google's BigTable. Эта комбинация создает уникальную. . .
Kafka или Pulsar: Что лучше для потоковой обработки в Java
Javaican 14.03.2025
Среди множества решений для потоковой обработки данных Apache Kafka долгое время удерживала лидирующие позиции, став де-факто стандартом в индустрии. Однако в последние годы всё больше внимания. . .
Создание и использование компонентов в Vue 3
Reangularity 14.03.2025
Компонент в Vue - это автономный блок интерфейса, который содержит собственную разметку, логику и стили. Представьте себе кнопку, форму ввода или даже целую панель навигации - всё это можно оформить. . .
Vue 3: Создаем современное веб-приложение с Composition API
Reangularity 14.03.2025
В фронтенд-разработке Vue 3 выделяется своим прагматичным подходом. В отличие от React с его минималистичной философией "всё — JavaScript" или Angular с его всеобъемлющим корпоративным подходом, Vue. . .
Разработка контекстных меню в iOS
mobDevWorks 14.03.2025
С приходом iOS 13 Apple представила новый API для контекстных меню, который полностью заменил предыдущую технологию 3D Touch peek & pop. Хотя многие разработчики и пользователи испытывают ностальгию. . .
Лучшие практики оптимизации Docker Image
Mr. Docker 13.03.2025
Размер Docker-образа влияет на множество аспектов работы с контейнерами. Чем больше образ, тем дольше его загрузка в реестр и выгрузка из него. Для команд разработки, работающих с CI/ CD пайплайнами,. . .
Вопросы на собеседовании по Docker
Mr. Docker 13.03.2025
Ты сидишь напротив технического специалиста, и вдруг звучит вопрос про Docker Swarm или многоэтапные сборки. Пот на лбу? Не переживай, после этой статьи ты будешь готов ко всему! Эта статья будет. . .
Поиск текста в сносках : замена дефиса на тире или тире на дефис...
РоΜа 13.03.2025
Нужно было найти текст в сносках и заменить. Почему-то метод селекшн не сработал. . . пришлось гуглить. найденный на форумвба код пришлось править. Смысл - заменяет в сносках дефисы и тире на нужные. . . .
Real PATH definitions in bash scripts
jigi33 13.03.2025
Как поймать путь и путь к директории относительно запускаемого файла в BASH 1. поймать путь через вывод $(pwd) 2. более правильно - на основе realpath (см. скриншот)
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер