C++ Hjälp med menystyrt program
Tjenare Sweclockers!
Behöver hjälp med en uppgift från skolan och vänder mig till er experter.
Uppgiften lyder såhär:
Vi ska bygga ett menystyrt program som ska fungera som en inloggningslista vid löpträning. Man ska kunna föra in värden i programmet, där man skriver in sträckan (i km) och tiden ( i min).
Programmet ska sedan räkna ut hastigheten (km/min) vid senaste löpningen, hastigheten i medeltal vid alla löpningar och hastigheten vid bästa tiden ska skrivas ut till skärmen.
Val görs i menyn här nedan, upprepade val ska kunna göras:
Meny
1. Mata in ny löpning
2. Ändra sista löpningen
3. Visa löpningar
0. Sluta
Välj genom att mata in siffra:
Så här långt har jag hittills kommit:
#include <iostream>
#include <iomanip>
#include <fstream>
#include <conio+.h>
#include <vector>
using namespace std;
#include "svtecken.h"
class Motionslista
{
public:
Motionslista() : antal(0) {}
~Motionslista() {}
void meny();
void mata_in();
void skriv_alla();
void andra();
double medel_tid();
double basta_tiden();
double sista_tiden();
void skriv_fil();
void hamta_fil();
private:
int antal;
vector <double> kilometer;
vector <int> minuter;
double kilometer_in;
int minuter_in;
};
void Motionslista::meny()
{
clrscr(); setcolor(YELLOW);
cout << "\n Meny";
cout << "\n\n1. Mata in ny löpning:";
cout << "\n\n2. Ändra sista löpningen:";
cout << "\n\n3. Visa löpningar:";
cout << "\n\n0. Sluta";
cout << "\n\n\nVälj genom att mata in siffra: ";
char val='\0';
while (val<'0'||val>'3') val=getch();
switch (val)
{
case '1': mata_in(); meny();break;
case '2': andra(); meny(); break;
case '3': skriv_alla(); meny();
}
}
void Motionslista::mata_in()
{
clrscr(); setcolor(LIGHTCYAN);
cout << "\nMata in ny löpning i km (avbryt - tryck retur): ";
cin >> kilometer_in;
antal++;
cout << "\nMata in tiden i min: ";
cin >> minuter_in;
kilometer.push_back(kilometer_in); minuter.push_back(minuter_in);
}
void Motionslista::andra()
{
kilometer.erase(kilometer.end()-1);
minuter.erase(minuter.end()-1);
antal--;
mata_in();
meny();
}
void Motionslista::skriv_alla()
{
clrscr(); setcolor(LIGHTGREEN);
cout << endl;
int i;
for (i=0; i<antal; i++)
cout << kilometer[i] << " " << minuter[i] << endl;
cout << "\n\nTryck tangent "; getch();
}
double Motionslista::medel_tid()
{
double meddela;
double total=0;
for (int i=1; i<antal; i++)
total=total+kilometer[i];
meddela = (double)total/(minuter[antal-1]-minuter[0]);
return meddela;
}
void Motionslista::skriv_fil()
{
ofstream fout("C:\\Users\\MartiiN\\Documents\\Visual Studio 2008\\Projects\\lopning\\lopning\\motionslista.txt");
for (int i=0; i<antal; i++)
{
fout << kilometer[i] << endl << minuter[i] << endl;
}
fout.close();
}
void Motionslista::hamta_fil()
{
ifstream fin("motionslista.txt");
fin >> kilometer_in;
while (!fin.eof())
{
antal++;
fin >> minuter_in;
kilometer.push_back(kilometer_in); minuter.push_back(minuter_in);
fin >> kilometer_in;
}
}
int main()
{
teckenbyt();
Motionslista* motionslista = new Motionslista;
ifstream fin("C:\\Users\\MartiiN\\Documents\\Visual Studio 2008\\Projects\\lopning\\lopning\\motionslista.txt");
if (fin) motionslista->hamta_fil();
motionslista->meny();
cout<<"Medelhastighet= " << setiosflags(ios::fixed)<<setprecision(3) << motionslista->medel_tid() << endl;
motionslista->skriv_fil();
cout << "\n\n\n";
getch();
return 0;
}
Som ni kan se, saknas både double basta_tiden(); och double sista_tiden(); under public:.
Min fråga till er är hur man ska lösa detta för att få dem med i programmet så att dem också funkar?
MVH
Martin
Phenom II X3 720 2.8 Ghz | Gigabyte MA770-UD3 | Corsair 8500C5 2x2Gb | XXX HD4870 512mb | Corsair VX 450W | OS Win 7 RC x64