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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

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

Есть "Name" сеть автозаправок из N автозаправок. На заправках продается топливо разных видов.
Поставка топлива на заправки осуществляется с общего хранилища. Для каждого вида топлива устанавливается своя цена (цена на определенный вид топлива одинакова на всех заправках). Определить выручку для каждой заправки.
Осуществлять заправку автомобилей пока есть топливо на заправках.

Нароботок нету.
Андрей Иванов вне форума Ответить с цитированием
Старый 16.10.2015, 17:16   #2
Андрей Иванов
Пользователь
 
Регистрация: 13.04.2015
Сообщений: 60
По умолчанию

Помогите пожалуйста.
Андрей Иванов вне форума Ответить с цитированием
Старый 16.10.2015, 18:20   #3
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Нароботок нету.
Своего времени жалко, а на наше плевать...
Croessmah вне форума Ответить с цитированием
Старый 16.10.2015, 19:02   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
// п.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;
}
Годится?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.10.2015, 22:04   #5
Андрей Иванов
Пользователь
 
Регистрация: 13.04.2015
Сообщений: 60
По умолчанию

Stilet, годится.
Андрей Иванов вне форума Ответить с цитированием
Старый 17.10.2015, 18:17   #6
Андрей Иванов
Пользователь
 
Регистрация: 13.04.2015
Сообщений: 60
По умолчанию

Stilet, а где выводится выручка для каждой заправки?
Андрей Иванов вне форума Ответить с цитированием
Старый 17.10.2015, 18:45   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я функцию продажи не писал )
Оставляю это на тебя.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.10.2015, 18:49   #8
Андрей Иванов
Пользователь
 
Регистрация: 13.04.2015
Сообщений: 60
По умолчанию

Stilet, можете помочь с функцией продажи?
Андрей Иванов вне форума Ответить с цитированием
Старый 17.10.2015, 18:52   #9
Андрей Иванов
Пользователь
 
Регистрация: 13.04.2015
Сообщений: 60
По умолчанию

Хотя бы поскажите как ее реализовать.
Андрей Иванов вне форума Ответить с цитированием
Ответ


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



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