Loading...
Ioana_07 avatar Ioana_07 1 Точки

Домашна работа C++

Здравейте! Трябва да добавя още функции към задачата, но не мога да разбера какво пропускам и къде ми е грешката. Моля, някой ако може да помогне!

Да се състави клас Shoop описващ стоките в магазин. Всеки елемент трябва да има следните полета: име на продукта (символен низ с дължина 35 знака), производител (символен низ с дължина 25 знака), цена (реален тип), точки индекс от 1 до 10 определящ до колко дадената стока е търсена в дадения магазин и година на производство. Класа да притежава конструктор, деструктор, мутатор, метод за отпечатване и функция за сортиране. Програмата да създава едномерен масив от 150 елемента, които да са елементи на класа и да сортира продуктите във възходящ ред по съотношението точки цена. На потребителя да се дава възможност да задава по-малко на брой елементи.

include<iostream.h>

include<conio.h>

using namespace std;

class  Shoop

{char  products [35], proizvoditel [25]; 

double price;

int  score;

char  data [10]; 

public: 

void init ();

void Sorttable ();

void Print () const; 

~Shoop ();

double get_price() const;

int get_score() const;

};

void Shoop::init() 

{cout<<"Въведи име:\n";

cin>> products;

cout <<"Въведи производител:\n";

cin>> proizvoditel;

cout<<"Въведи цена:\n";

cin>> price; } 

Sorttable (price ,score)

{

cout<< "New point:\n";

cout<<setw(1/10);

new point [i]->get_score()/ new point [i] ->get price();

int product :: get_score()const; 

return score;

}

int main ()

{

Shoop A[150]; 

cout<<"Въведи брой елементи : <150 \n";

int n;

do{

cin>>n;} 

while(n<0||n>150);

for( int i = 0; i<n ; i++) 

A [i].init();

cout<<"Извеждане на елементите от групата";

for( int i = 0; i<n ; i++) 

A[i].Print(); 

//A[]<=A[150];

getch ();

return 0 ;

}

void Shoop::Print () const 

{

cout << "Име"<<name

<<"Производител"<<proizvoditel

<< "Цена"<<price

<< "Точки"<<point<< "\n";

}

Тагове:
0
C# OOP Advanced
MartinBG avatar MartinBG 4803 Точки

Кодът не се компилираше заради различни грешки.

Това е оправеният код - компилира се и е функционално коректен - поне доколкото разбирам условието, но имайте предвид, че не следва стриктно изискванията в заданието (напр. използвам vector вместо масив), т.е. ще трябва да го преправите:

#include <iostream>
#include <conio.h>
#include <vector>
#include <sstream>
#include <algorithm>

using namespace std;

class Item {
  string name;
  string manufacturer;
  double price{ };
  unsigned short score{ };
  unsigned short year{ };

public:
  void init();

  string to_string() const;

  bool operator<(const Item& other) const {
    return (score < other.score || price < other.price);
  }
};

class Shop {
  vector<Item> items{ };
public:
  void init();

  void sort_items();

  void print_items() const;
};

int main() {
  Shop shop;

  shop.init();
  shop.sort_items();
  shop.print_items();

  getch();

  return 0;
}

void Shop::init() {
  cout << "Въведи брой елементи (1-150): ";

  int elements;
  do {
    cin >> elements;
  } while (elements < 1 || elements > 150);

  for (int i = 0; i < elements; i++) {
    Item item{ };
    item.init();
    items.push_back(item);
  }
}

void Shop::sort_items() {
  sort(items.begin(), items.end());
}

void Shop::print_items() const {
  cout << "Извеждане на елементите от групата" << endl;

  for (const auto& item: items) {
    cout << item.to_string() << endl;
  }
}

void Item::init() {
  cout << "Въведи име (35):\n";
  do {
    cin >> name;
  } while (name.length() > 35);


  cout << "Въведи производител (25):\n";
  do {
    cin >> manufacturer;
  } while (manufacturer.length() > 25);

  cout << "Въведи година (1900-2020):\n";
  do {
    cin >> year;
  } while (year < 1900 || year > 2020);

  cout << "Въведи цена (>= 0.0):\n";
  do {
    cin >> price;
  } while (price < 0.0);

  cout << "Въведи точки (1-10):\n";
  do {
    cin >> score;
  } while (score < 1 || score > 10);
}

string Item::to_string() const {
  ostringstream oss;
  oss << "Име: " << name
      << ", Производител: " << manufacturer
      << ", Цена: " << price
      << ", Точки" << score;
  return oss.str();
}

 

0
Ioana_07 avatar Ioana_07 1 Точки

Благодаря Ви за помощта!

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.