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

Не принимают лабораторную по C++

09.09.2022, 08:58. Показов 589. Ответов 4

Студворк — интернет-сервис помощи студентам
Приветствую!

Лабораторную работу по C++ не принимают, т.к. не использовал const везде, где "это имеет смысл". А ещё указывают на отсутствие деструкторов. "Если не выделяете нигде память, выведите в них сообщения о вызове".

Последнее замечание - о вводе.

"В условиях циклов используйте проверки (сделайте, чтобы они возвращали true или false, в зависимости от того, можно ли записать введённое значение в поле данных)

Не обращайте внимание на get и set, т.к. сам не понимаю смысла этого требования.

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
122
123
#pragma once
#include <iostream>
#include <string>
#include <string.h>
#include <stdlib.h>
using namespace std;
 
const int def_power = 150;
const float def_price = 15.15;
const int def_displacement = 1830;
 
class Car{
  private:
    char* marka; //марка авто
    int power; //мощность двигателя в кВт
    float cost; //стоимость в тыс. $
    int displacement; //объём двигателя
  public:
    void setMarka(char* m){ //метод записи марки
      marka = m;
    }
    void setPower(int pw){ //метод записи мощности
      power = pw;
    }
    void setCost(float p){ //метод записи стоимости
      cost = p;
    }
    void setDis(int dis){ //метод записи объём двигателя
      displacement = dis;
    }
    std::string getMarka() const { //метод чтения поля марка
        return marka;
    }
    int getPower() const { //метод чтения поля мощность
      return power;
    }
    float getCost() const { //метод чтения поля стоимость
      return cost;
    }
    int getDis() const { //метод чтения поля объём двигателя
      return displacement;
    }
    ~Car(){ //деструктор
      std::cout << "Destructor called for Car of mark " << marka << std::endl;
    }
  public:
    Car(char* m = "Renault", int pw = def_power, float p = def_price, int dis = def_displacement){ //конструктор по умолчанию
      marka = m;
      power = pw;
      cost = p;
      displacement = dis;
    };
  public:
    void Print(){ //вывод параметров на экран
      cout << "Marka is " << getMarka() << endl;
      cout << "Price equals " << getCost() << " thousand $" << endl;
      cout << "Power equals " << getPower() << " kW" << endl;
      cout << "Displacement equals " << getDis() << " cm3" << endl;
    };
    void Input(); //функция ввода параметров, ещё не определена
    };
 
void Car::Input(){ //функция ввода параметров
        char *marka_ = new char[16]; //создаём динамический объект marka
        std::cout << "Input mark: "; //введите марку авто
        std::cin >> marka_;
        setMarka(marka_);
 
    do{
        std::cout << "Input power (kW): "; //введите мощность авто в кВт
        std::cin >> power;
    } while(power <= 0); //мощность не может быть неположительной
        setPower(power);
 
    do{
        std::cout << "Input cost (thousand $): "; //введите стоимости авто в тыс. $
        std::cin >> cost;
    } while(cost <= 0); //стоимость не может быть неположительным
        setCost(cost);
 
    do{
    std::cout << "Input displacement (cm3): "; //введите объём двигателя в см3
        std::cin >> displacement;
    } while(displacement <= 0); //объём двигателся не может быть неположительным
        setDis(displacement);
    delete marka_;
    };
 
const int def_truck_power = 700;
const float def_truck_price = 36.0;
const int def_truck_displacement = 2900;
const float def_capacity = 1.8;
 
class Truck: public Car {
public:
  Truck(
    char* marka, //марка авто
    int power, //мощность двигателя в кВт
    float cost, //стоимость в тыс. $
    int displacement, //объём двигателя,
    float capacity //грузоподъёмность в тоннах
    ) : Car(
      marka,
      power,
      cost,
      displacement
    ){
      this->capacity = capacity;
    };
private:
  float capacity;
public:
  void setCap(float cap) {
      capacity = cap;
    }
  float getCap() const{
    return capacity;
  }
  void Print(){ //вывод параметров на экран
    Car::Print();
    cout << "Capacity equals " << getCap() << " tones" << endl;
    };
};
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
#include "main.h" //подключение заголовочного файла
 
char* car_name = "Toyota";
const int car_power = 140;
const float car_price = 16.1;
const int car_displacement = 1800;
char* truck_name = "Scania";
const int truck_power = 640;
const float truck_price = 28.1;
const int truck_displacement = 3000;
const float capacity = 2.0;
 
