Gå til innhold

"Formatere" utskriften fra en funksjon ?


Anbefalte innlegg

Hei igjen.

 

Har en klasse "Valuta" som har følgende variabler:

string navn;

string forkortelse;

double kurs;

int enhet;

 

Disse har alle finn- og sett-metoder.

Har også en funksjon som skriver ut all informasjon om en valuta. Bruker da de nevnte finn-funksjonene:

void skrivValuta2(Valuta valutaen) {
cout << "Navn: " << valutaen.finnNavn() << ", Forkortelse: " << valutaen.finnForkortelse() << ", Kurs: " << valutaen.finnKurs() << ", Enhet: " << valutaen .finnEnhet() << endl;
}

- All informasjonen blir altså skrevet ut på ei linje. Poenget med denne funksjonen er nettopp at all informajonen kommer på ei linje, slik at det hele ser pent og rydig ut hvis man skriver ut flere valutaer under hverandre.

 

Noen tips til hvordan jeg kan "formatere" utskriften. Slik som funksjoen er nå blir utskriften slik:

Navn: amerikanske dollar, Forkortelse: usd, Kurs: 7.09, Enhet: 1
Navn: engelske pund, Forkortelse: pund, Kurs: 11.09, Enhet: 1
Navn: svenske kroner, Forkortelse: sek, Kurs: 92.98, Enhet: 100
Navn: danske kroner, Forkortelse: dsk, Kurs: 106.45, Enhet: 100

mens den skal bli mer tabellformet slik:

Navn: amerikanske dollar  , Forkortelse: usd    , Kurs: 7.09      , Enhet: 1
Navn: engelske pund         , Forkortelse: pund  , Kurs: 11.09    , Enhet: 1
Navn: svenske kroner       , Forkortelse: sek    , Kurs: 92.98     , Enhet: 100
Navn: danske kroner         , Forkortelse: dsk    ,  Kurs: 106.45  , Enhet: 100

Lenke til kommentar
Videoannonse
Annonse

Tusen takk for svaret zirener. :)

 

Endret funksjonen slik du foreslo, og fikk følgende utskrift med mine fire valutaer:

Navn: us dollar  Forkortelse: usd        Kurs: 7.09      Enhet: 1
Navn: engelske pund      Forkortelse: pund       Kurs: 11.09     Enhet: 1
Navn: svenske kroner     Forkortelse: sek        Kurs: 92.09     Enhet: 100
Navn: danske kroner      Forkortelse: dsk        Kurs: 108.98    Enhet: 100

Ser kjempeflott ut bortsett fra den øverste linja.

 

Trodde jeg skulle være smart, og prøvde meg frem med flere tabulatorer i funksjonen, men dette resulterte bare i at utskriften ble helt forskjøvet. :hmm:

Noen andre tips? :roll:

 

edit: skrivefeil

Endret av the_c
Lenke til kommentar

Her er koden min.

Først klassen Valuta:

#include <iostream>
#include <string>

using namespace std;

class Valuta {
public:
void settNavn(string nyttNavn);
string finnNavn() const;

void settForkortelse(string nyForkortelse);
string finnForkortelse() const;

void settKurs(double nyKurs);
double finnKurs() const;

void settEnhet(double nyEnhet);
double finnEnhet() const;

double Valuta::fraNorsk(int enhet, double beloep, double kurs);  //OPPGAVE E
double Valuta::tilNorsk(int enhet, double beloep, double kurs);  //OPPGAVE E

private:
string navn;
string forkortelse;
double kurs;
int enhet; //OPPGAVE E
};

void Valuta::settNavn(string nyttNavn) {
navn = nyttNavn;
}
string Valuta::finnNavn() const {
return navn;
}

void Valuta::settForkortelse(string nyForkortelse) {
forkortelse = nyForkortelse;
}
string Valuta::finnForkortelse() const {
return forkortelse;
}

void Valuta::settKurs(double nyKurs) {
kurs = nyKurs;
}
double Valuta::finnKurs() const {
return kurs;
}

void Valuta::settEnhet(double nyEnhet) { //OPPGAVE E
enhet = nyEnhet;
}

double Valuta::finnEnhet() const {      //OPPGAVE E
return enhet;
}

