Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2011, 16:53   #1
slavik-slash
Новичок
Джуниор
 
Регистрация: 05.01.2011
Сообщений: 1
Сообщение Задача

Есть задача:
Описать класс с именем PRICE, содержащий следующие элементы:
• Скрытые поля:
• название товара (char *),
• название магазина, в котором продается товар (char *),
• стоимость товара в руб (int).
• Открытые методы:
• конструктор по умолчанию,
• конструктор с параметрами для заполнения всех полей класса,
• конструктор копирования,
• деструктор,
• операция присваивания,
• операция сравнения «меньше» (операция возвращает истину, если название магазина у
первого операнда по алфавиту раньше, чем у второго),
• операция сравнения на равенство со строкой (операция возвращает истину, если
название магазина совпадает с данной строкой)
• функция вывода на экран значений полей класса.
Память для строк - полей класса выделять динамически.
С помощью текстового редактора создать файл и записать в него данные для массива из восьми элементов типа PRICE.
Написать программу, выполняющую следующие действия:
• ввод из файла данных в динамический массив, состоящий из восьми элементов типа PRICE;
• упорядочить массив в алфавитном порядке по названиям магазинов;
• вывод на экран информации о товарах, продающихся в магазине, название которого введено с
клавиатуры;
• если такого магазина нет, выдать на дисплей соответствующее сообщение.
----------------------------------------------------------------------
вот что уже написал:
Код:
#include <iostream>
#include <string.h>
#include <stdio.h>


using namespace std;

class PRICE
{
private:
 char*name_tovar;
 char*name_market;
 int price_rub;
public:
//по умолчанию
 PRICE()
 {
  price_rub=0; name_tovar=NULL; name_market=NULL;
 };
 //конструктор с параметром для заполнения всех полей класса
PRICE(const char* tovar,const char* market, int rub)
{
	name_tovar=new char[strlen(tovar)+1];
	strcpy(name_tovar, tovar);

	name_market=new char[strlen(market)+1];
	strcpy(name_market,market);

	price_rub=rub;
};

//копирование
 PRICE(const PRICE& p)
 {
	 price_rub=p.price_rub;

	 name_tovar=new char[strlen(p.name_tovar)+1];
	 strcpy(name_tovar,p.name_tovar);

	 name_market=new char [strlen(p.name_tovar)];
	 strcpy(name_market,p.name_market);
 };

 //деструктор
 ~PRICE()
 {
  delete[] name_market; 
  delete[] name_tovar;
 };
 //операция присваивания
 PRICE& operator=(const PRICE& p)
 {
	if(&p==this) return* this;

	delete[] name_tovar;
	name_tovar=new char[strlen(p.name_tovar)+1];
	strcpy(name_tovar,p.name_tovar);

	delete[] name_market;
	name_market=new char[strlen(p.name_market)+1];
	strcpy(name_market,p.name_tovar);

	price_rub=p.price_rub;
 };
//операция сравнения меньше(операция возвращает истину если название магазина у первого операнда по алфавиту раньше чем у второго
bool operator< (const PRICE& p)
 {
	 if (name_market[0]<p.name_market[0]) return true;
	 else return false;
 };
 //операция сравнения строк
int srav(char* string)
 {
	return(strcmp(string, name_market));
 };
 
 //вывод на экран
 void print()
 {
	cout<<"Name Tovar:"<<name_tovar<<"	Name Market:"<<name_market<<"	Price:"<<price_rub<<endl;
 };

};


void main()
{


FILE*f;
f=fopen("C:\\Users\\Вячеслав\\Desktop\\zachetnaya zadacha\\zachet.txt","rt"); 


 PRICE mas[7];
 int price_rub;
 char name_tovar[7],name_market[7];
 
for(int i=0; i<8; i++)
{

	fscanf(f,"%s\t%i\t%s",name_tovar,&price_rub,name_market);
	mas[i] = PRICE(name_tovar,name_market,price_rub);
	//mas[i].print();
	
	cout<<"Name Tovar:"<<name_tovar<<"	Name Market:"<<name_market<<"	Price:"<<price_rub<<endl;
	
}

fclose(f);
return;

}
--------------------------------------------------------------------------
а также присутствует файл txt который требуется, вот его содержимое:

Intel 20000 Kompas
NOKIA 15000 Svyaznoi
Coca-Cola 40 Karysel
SAMSUNG 25000 MVideo
Fanta 41 Karysel
Xbox-360 11500 MVideo
Klushka 2550 Sportsmen
Symka 2000 PUMA
--------------------------------------------------------------------------
мне надо продолжить, помогите пожалуйста, с сортировкой и выводом на экран.
если ошибки имеются просьба указать.
Буду очень благодарен.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 05.01.2011 в 17:55.
slavik-slash вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача Monster-cs Паскаль, Turbo Pascal, PascalABC.NET 1 04.12.2010 13:22
задача в vb WWWTED Помощь студентам 4 08.01.2010 09:35
Задача Baby33 Помощь студентам 2 27.01.2009 13:20