Софтуерно Инженерство
Loading...
BalioFVFX avatar BalioFVFX 37 Точки

C++ Викане на функция в друг Header?

Здравейте, имам проблем с викането на променлива и слагането на стойност в друг Header файл. Това което се опитвам да направя е нещо като Cola Machine, просто търих и попаднах на Project Ideas и реших да се захвана..

 

Ето го кода:

Person.h:

 

#include <iostream>
#include <string>
#pragma once
using namespace std;

class Person
{
public:
	float balance;
	
	void printBalance();
	void setBalance();
};

 

Това което се опитвам да направя е, да извикам Balance и когато, if-овете проверяват дали има пари, да взимат или съответно да казва "Нямате пари"

 

ColaMachine.cpp : 

 

#include <iostream>
#include <string>
#include "ColaMachineStocks.h"
#include "Person.h"

using namespace std;

ColaMachineStocks Stocks;

Person personFunctions;



void setbalance()
{
	personFunctions.balance = 200;
}





void Person::printBalance()
{
	cout << personFunctions.balance <<endl;
}


void setbalance();

void ColaMachineStocks::buyCola()
	{
		if (personFunctions.balance >= 100)
		{
			cout <<"You sucessful purschased Cola!"<<endl;
		
			personFunctions.balance =-10;
		}
		
		else
		{
			cout << "You dont have enough money!"<<endl;
		}
	}

		void buySprite(float priceForSprite = 5)
	{
	
		personFunctions.balance =-5;

	}


	void buyWater(float priceForWater = 1)
	{
	
		personFunctions.balance =-1;

	}


	void buyFanta(float priceForFanta)
	{
	
		personFunctions.balance =-15;

	}



 

Тагове:
0
C++ Programming 13/08/2016 14:16:05
BalioFVFX avatar BalioFVFX 37 Точки

Здравейте, реших да се опитам да направя map, но ето го и новия проблем, когато потребителя реши да спре програмата, тя дава outuput, че е закупил "Coca Cola",както е направено, но не дава какво количество е закупено. 

Ето новостите по кода който пиша //Целия код може да го намерите в последното ми коментар на кода, понеже става много спам, ако реша да paste-вам всеки път 100 реда код.. 

 

map<string, int> userContainer;

int q = 0;


void printMap()
{
	for(auto it = userContainer.cbegin(); it != userContainer.cend(); ++it)
	{
		std::cout << it->first; q;
	}
}

Ето в main функцията при if-а за Coca Cola: 

 

if(userInput == 1)
	{
		aMachine.buyCola();
		aPerson.printBalance();
		userContainer.insert(pair<string,int>("Coca Cola - ",q++));	
	}

След while цикъла:
 

printMap();

Output-а на програмата е следния: Взимаш 10 коли, но показва само "Coca Cola" Press any key, вместо очакваното Coca Cola x10.

0
15/08/2016 22:07:58
BalioFVFX avatar BalioFVFX 37 Точки

Благодаря, утре ще погледна и ще ъпдейтна! Лека вечер! :)

0
BalioFVFX avatar BalioFVFX 37 Точки

Здравей, оправих се с това по следния начин:

 

void printMap()
{
	for(auto it = userContainer.cbegin(); it != userContainer.cend(); ++it)
	{
		std::cout << it->first;
		std::cout << it->second;
	}
}

Обаче сега имам друг проблем, искам при всяко изпълнение на if-а, мапа да слага +1 на Coca Cola, и така да стане Coca Cola x10 примерно..

Ето го if:

if(userInput == 1)
	{
		aMachine.buyCola();
		aPerson.printBalance();
		userContainer.insert(pair<string,int>("Coca Cola - ", 1));	
		}

 

0
BalioFVFX avatar BalioFVFX 37 Точки

Идеи? Остана ми само това и оптимизиране на кода, поне да е малко по-четливо.. 

0