Valuta lesValuta2() {
Valuta nyValuta;

cout << "Valuta navn: ";
string navnet;
getline(cin, navnet);
nyValuta.settNavn(navnet);


cout << "Valuta forkortelse:";
string forkortelsen;
getline(cin, forkortelsen);
nyValuta.settForkortelse(forkortelsen);

cout << "Valuta enhet (1 eller 100): ";
int enheten;
cin >> enheten;
nyValuta.settEnhet(enheten);

cout << "Valuta kurs: ";
double kursen;
cin >> kursen;
nyValuta.settKurs(kursen);

cin.ignore(80, '\n');

return nyValuta;
}

void skrivValuta2(Valuta valutaen) {
cout << "Navn: " << valutaen.finnNavn() << "\t Forkortelse: " << valutaen.finnForkortelse() << "\t Kurs: " << valutaen.finnKurs() << "\t Enhet: " << valutaen .finnEnhet() << endl;
}

double Valuta::fraNorsk(int enhet, double beloep, double kurs) {
if(enhet == 1) {
 return beloep / kurs;
}
else if(enhet == 100) {
 return (100 / kurs) * beloep;
}
else return -1.0; //ugyldig enhet
}

double Valuta::tilNorsk(int enhet, double beloep, double kurs) {
if(enhet == 1) {
 return beloep * kurs;
}
else if(enhet == 100) {
 return (beloep * kurs) / 100;
}
else return -1; //ugyldig enhet
}

 

 

Et lite klient-program:

#include <iostream>
#include "Valuta.cpp"

using namespace std;

int main() {
char flereBeregninger;
Valuta valuta1 = lesValuta2();
Valuta valuta2 = lesValuta2();
Valuta valuta3 = lesValuta2();
Valuta valuta4 = lesValuta2();

cout << endl << "Registrerte valuta:" << endl;
skrivValuta2(valuta1);
skrivValuta2(valuta2);
skrivValuta2(valuta3);
skrivValuta2(valuta4);


do {
 double beloep;
 cout << endl << "Skriv inn beloepet som skal veksles: ";
 cin >> beloep;
 
 cout << endl <<endl << "Regner naa om FRA norske kroner til fremmed valuta: " << endl;
 cout << beloep << " norske kroner gir " << valuta1.fraNorsk(valuta1.finnEnhet(), beloep, valuta1.finnKurs()) << " enheter av " << valuta1.finnNavn() << endl;
 cout << beloep << " norske kroner gir " << valuta2.fraNorsk(valuta2.finnEnhet(), beloep, valuta2.finnKurs()) << " enheter av " << valuta2.finnNavn() << endl;
 cout << beloep << " norske kroner gir " << valuta3.fraNorsk(valuta3.finnEnhet(), beloep, valuta3.finnKurs()) << " enheter av " << valuta3.finnNavn() << endl;
 cout << beloep << " norske kroner gir " << valuta4.fraNorsk(valuta4.finnEnhet(), beloep, valuta4.finnKurs()) << " enheter av " << valuta4.finnNavn() << endl;
 
 
 cout << endl << endl << "Regner naa om TIL norske kroner fra fremmed valuta: " << endl;
 cout << beloep << " enheter av " << valuta1.finnNavn() << " gir " << valuta1.tilNorsk(valuta1.finnEnhet(), beloep, valuta1.finnKurs()) << " norske kroner." << endl;
 cout << beloep << " enheter av " << valuta2.finnNavn() << " gir " << valuta2.tilNorsk(valuta2.finnEnhet(), beloep, valuta2.finnKurs()) << " norske kroner." << endl;
 cout << beloep << " enheter av " << valuta3.finnNavn() << " gir " << valuta3.tilNorsk(valuta3.finnEnhet(), beloep, valuta3.finnKurs()) << " norske kroner." << endl;
 cout << beloep << " enheter av " << valuta4.finnNavn() << " gir " << valuta4.tilNorsk(valuta4.finnEnhet(), beloep, valuta4.finnKurs()) << " norske kroner." << endl;
 
 cout << endl << "Onskes flere beregninger? (j/n)";
 cin >> flereBeregninger;
}while (flereBeregninger == 'j' || flereBeregninger == 'J');





}//class

 

