10. oktober 2001 - 15:02Der er
20 kommentarer og 1 løsning
Hjæælp i dag
Jeg er ved at lave et program i C++ og jeg er ved at løse det, der er åbenbart nogle fejl. Hvis der er en der gider hjælpe og få det op og køre er point og jeg vil også gerne sende vedkommende en eller anden form for gave som tak. Jeg vil sende alle filer jeg har til vedkommende. Dette spørgsmål gælder kun i dag 10. okt
det er meget lille det skal bare beregne valuta kurser på 3 valutaer men det skal laves i en klasse. Header filen er lavet og jeg kan også sende det jeg har lavet
Her er min header fil : #ifndef clValutaH #define clValutaH //--------------------------------------------------------------------------- class Valuta { public: // Konstruktører Valuta(); Valuta(String ValutaNavn, double ValutaKurs); // Access metoder void SetNavn(String ValutaNavn); // SetNavn erstatter Navn\'s nuværende værdi med værdien fra ValutaNavn void SetKurs(double ValutaKurs); // SetKurs erstatter Kurs\' nuværende værdi med værdien fra ValutaKurs String GetNavn(); // GetNavn returnerer Navn double GetKurs(); // GetKurs returnerer Kurs // Øvrige metoder double ValutaKoeb (int DanskeKroner); // pre : DanskeKroner er et heltal > 0 // post: Størrelsen af det beløb i fremmed valuta man kan købe for // DanskeKroner er returneret double ValutaSalg (int FremmedMoent); // pre : FremmedMoent er et heltal > 0 // post: Størrelsen af det beløb i danske kroner man får ved salg af // FremmedMoent er returneret private: String Navn; // Valutaens navn double Kurs; // Kurs = pris for 1 enhed af fremmedvalutaen };
#endif Her er min cpp. fil: #include <vcl.h> #pragma hdrstop
#include \"clValuta.h\"
//--------------------------------------------------------------------------- Valuta::Valuta() ( Navn = \"Default\"; Kurs = 0; ) Valuta::Aktie(string ValutaNavn, double ValutaKurs) //construter er så jeg kan sætte en værdi direkte ind i mit test-main ( Navn = ValutaNavn; Kurs = ValutaKurs; ) void Valuta::SetNavn(String ValutaNavn) ( Navn = ValutaNavn; ) void Valuta::SetKurs(double ValutaKurs) ( Kurs = ValutaKurs; ) String Valuta::GetNavn() ( return Navn; ) double Valuta::GetKurs() ( return Kurs; ) double Valuta::ValutaKoeb (int DanskeKroner) ( return DanskeKroner*Kurs; ) double Valuta::ValutaSalg (int FremmedMoent) ( return FremmedMoent/Kurs; )
#pragma package(smart_init) her er min main hvor jeg kun lige er blevet færdig mit test program og det vil ikke virke. Jeg er begyndt at sætte lidt ind til det rigtige program : #include <iostream.h> #include <conio.h> #include <vcl.h> #pragma hdrstop #include \"clValuta.h\" void RunAgain(char&Ans); void GetValutaInfo(Valuta&Valuta1,Valuta&Valuta2,Valuta&Valuta3); //pos:En tekst fil med oplysninger //pre:Indlæser værdierne fra filen til de rigtige objekter
cout << \"Indtast hvor mange danske kroner du har: \"; cin >> DanskeKroner; cout << \" Soe mange udenlandske paenge kan du foe: \" ; cout << ValutaTest2.ValutaKoeb(DanskeKroner) << endl;
cout << \"Indtast hvor meget fremmed valuta du har: \"; cin >> FremmedMoent; cout << ValutaTest2.ValutaSalg(FremmedMoent); cout << \"valuta\" <<endl << endl;
in_stream.getline(EtNavn,30); in_stream >> EnKurs; in_stream.ignore(2,\'\\n\'); // For at kunne skrive en moent fod med mellem rum Valuta1.SetNavn(EtNavn); Valuta1.SetKurs(EnKurs); in_stream.getline(EtNavn,30); in_stream >> EnKurs; in_stream.ignore(2,\'\\n\'); Valuta2.SetNavn(EtNavn); Valuta2.SetKurs(EnKurs); in_stream.getline(EtNavn,30); in_stream >> EnKurs; in_stream.ignore(2,\'\\n\'); Valuta3.SetNavn(EtNavn); Valuta3.SetKurs(EnKurs); in_stream.getline(EtNavn,30);
dette er hvad programmet skulle kunne .veksling mellem de 3 store fremmede valutaer: US-Dollar, Pund og D-mark, og danske kroner. Man veksler begge veje, men ikke mellem fremmede valuta indbyrdes.Programmet skal udvikles objektorienteret, og benytte sig af en klasse: Valuta.
1) Class methods skal \"omsluttes\" af tuborg klammer ({}) ikke parenteser. 2) Dine includes var ikke korrekte 3) Din while konstruction var ikke korrekt - du fik aldrig stoppet
Det korrekte program (bortset fra at programmet looper efter at man har indtastet beløb i fremmed mønt, hvis man indtaster decimaler - men det må du selv løse), ser sådan ud:
cout << \"Indtast hvor mange danske kroner du har: \"; cin >> DanskeKroner; cout << \" Saa mange udenlandske paenge kan du faa: \" ; cout << ValutaTest2.ValutaKoeb(DanskeKroner) << endl;
cout << \"Indtast hvor meget fremmed valuta du har: \"; cin >> FremmedMoent; cout << ValutaTest2.ValutaSalg(FremmedMoent); cout << \"valuta\" << endl << endl; } while (RunAgain(Ans) == \'J\'); return 0; } //--------------------------------------------------------------------------- char RunAgain(char& Ans) { do { cout << \"Vil du køre programmet igen ? (J/N) : \"; cin >> Ans; } while ((toupper(Ans) != \'J\') && (toupper(Ans) != \'N\')); return Ans; } void GetValutaInfo(Valuta& Valuta1, Valuta& Valuta2, Valuta& Valuta3) { ifstream in_stream(\"File1.txt\"); char EtNavn[30]; double EnKurs;
in_stream.getline(EtNavn,30); in_stream >> EnKurs; in_stream.ignore(2,\'\\n\'); // For at kunne skrive en moent fod med mellem rum Valuta1.SetNavn(EtNavn); Valuta1.SetKurs(EnKurs); in_stream.getline(EtNavn,30); in_stream >> EnKurs; in_stream.ignore(2,\'\\n\'); Valuta2.SetNavn(EtNavn); Valuta2.SetKurs(EnKurs); in_stream.getline(EtNavn,30); in_stream >> EnKurs; in_stream.ignore(2,\'\\n\'); Valuta3.SetNavn(EtNavn); Valuta3.SetKurs(EnKurs); in_stream.getline(EtNavn,30);
in_stream.close(); }
hvortil clsValuta.h så ser sådan her ud (kun små-fejl):
//--------------------------------------------------------------------------- class Valuta { private: String Navn; // Valutaens navn double Kurs; // Kurs = pris for 1 enhed af fremmedvalutaen
public: // Konstruktører Valuta(void); Valuta(String ValutaNavn, double ValutaKurs); // Access metoder void SetNavn(String ValutaNavn); // SetNavn erstatter Navn\'s nuværende værdi med værdien fra ValutaNavn void SetKurs(double ValutaKurs); // SetKurs erstatter Kurs\' nuværende værdi med værdien fra ValutaKurs String GetNavn(); // GetNavn returnerer Navn double GetKurs(); // GetKurs returnerer Kurs // Øvrige metoder double ValutaKoeb (int DanskeKroner); // pre : DanskeKroner er et heltal > 0 // post: Størrelsen af det beløb i fremmed valuta man kan købe for // DanskeKroner er returneret double ValutaSalg (int FremmedMoent); // pre : FremmedMoent er et heltal > 0 // post: Størrelsen af det beløb i danske kroner man får ved salg af // FremmedMoent er returneret };
#endif
og endelig clsValuta.cpp sådan her (her var de fleste fejl):
#include \"clsValuta.h\"
Valuta::Valuta(void) { Navn = \"Default\"; Kurs = 0; } Valuta::Valuta(String ValutaNavn, double ValutaKurs) //construtor er så jeg kan sætte en værdi direkte ind i mit test-main { Navn = ValutaNavn; Kurs = ValutaKurs; } void Valuta::SetNavn(String ValutaNavn) { Navn = ValutaNavn; } void Valuta::SetKurs(double ValutaKurs) { Kurs = ValutaKurs; } String Valuta::GetNavn() { return Navn; } double Valuta::GetKurs() { return Kurs; } double Valuta::ValutaKoeb (int DanskeKroner) { return DanskeKroner*Kurs; } double Valuta::ValutaSalg (int FremmedMoent) { return FremmedMoent/Kurs; }
Soepro det var for sent , men jeg har fået rettet nogle af fejlene. Men fordi du gad hjælpe på den måde, for du hele dynen. Og ellers tak for hjælpen.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.