Menu schließen

c++

Frage: c++
(7 Antworten)

 
ich soll zu diesem unten genanten programm. eine doppeltschleife(do ...while) machen , um eine falsche tagesberechnung zu unterdrücken!


hinweis::::
arbeiten sie mit einer char variablen "fehler" für fehlerhafte Tagesberechnung.
Im unterschied zum Ursprungs programm sollen bei einem ergebnis der Tagesberchnung von 0 oder einer Zahl im Minusbereich wieder Ein- und Auszahlungsdaten angefordert werden!


# include <iostream.h>
# include <conio.h>
# include <stdio.h>
main()
{
char fehler="n";
int e_tag,e_mon,e_jahr,a_tag,a_mon,a_jahr,tage;
float kapital, zinssatz, zinsen;
do
{
fehler="n";
cout<<"
Geben Sie das Einzahlungsdatum ein: ";
cin>>e_tag,cin>>e_mon;cin>>e_jahr;
if (e_tag<1 || e_tag > 30 || e_mon<1 || e_mon > 12 ||
e_jahr<1960 || e_jahr > 2002);
{
fehler="j";
cout<<"
Falsches Datum - nochmals eingeben ";
}
}while (fehler=="j");
do
{
fehler="n";
cout<<"
Geben Sie das Auszahlungsdatum ein: ";
cin>>a_tag,cin>>a_mon;cin>>a_jahr;
if (a_tag<1 || a_tag > 30 || a_mon<1 || a_mon > 12 ||
a_jahr<1960 || a_jahr > 2002)
{
fehler="j";
cout<<"
Falsches Datum - nochmals eingeben ";
}
}while (fehler=="j");
tage= a_tag - e_tag + (a_mon - e_mon)*30+ (a_jahr - e_jahr)*360;
if (tage<=0)
cout<<"
falsche Tageberechnung - Programm nochmals starten!";
else
{
cout<<"
Geben Sie das Kapital ein "; cin>>kapital;
cout<<"
Geben Sie den Zinssatz ein "; cin>>zinssatz;
zinsen=kapital*tage*zinssatz / (100*360);
printf("
%s%20.2f%s","Die Zinsen betragen ",zinsen," EUR");
}
getch();
}

! kann mir da jemand weiter helfen?! Bitte*heulz*
GAST stellte diese Frage am 08.03.2005 - 12:53

 
Antwort von GAST | 08.03.2005 - 13:16
Theoretisch gerne.
Hab das Prog grade mal meinem Compiler zu futtern gegeben und schon mal etwas korrigiert. Da ich aber eigentlich nur mit C arbeite mußt du mir mal sagen,
wie ich da n Datum eingeben kann. Soll da n Windows-Fenster oder sowas kommen?
Also genauer: Was macht: cin>>e_tag,cin>>e_mon;cin>>e_jahr; ?
Damit kann ich nichts anfangen.

 
Antwort von GAST | 08.03.2005 - 13:36
aber so wie ich das überblicke, mußt du dafür nur vor dem ersten do{ ein weiteres do{ schreiben,hinter if (tage<=0) dann fehler="j" und dann dannach wieder }while (fehler=="j");

 
Antwort von GAST | 08.03.2005 - 13:37
aolso erstens sorry ich hab da noch sau viele fehler in dem code drin ich poste gleich denn verbesserten!

 
Antwort von GAST | 08.03.2005 - 13:43
zeig mir mal bitte ein bespiel bitte! ach das is ne textbildschirm anwendung!

 
Antwort von GAST | 08.03.2005 - 13:45
also soweit ist das der code wo ich das einbauen muss*G*


# include <iostream.h>
# include <conio.h>
# include <stdio.h>
main()
{
char fehler="n";
int e_tag,e_mon,e_jahr,a_tag,a_mon,a_jahr,tage;
float kapital, zinssatz, zinsen;
do
{
fehler="n";
cout<<"
Geben Sie das Einzahlungsdatum ein: ";
cin>>e_tag; cin>>e_mon; cin>>e_jahr;
if (e_tag<1 || e_tag > 30 || e_mon<1 || e_mon > 12 ||e_jahr<1960 || e_jahr > 2005)
{
fehler="j";
cout<<"
Falsches Datum - nochmals eingeben ";
}
}while (fehler=="j");
do
{
fehler="n";
cout<<"
Geben Sie das Auszahlungsdatum ein: ";
cin>>a_tag; cin>>a_mon;cin>>a_jahr;
if (a_tag<1 || a_tag > 30 || a_mon<1 || a_mon > 12 ||a_jahr<1960 || a_jahr > 2005)
{
fehler="j";
cout<<"
Falsches Datum - nochmals eingeben ";
}
}while (fehler=="j");
tage= a_tag - e_tag + (a_mon - e_mon)*30+ (a_jahr - e_jahr)*360;
if (tage<=0)
cout<<"
falsche Tageberechnung - Programm nochmals starten!";
else
{
cout<<"
Geben Sie das Kapital ein "; cin>>kapital;
cout<<"
Geben Sie den Zinssatz ein "; cin>>zinssatz;
zinsen=kapital*tage*zinssatz / (100*360);
printf("
%s%20.2f%s","Die Zinsen betragen ",zinsen," EUR");
}
getch();
}

 
Antwort von GAST | 08.03.2005 - 13:55
Also genauer: Was macht: cin>>e_tag,cin>>e_mon;cin>>e_jahr; ?
Damit kann ich nichts anfangen.

sind die eingaben für die daten!

 
Antwort von GAST | 09.03.2005 - 06:20
cin ist die Standardenigabe.
Du liest von der Standardeingabe in eine Variable ein. Jedes beliebige Trennzeichen (Tab, Space oder newline) ist zur beendigung der eingabe einer variablen ausreichen.

Ich würde das gesamte Beispiel viel einfacher lösen, außerdem würde ich einen unsigned char statt einem normalen nehmen. (wennst schon keinen bool haben willst)


# include <iostream.h>
# include <conio.h>
# include <stdio.h>

struct date {
int day,month,jear
}

void/*int*/ Getthedate() (date &a, char a = "E") {
unsigned char x = 0;
do {
if (x) cout << "falsches Eingabedatum";
if (a = "E") cout << "Geben Sie das Einzahlungsdatum ein"
else cout << "Geben Sie das Auszahlungsdatum ein"
char* dummystr;
cin << dummystr;
a.day = atoi(dummystr) //Um Fehler wie "zzzasdf" als eingabe zu vermeiden
cin << dummystr;
a.month = atoi(dummystr);
cin << dummystr;
a.jear = atio(dummystr);
x = (a.day < 1) || (a.day > 30) || (a.month < 1) || (a.month > 12) || (a.jear < 1960) /*warum eigentlich?*/ || (a.jear > 2005)
} while (x = 1);
//return mon * 12 + day + jear * 360 //<-- doch nicht
}
int main() {
unsigned char error = 0;
date anfang, ende;
int tage;
Getthedate(anfang);
Getthedate(ende,"A"); //doch nicht
//keine lust einen operator zu überladen
tage = (ende.jear - anfang.jear) * 360 + (ende.month - anfang.month) * 12 + ende.day - anfang.day;

.... (keine Zeit mehr, muss gehen)
}

Anmerkung: Das programm enthält sicher ziemlich viele fehler, ich programmiere a) normalerweise pascal und b) kenne ich c++ nur aus der theorie

Verstoß melden
Hast Du eine eigene Frage an unsere Informatik-Experten?

> Du befindest dich hier: Support-Forum - Informatik