@teflonpanne:

Takker for tipset. Skal ta en titt på det når jeg kommer fra jobb i dag.

Lenke til kommentar

Hei.

 

Da har jeg fiksa utskriften. Ble så jeg brukte setw()-funksjonen. Vet ikke om dette er den rette/beste måten å gjøre det på, men resultatet ble bra. :)

 

Funksjonen skrivValuta2() ser nå slik ut:

void skrivValuta2(Valuta valutaen) {
cout << "Navn: "  << setw(20) << left << valutaen.finnNavn()  << "Forkortelse: " << setw(8) << valutaen.finnForkortelse() << "Kurs: " << setw(8) << valutaen.finnKurs() << "Enhet: " << setw(3) << valutaen .finnEnhet() << endl;
}

og gir denne utskriften når man skriver ut flere valutaer under hverandre:

 

Navn: us dollar           Forkortelse: usd     Kurs: 7.09    Enhet: 1
Navn: engelske pund       Forkortelse: pund    Kurs: 11.09   Enhet: 1
Navn: svenske kroner      Forkortelse: sek     Kurs: 92.09   Enhet: 100
Navn: danske kroner       Forkortelse: dsk     Kurs: 108.98  Enhet: 100

Lenke til kommentar

Tar C++ som fjerundervisningsfag ved Hist, dvs. man laster ned leksjoner og øvinger fra nettet.

Liste over fag som de tilbyr ligger her.

 

Pga av mye jobbing, og ei aktiv jente på 1.5 år i huset, har det blitt lite tid til eksamensforbredelser. Regner med at det blir noen seine kvelder fram mot eksamen den 22.12. :)

Lenke til kommentar

Når jeg lager et program, finner jeg først ut hva hensikten med programmet skal være. Deretter begynner jeg å tenke på den faktiske implementasjonen. Her begynner jeg primært med klassene.

 

Etterhvert, når jeg har fått "grunnsystemet" til å fungere, begynner jeg å tenke på layout, og å legge til flere funksjoner for programmet. Hvis det er et enkelt spill, er det stort sett SDL jeg bruker. Dette er fordi jeg mener det er et lett og kraftig biblotek, med et veldig godt design. Hvis det er en nytteapplikasjon, finner jeg et GUI biblotek, og setter meg inn i dokumentasjonen. I det siste er det QT jeg har prøvd å bruke i størst grad.

 

Når jeg kompilerer programmet mitt for første gang - noe som jeg prøver å gjøre ganske tidlig i prosessen - går jeg systematisk gjennom feilmeldingene jeg får, og begynner med de øverste. Dette fordi en feil ofte fører til en følgefeil, og den egentlige feilen er naturligvis den som blir vist først.

 

Når programmet kompilerer, er det tid for debugging og testing. Da bruker jeg GDB til å debugge programmet, og når feilene er rettet, tester jeg programmet. Her kommer jeg som oftest over nye feil. Disse reproduserer jeg som best jeg kan, i debuggern min.

 

Etter dette, er det naturligvis dokumentasjonen som står for tur. Denne driter jeg helt og holdent i.

 

 

Ikke verst til å være min første eksamen, Nazagul, eh! Hehe :p

Nå skal det nevnes at det eneste av disse trinnene her som jeg egentlig følger helt og holdent er den biten om å drite i dokumentasjon. Heh.

 

Forresten, når jeg lager konsoll programmer, er det også heller sjeldent at jeg tenker noe-som-helst på hvordan ting ser ut, ettersom jeg bare driver med programmering på hobbybasis, og jeg er den eneste personen som sansynligvis kommer til å bruke programmet mitt, hehe. :p

Lenke til kommentar

Fett, fint svar.

Personlig har jeg brukt wxWidgets til mine GUI programmer, og funnet at det egentlig er bra det også.

 

Personlig er jeg veldig dårlig til å planlegge klasser på forhånd (UML), så ting kan ha en tendens til å bli litt rotete med mindre jeg er heldig og treffer et bra design med en gang.

 

Jeg programmerer dessuten på windows, så jeg har litt andre verktøy (Må innrømme at msvs virkelig er et bra IDE), men fremgangsmåten er mye det samme.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...