/*

Vi har ju sysslat en hel del med strängar och listor (arrayer) och nu ska vi försöka få ihop det till ett program.

Detta program skall till slut styras av en meny, i vilken användaren kan välja vilka funktioner han/hon vill använda på listan:

Lägga till objekt – ändra namn eller år på objekt , ta bort objekt m.m. m.m.

Innehållet i ditt program d.v.s. informationen om ”CDarna” skall, till slut också sparar på en textfil och läsas in i programmet när det startas.

Till att börja med får ni här lite kod att kopiera och klistra in.

Gör det.

Prova sedan hur funktionen changeyear( ) förändras om du tar bort '&'-tecknet vid funktionsdeklaration och funktionsdefinition.

Lägg sedan in menyritandet i en funktion.

En funktion som changeTitle skulle man sedan kunna ge sig på.

*/

 

 

#include <cstdlib>

#include <iostream>

#include <string>

#include <windows.h>

 

//                     na11 onsd9-april

//Kolla på funktion och &-funktion lägg utskrift av listan i funktion

 

using namespace std;

 

//En kul "windows" funktion som ger färgad text genom anropet set //color(10);

 

void setcolor(unsigned short color) //färg text ange setcolor(0-15)              

{   HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE);

    SetConsoleTextAttribute(hcon,color);   }

 

 

//*******************************************************    

// NA11  CD-lista  med funktion

// vi testar referens och värde anrop

// programmet kör funktionen void changeYear(cd& yeah )

// med referensanrop. Prova att ta bort '&'-tecknet vid         //funktionsdeklaration och funktionsdefinition.

// vi få då en funktion med värdeanrop.

// Hur förändrar det funktionen?

//*******************************************************

 

 

 

struct cd {                     //****vår cd-struct deklarerad globalt

string band_name;

string cd_name;

string year;

};

 

int antal=0;                   //för att räkna CDar

                               // när listan skall sparas på fil

 

void changeYear(cd& yeah );   //Deklaration av en funktion, med '&' som ändrar på ett objekts "år"

//***********************************

int main()

{

setcolor(10);                           //ger GRÖN matrixfärg på text

cd cd_lista [50];                       //skapar lista som kan innehålla max 50 "cdar"

cd_lista[0].band_name="abba";           //1:a objektet får värden

cd_lista[0].cd_name="voules vou";

cd_lista[0].year = "1982";

antal++;                                //antal cdar ökar med 1

 

cout<<"*************************************"<<endl<<endl;  //STARTMENY

cout<<"**************CD-Listan**************"<<endl<<endl;

cout<<"*************************************"<<endl<<endl;

getchar();

// ge värden på ett annat sätt**************

for (int i=1;i<3; i++)                 //Loop som fyller plats 1 och 2

{  

system("cls");                            // [0} har ju redan värden

cout<<" Ange bandnamn :  ";

getline(cin, cd_lista[i].band_name);

cout<<" Ange CD-namn :  ";

getline(cin, cd_lista[i].cd_name);

cout<<" Ange Utgivningsar :  ";

getline(cin, cd_lista[i].year);

antal++;

 

}

system("cls");

//***utskrift hela listan********************

for (int i=0;i<antal; i++)

{

 

cout<<"CD nr: "<<i+1<<" "<<endl;

cout<<"       "<<cd_lista[i].band_name<<endl;

cout<<"       "<<cd_lista[i].cd_name<<endl;

cout<<"       "<<cd_lista[i].year<<endl;

cout<<endl<<endl;

 

}

changeYear(cd_lista[0]); //anrop till funktionen changeYear med objekt //0 som sedan skrivs ut

 

cout<<cd_lista[0].band_name<<endl;

cout<<cd_lista[0].cd_name<<endl;

cout<<cd_lista[0].year<<endl;

 

   getchar();

    return 0;

}//End program cd-lista

 

//*****Funktionsdefinition******************

 

void changeYear(cd& yeah)

{

     yeah.year = "2013";

     cout<<"The year of this record is now "<<yeah.year<<endl<<endl;

     }

//***********************end change year