// Uebung2.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include <conio.h>
#include <iostream.h>

//Aufgabe 2-1a
int iAddValue(int iValue, int iSum)
{
	return iValue + iSum;
}

//Aufgabe 2-1b
void vAddValue(int iValue, int* piSum)
{
	*piSum += iValue;
}

//Aufgabe 2-1c
void vAddValue(int iValue, int& riSum)
{
	riSum += iValue;
}


//Aufgabe 2-2
struct sStereoSample
{
	 short left;
	 short right;
};


void iStereo2Mono(sStereoSample* pStereo,  double* pMono, int iNofSamples)
{
/*
	for (int i = 0; i < iNofSamples; i++)
	{
		pMono[i] = (double)pStereo[i].left + (double)pStereo[i].right;
		pMono[i] *= 0.5;
	}
*/


/*
left, right: short Werte

pSample   ->	{left
				right}  <- pSample+1

				{left	<-pSample+2
				right}

				{left
				right}
				...
*/

	short * pSample = (short*) pStereo;
	for (int j = 0; j < iNofSamples; j++)
	{
		pMono[j] = (double) *pSample + (double) *(pSample+1);
		pSample += 2;
	}

}

int main(int argc, char* argv[])
{


	cout << "\n\nAufgabe 2-1\n\n" << endl;
	int iSumme = 0;



	/*
	//Aufgabe 2-1a
	iSumme = iAddValue(4,iSumme);
	iSumme = iAddValue(3,iSumme);
	iSumme = iAddValue(2,iSumme);
	*/

	/*
	//Aufgabe 2-1b
	vAddValue(4,&iSumme);
	vAddValue(3,&iSumme);
	vAddValue(2,&iSumme);
	*/

	//Aufgabe 2-1c
	vAddValue(4,iSumme);
	vAddValue(3,iSumme);
	vAddValue(2,iSumme);

	cout << "4 plus 3 plus 2 ist: " <<  iSumme << endl;

	cout << "\n\nEnde Aufgabe 2-1\n\n" << endl;
	

	cout << "\n\nAufgabe 2-2\n\n" << endl;

	const int iNofSamples = 3;
	
	/*
	sStereoSample signalStereo[iNofSamples] = {{1,2},{3,4},{4,5}};
	double signalMono[iNofSamples];
	*/
	double signalMono[iNofSamples];

	sStereoSample* pStereo = new sStereoSample[iNofSamples];


	//iStereo2Mono(signalStereo,signalMono,iNofSamples);
	iStereo2Mono(pStereo,signalMono,iNofSamples);

	for (int i = 0; i < iNofSamples ; i++)
	{
		//cout << "Stereo: (" << signalStereo[i].left << "," << signalStereo[i].right <<  ") -> Mono:" << signalMono[i] << endl;
		cout << "Stereo: (" << pStereo[i].left << "," << pStereo[i].right <<  ") -> Mono:" << signalMono[i] << endl;
	}

	cout << "\n\nEnde Aufgabe 2-2\n\n" << endl;

	

	delete [] pStereo;

	while (!_kbhit());

	return 0;
}


