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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2015, 09:56   #1
Андрей Иванов
Пользователь
 
Регистрация: 13.04.2015
Сообщений: 60
По умолчанию Имитация АЗС

Есть такой код:

Код:
// п.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <string>
#include <vector>
#include <iostream>

using namespace std;

class TFuel{
public: 
	string name;
	double price;
	double Count;
	TFuel(string aname,double aprice,double aCount){name=aname;price=aprice;Count=aCount;}
};

class TGazland{
private:
	vector<TFuel*> Gazoline;
public:
	void Add(string aname,double aprice,double aCount){
		TFuel* f=new TFuel(aname,aprice,aCount);
		Gazoline.push_back(f);
	}
	TFuel* Get(string aname,double aCount){
		vector<TFuel*>::iterator vi;
		for(vi=Gazoline.begin();vi!=Gazoline.end();vi++){
			TFuel* pf=*vi;
			if(pf->name==aname && pf->Count>aCount){ pf->Count-=aCount; return pf;}
		}
		return NULL;
	}
	void list(){
		vector<TFuel*>::iterator vi;
		for(vi=Gazoline.begin();vi!=Gazoline.end();vi++){
			TFuel* pf=*vi;
			cout.width(20); cout<<pf->name; 
			cout.width(10); cout.precision(5); cout<<pf->price;
			cout.width(10); cout.precision(5); cout<<pf->Count;
			cout<<endl;
		};cout<<endl;
	}
};

class AZS{
private:
	string azsname;
	TGazland gaz;
	vector<TFuel*> Gazoline;
public:
	AZS(string name,TGazland g){azsname=name; gaz=g;}
	bool Get(string name,double cnt){
		TFuel* f=gaz.Get(name,cnt);
		if(f){
			vector<TFuel*>::iterator vi;
			bool found=false;
			for(vi=Gazoline.begin();vi!=Gazoline.end();vi++){
				TFuel* pf=*vi;
				if(pf->name==name){ pf->Count+=cnt; found=true; break;}
			}
			if(!found){
				f=new TFuel(f->name,f->price,f->Count);
				Gazoline.push_back(f);
			}
			return true;
		} else return false;
	}
	void list(){
		vector<TFuel*>::iterator vi;
		cout<<"   "<<azsname;
		for(vi=Gazoline.begin();vi!=Gazoline.end();vi++){
			TFuel* pf=*vi;
			cout.width(20); cout<<pf->name; 
			cout.width(10); cout.precision(5); cout<<pf->price;
			cout.width(10); cout.precision(5); cout<<pf->Count;
			cout<<endl;
		}; cout<<endl;
	}
};

int _tmain(int argc, _TCHAR* argv[])
{
	TGazland gl;
	gl.Add("A95",23.45,500);
	gl.Add("A96",23.45,500);
	
	AZS a1("Petrolium",gl);
	AZS a2("Petrolium 2",gl);

	if(!a1.Get("A95",100)) cout<<"No gaz"<<endl ;
	if(!a1.Get("A95",50)) cout<<"No gaz"<<endl ;
	if(!a2.Get("A96",150)) cout<<"No gaz"<<endl ;

	gl.list();
	a1.list();
	a2.list();

	cin.get();
	return 0;
}
Не получается дописать функцию определения выручки для каждой станции.
Андрей Иванов вне форума Ответить с цитированием
Старый 19.10.2015, 16:04   #2
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

какой смысл этой строки в TFuel

Код:
double Count;
?

с какой целью проверяется это условие в классе TGazland

Код:
if(pf->name==aname && pf->Count>aCount)

Последний раз редактировалось RAFA91; 19.10.2015 в 16:06.
RAFA91 вне форума Ответить с цитированием
Старый 19.10.2015, 16:06   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
какой смысл этой строки в TFuel
Видимо это ко мне вопрос
Это задумывалось как количество бензина в литрах.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.10.2015, 16:09   #4
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

ну вот к примеру от создает обьект gl и добавляет марку бензина , стоимость и к-во бензина

Код:
gl.Add("A95",23.45,500);
это к-во бензина данной марки на складе или на АЗС?

___________________________________ _____

могу врать конечно, но наверное тут должно быть так (класс AZS)

Код:
f=new TFuel(f->name,f->price,cnt);
вместо

Код:
f=new TFuel(f->name,f->price,f->Count);
если конечно список
Код:
vector<TFuel*> Gazoline;
класса AZS необходим для учета

израсходованного бензина конкретной марки.

Еще не понял второй параметр в
Код:
a1.Get("A95",100)
это израсходованный бензин ?

Последний раз редактировалось RAFA91; 19.10.2015 в 16:32.
RAFA91 вне форума Ответить с цитированием
Старый 19.10.2015, 16:45   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
это к-во бензина данной марки на складе или на АЗС?
Это кол-во бензы, который выработал НПЗ.
Цитата:
это израсходованный бензин ?
Это сколько привезли бензы с НПЗ на АЗС.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.10.2015, 16:50   #6
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Это кол-во бензы, который выработал НПЗ.

Это сколько привезли бензы с НПЗ на АЗС.
что-то маловато в литрах

но все равно эта строка класса AZS

Код:
f=new TFuel(f->name,f->price,f->Count);
смущает.

полное противоречие с

Код:
if(pf->name==aname && pf->Count>aCount){ pf->Count-=aCount; return pf;}
class TGazland{

Последний раз редактировалось RAFA91; 19.10.2015 в 16:53.
RAFA91 вне форума Ответить с цитированием
Старый 19.10.2015, 17:52   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
полное противоречие с
Противоречие в чем?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.10.2015, 14:56   #8
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Противоречие в чем?
тут

Код:
if(pf->name==aname && pf->Count>aCount){ pf->Count-=aCount; return pf;}
значение Count уменьшаем на aCount , а тут

Код:
f=new TFuel(f->name,f->price,f->Count);
значение Count должно быть cnt , а у него оно f->Count
RAFA91 вне форума Ответить с цитированием
Старый 21.10.2015, 17:39   #9
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Кстати , будет ли ошибкой такая запись ?

Код:
class AZS{
private:
	
	TGazland &gaz; //????????????
можно ли хранить ссылки

тестировал. не получалось.

хотелось бы уточнить у знатоков.
RAFA91 вне форума Ответить с цитированием
Старый 21.10.2015, 19:19   #10
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
можно ли хранить ссылки
конечно можно
Croessmah вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Имитировать работу АЗС - C++ Андрей Иванов Помощь студентам 8 17.10.2015 18:52
Задача про АЗС reddiego Помощь студентам 2 07.03.2014 13:47
Имитационное моделирование (АЗС с 2мя колонками) Optigood Помощь студентам 1 17.07.2011 16:11
Паскаль - В городе N был проведен мониторинг цены бензина на различных АЗС Геля007 Помощь студентам 6 20.05.2010 18:22