webForumDet fria alternativet

Klass i igen.

2 svar · 354 visningar · startad av frecko

freckoMedlem sedan dec. 200010 inlägg
#1

Hej.

Programmet verkar fungera utan error, men för att det ska fungera riktigt så krävs det att jag måste anropa några metoder i mitt konto. Men var? Problemet hur man ska kunna se kontot och att kontoinnehavaren som kallas Dennis ska sätta in 500 kr och sedan ta ut 350. Sen ska man kunn fråga om aktuellt saldo och då ska kontohavarens namn skrivas ut. Ett till problem är kontoinnehavaren Carina som 400 kr på kontot, där ska man ta ut 300 kr och sätta in 250 kr. Det ska gå att skriva ut. Vet inte om koden stämmer, men problemen ligger ju in var man ska lägga alla metoder.

Koden hitills:

#include "Konto.h"
#include <iostream.h>
#include <cstring>

void main() {
Konto *Dennis = new Konto("Dennis");
Konto *Carina = new Konto("Carina");
}

Konto::Konto( char* Dennis)
{
strcpy(itsName,Dennis);
itsSaldo = 500;

}

Konto::Konto( char* Carina, double saldo)
{
strcpy(itsName,Carina);
setSaldo(400);
}

Konto:: sattIn(double x)
{
itsSaldo = itsSaldo + x;
}

Konto::taUt(double y)
{
if(y>itsSaldo)
{
cout<<"Det gar inte att ta ut pengar du inte har!";

}
else
itsSaldo = itsSaldo - y;
}

Konto::visaKonto()

{

cout<<"\nDennis: "<<itsName<<endl
<<"Saldo: "<<itsSaldo<<endl
<<"Kontonr: "<<itsNummer;

}
#ifndef _Konto_H_
#define _Konto_H_

//#pragma once

class Konto
{
public:
Konto( char* Dennis);
Konto( char* Carina, double saldo );
~Konto(){};

void setName(char* Dennis);
char getName(char* Carina);

void setSaldo(double saldo){itsSaldo = saldo;}
double getSaldo(double itsSaldo){return itsSaldo;}

void setNummer(int nr);
int getNummer(int itsNummer=7290) {return itsNummer;}

sattIn(double x);
taUt(double y);

visaKonto();

private:
char itsName[6];
double itsSaldo;
int itsNummer;

};

#endif

Gott Nytt År

------------------
Fredrik

ChainsawMedlem sedan sep. 20001 124 inlägg
#2

Eehhh... Tycker du har strulat till det lite. Gör en konstruktor som ser ut ungefär såhär och ta bort de andra två:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
Konto::Konto(const char *name, double value = 0)
{
strcpy(itsName, name);
setSaldo(value);
}

När du sedan skapar konton skriver du new Konto("Sverker", 42); och ersätter namnet och summan med det rätta namnet och beloppet.

Var du ska skriva ut? Tja, lägg det i main-funktionen. Typ...
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
Dennis->visaKonto();
Carina->visaKonto();

Och glöm inte bort att använda delete på dina new-skapade konton!

------------------
Programmerare är verktyg för att omvandla koffein till källkod

VetgirigMedlem sedan nov. 2000199 inlägg
#3

Din kod har en massa problem

1. strcpy tille en variabel som är 6 tecken lång utan kontroll - risk för
överskrivning om kontonamnet är 7 tecken. Använd en sträng-klass för namnet.

2. Att använda double för pengar leder
direkt till avrundningsfel. 1.999999
kr är inte samma som 2 kr. Gör en klass för pengarna.

Gör sedan ett liten interaktiv komandotolk i ett main program som kan
användas för att sätta in, ta ut och lista summan på kontot.

Gör du det får du säkert godkänt på skolans inlämningsuppgift.

------------------
http://www.igiro.se/

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)