int main() //главная функция
{
  Car default_; //конструктор по умолчанию, статическое выделение памяти
  Car *example = new Car(car_name,car_power,car_price,car_displacement); //динамическое выделение памяти под объект с параметрами
  Car *example_dynamic = new Car; //конструктор по умолчанию, динамическое выделение памяти
  Truck inherit(truck_name,truck_power,truck_price,truck_displacement,capacity); //объект класса-наследника, статическое выделение памяти
  example->Print(); //вывод параметров нового объекта на экран
  example_dynamic->Print(); //вывод параметров объекта по умолчанию на экран
  delete example; //освобождение памяти
  delete example_dynamic;
  inherit.Print(); //вывод на экран параметров объекта класса-наследника
    default_.Input(); //изменение параметров объекта
  default_.Print();
  system("pause"); //пауза перед завершением программы
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.09.2022, 08:58
Ответы с готовыми решениями:

Принимают ли с пессимизацией в ЯК
Возникло подозрение о пессимизации (из-за линкопомойки). Сайт по высокочастотникам упал, тИЦ не изменился, но пошел траф по...

В хап принимают поддомены?
В хап принимают поддомены?

Не принимают чек Adsense
Вообщем такая ситуация в августе того года пришел чек с adsense, времени его конечно небыло обналичить и в скором времени забыл про него....

4
2393 / 1922 / 763
Регистрация: 27.07.2012
Сообщений: 5,564
09.09.2022, 09:38
Цитата Сообщение от MaratPython Посмотреть сообщение
не использовал const везде, где "это имеет смысл"
Строки замени на const char*.
Цитата Сообщение от MaratPython Посмотреть сообщение
указывают на отсутствие деструкторов. "Если не выделяете нигде память, выведите в них сообщения о вызове".
Ну добавьте, жалко что ли?
Цитата Сообщение от MaratPython Посмотреть сообщение
"В условиях циклов используйте проверки (сделайте, чтобы они возвращали true или false, в зависимости от того, можно ли записать введённое значение в поле данных)
Добавьте закрытые функции
C++
1
2
3
4
5
6
bool check_power(int power) { return power > 0; }
bool check_cost(int cost) { return cost > 0; }
//..
do {
// ...
while (check_power(power));
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
09.09.2022, 09:52
Цитата Сообщение от MaratPython Посмотреть сообщение
не использовал const везде, где "это имеет смысл"
void setMarka(const char* m)

Цитата Сообщение от MaratPython Посмотреть сообщение
std::string getMarka() const
можно возвращать константную ссылку на поле во всех геттерах
const std::string& getMarka() const
так же добавить const в параметры конструктора, для инициализации константными значениями.

void Print() const
Если внутренние данные класса в методе не изменяются, его стоит сделать константным.

Цитата Сообщение от MaratPython Посмотреть сообщение
"Если не выделяете нигде память, выведите в них сообщения о вызове".
Цитата Сообщение от MaratPython Посмотреть сообщение
void Car::Input(){ //функция ввода параметров
вижу выделение памяти, вижу установку поля set
setMarka(marka_);
в конце метода
marka_ освобождается.
Вопрос : на что будет указывать указатель marka класса car ???

Подход работы с маркой довольно опасный, даже неверный, по тому как вы ее используете,
не вижу замечание по этому поводу у принимающего человека. Что странно.

Цитата Сообщение от MaratPython Посмотреть сообщение
"В условиях циклов используйте проверки (сделайте, чтобы они возвращали true или false, в зависимости от того, можно ли записать введённое значение в поле данных)
Мне не понятно чего в этом месте хотят ?

Добавлено через 2 минуты
Цитата Сообщение от MaratPython Посмотреть сообщение
В условиях циклов используйте проверки (сделайте, чтобы они возвращали true или false
Цитата Сообщение от John Prick Посмотреть сообщение
Добавьте закрытые функции
John Prick, но циклы так и не научились возвращать true или false
1
2393 / 1922 / 763
Регистрация: 27.07.2012
Сообщений: 5,564
09.09.2022, 10:00
Цитата Сообщение от SmallEvil Посмотреть сообщение
но циклы так и не научились возвращать true или false
"Не умеешь - научим, не хочешь - заставим" (с)
Как раз к теме подходит ))
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
09.09.2022, 10:02
Цитата Сообщение от MaratPython Посмотреть сообщение
setMarka(marka_);
//...
delete marka_;
И после этого, указатель внутри объекта "протухнет".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.09.2022, 10:02
Помогаю со студенческими работами здесь

Переменные не принимают значений
Здравствуйте, есть такой код. Где при нажатии на кнопочку из файла &quot;text.txt&quot; мы берем строку\ки и измеряем строки и сам файл и выводим то...

Curl принимают за бота
Здравствуйте, помогите пожалуйста хоть кратко где искать При попытке получить данные со steampowered я получаю в ответ страницу без...

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

Переменные P, Q, R, S принимают соответственно значения И, Л, Л и И
Задание: Переменные P, Q, R, S принимают соответственно значения И, Л, Л и И. Найдите истинностное значение каждой из следующих формул:...

Конструкторы принимают одинаковые параметры
Привет. Есть такой класс class BeautyClass : public QObject { explicit BeautyClass(QString result, QObject *parent = nullptr) ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru