Verfügbare Informationen zu "Schon wieder was ernstes!"
Qualität des Beitrags: Beteiligte Poster: schranzo - ktimorio - kleinesfieseswindchen - betanova Forum: Junggesellschaft Equord von 1893 Forenbeschreibung: EINIGKEIT MACHT STARK aus dem Unterforum: Klatsch und Tratsch Antworten: 46 Forum gestartet am: Mittwoch 18.05.2005 Sprache: deutsch Link zum Originaltopic: Schon wieder was ernstes! Letzte Antwort: vor 15 Jahren, 7 Monaten, 25 Tagen, 22 Stunden, 9 Minuten
Alle Beiträge und Antworten zu "Schon wieder was ernstes!"
Re: Schon wieder was ernstes!
schranzo - 01.02.2009, 15:17Schon wieder was ernstes!
kennt sich hier irgendeiner von den computerexperten mit c++ und/od. visual basic aus?
Re: Schon wieder was ernstes!
ktimorio - 01.02.2009, 19:30
c++ kann ich ein bisschen, worum gehts denn? Bei einfachen Programmieraufgaben sollte ich dir helfen können.
Visual Basic habe ich direkt noch nicht gemacht, aber mit VBA hab ich schon einiges programmiert, da gibts einige Parallelen... Worum gehts denn genau?
Re: Schon wieder was ernstes!
schranzo - 01.02.2009, 19:38
kommen wir erstmal zu c++.
ich habe hier eine aufgabe, da soll ich den bmi berechnen und ausgeben.
das programm soll wie folgt aussehen:
geben sie ihre größe in cm an: (190)
geben sie ihr gewicht in ganzen kg an: (87)
gewicht............... bmi
----------------------------
82
83
84
85
86
--------------------------
87
-------------------------
88
89
90
91
92
dazu soll in der bmi-spalte der jeweilige bmi hinzugefügt werden.
die werte in den klammern gibt man ein, nachdem das programm gestartet wurde. die formel für den bmi = gewicht/groesse².
ich hab jetzt schonmal angefangen, aber ich komme einfach nicht drauf, wie ich das gewicht in der tabelle verändern kann.
habe mir schon überlegt es mit zwei for-schleifen und einer if-schleife zu versuchen.
hier auf jeden fall mein bisheriges ergebnis:
# include <iostream.h>
# include <iomanip.h>
# include <conio.h>
# include <math.h>
int main()
{
float groesse, gewicht,i,j;
float bmi;
cout<<"Bitte geben Sie Ihre Groesse in cm ein: ";
cin>>groesse;
cout<<"Biite geben Sie Ihr Gewicht in ganzen kg ein: ";
cin>>gewicht;
cout<<" Gewicht"<<setw(10)<<" BMI"<<endl;
cout<<"-------------------------"<<endl<<endl<<endl;
for(i=0;i<=5;i++)
{
bmi=gewicht/(groesse*groesse)*10000;
cout<<setw(5)<<gewicht<<setw(13)<<bmi;
bmi++;
cout<<endl;
}
cout<<"\n\nProgrammende...";
cin.get();cin.get();
return(0);
}
es wär echt cool, wenn du mir da helfen könntest. ich hab das dumme gefühl, das kommt in der klausur dran.
Re: Schon wieder was ernstes!
schranzo - 01.02.2009, 19:42
achso, formel für bmi is bmi=gewicht/groesse²*10000...wegen einheit;)
Re: Schon wieder was ernstes!
ktimorio - 01.02.2009, 20:05
Erstmal zwei Arrays machen und die mit den Werten füllen.
Code:
float gewichte[11];
float bmis[11];
int cnt = 0;
for (aktuellesgewicht = gewicht-5; aktuellesgewicht <= gewicht + 5; aktuellesgewicht++) {
gewichte[cnt] = aktuellesgewicht;
bmis[cnt] = aktuellesgewicht / (groesse * groesse) * 10000;
cnt++;
}
Dann musst du danach nur noch mit ner for schleife über die beiden arrays rüberlaufen und die werte in der gewünschten Form ausgeben.
Code:
for(i=0;i<=gewichte.length;i++)
{
if (gewichte[i] == gewicht) {
cout "--------------------------";
}
cout<<setw(5)<<gewicht<<setw(13)<<bmi;
cout<<endl;
if (gewichte[i] == gewicht) {
cout "--------------------------";
}
}
cout<<"\n\nProgrammende...";
cin.get();cin.get();
return(0);
So, oder so ähnlich...
Re: Schon wieder was ernstes!
schranzo - 01.02.2009, 20:22
hab das jetzt mal in die for schleife geschrieben, aber er gibt folgende fehlermeldung raus:
Code:
# include <iostream.h>
# include <iomanip.h>
# include <conio.h>
# include <math.h>
int main()
{
float groesse,gewicht,i,a;
float bmi[11];
int j=0,gew[11];
cout<<"Bitte geben Sie Ihre Groesse in cm ein: ";
cin>>groesse;
cout<<"Biite geben Sie Ihr Gewicht in ganzen kg ein: ";
cin>>gewicht;
cout<<" Gewicht"<<setw(10)<<" BMI"<<endl;
cout<<"-------------------------"<<endl<<endl<<endl;
for(a=gew-5;a<=gew+5;a++)
{
gew[j]=gewicht;
bmi=gew/(groesse*groesse)*10000;
cout<<setw(5)<<gew<<setw(13)<<bmi;
cout<<endl;
j++;
for(i=0;i<=11;i++)
{
if(gew[i] == a){cout<< "--------------------------";}
cout<<setw(5)<<gewicht<<setw(13)<<bmi;
cout<<endl;
if(gew[i]==a){cout<< "--------------------------";}
}
}
cout<<"\n\nProgrammende...";
cin.get();cin.get();
return(0);
}
hier die jetzige fehlermeldung:
Code:
24 cannot convert `int*' to `float' in assignment
24 invalid operands of types `float' and `int*' to binary `operator<='
26 [Warning] converting to `int' from `float'
29 invalid operands of types `int[11]' and `float' to binary `operator/'
36 invalid types `int[11][float]' for array subscript
39 invalid types `int[11][float]' for array subscript
Re: Schon wieder was ernstes!
ktimorio - 01.02.2009, 21:00
Versuch mal das:
Code:
# include <iostream>
# include <iomanip>
# include <conio>
# include <math>
int main()
{
float bmi[11];
int gew[11];
int j, a, gewicht, groesse, i;
// EINLESEN
cout<<"Bitte geben Sie Ihre Groesse in cm ein: ";
cin>>groesse;
cout<<"Bitte geben Sie Ihr Gewicht in ganzen kg ein: ";
cin>>gewicht;
cout<<" Gewicht"<<setw(10)<<" BMI"<<endl;
cout<<"-------------------------"<<endl<<endl<<endl;
// ZUNÄCHST NUR DIE ARRAYS MIT DEN WERTEN FÜLLEN
j=0;
for(a=gewicht-5;a<=gewicht+5;a++)
{
gew[j] = a;
bmi[j] = a / (groesse*groesse) * 10000;
j++;
}
// JETZT DIE ARRAYS AUSGEBEN
for(i=0;i<=11;i++)
{
if(gew[i] == a){cout<< "--------------------------";}
cout<<setw(5)<<gew[i]<<setw(13)<<bmi[i];
cout<<endl;
if(gew[i]==a){cout<< "--------------------------";}
}
}
cout<<"\n\nProgrammende...";
cin.get();cin.get();
return(0);
}
Re: Schon wieder was ernstes!
schranzo - 02.02.2009, 00:01
sorry kai, irgendwie is mein pc grad vorhin abgekackt. ich weiß auch nich was da los war.
ich werd mal versuchen, ob ich noch was hinkriege mit dem programm. falls ja werd ich es dich wissen lassen.
Re: Schon wieder was ernstes!
ktimorio - 02.02.2009, 12:29
Das problem warum immer 0 berechnet wurde war, dass wir versucht haben einen int durch irgendwas mit "/" zu teilen. Das geht nicht.
Ich hab jetzt zwei extra Variablen für Zähler (float!!!) und Nenner definiert und jetzt funktioniert es wunderbar.
Code:
# include <iostream>
# include <iomanip>
# include <cmath>
using namespace std;
int main()
{
float bmi[11];
int gew[11];
int j, a, gewicht, groesse, i;
// EINLESEN
cout << "Bitte geben Sie Ihre Groesse in cm ein: ";
cin>>groesse;
cout<<"Bitte geben Sie Ihr Gewicht in ganzen kg ein: ";
cin>>gewicht;
// ZUNÄCHST NUR DIE ARRAYS MIT DEN WERTEN FÜLLEN
j = 0;
for(a=gewicht-5;a<=gewicht+5;a++)
{
// GEWICHTE-ARRAY FÜLLEN
gew[j] = a;
// ZÄHLER UND NENNER BERECHNEN, ZAEHLER MUSS float SEIN,
// SONST KOMMT 0 ALS ERGEBNIS RAUS
float bmi_zaehler = a;
int bmi_nenner = (groesse * groesse);
// BMI-ARRAY MIT BERECHNETEM WERT FÜLLEN
bmi[j] = (bmi_zaehler / bmi_nenner) * 10000;
j++;
}
// JETZT DIE ARRAYS AUSGEBEN
cout<<" Gewicht"<<setw(10)<<" BMI"<<endl;
cout<<"-------------------------"<<endl<<endl<<endl;
for(i=0;i<11;i++)
{
if(gew[i] == gewicht){cout<< "--------------------------"<<endl;}
cout<<setw(5)<<gew[i]<<setw(15)<<bmi[i];
cout<<endl;
if(gew[i] == gewicht){cout<< "--------------------------"<<endl;}
}
cout<<"\n\nProgrammende...";
cin.get();cin.get();
return(0);
}
Output:
Code:
kai@kai-desktop:~/Desktop$ ./bmi
Bitte geben Sie Ihre Groesse in cm ein: 183
Bitte geben Sie Ihr Gewicht in ganzen kg ein: 93
Gewicht BMI
-------------------------
88 26.2773
89 26.5759
90 26.8745
91 27.1731
92 27.4717
--------------------------
93 27.7703
--------------------------
94 28.0689
95 28.3675
96 28.6661
97 28.9647
98 29.2633
Programmende...
kai@kai-desktop:~/Desktop$
Re: Schon wieder was ernstes!
schranzo - 02.02.2009, 15:01
oh kai...du bist stark übergewichtig!!!
aber vielen dank für deine hilfe! habe auch schon an sowas gedacht. es funktioniert übrigens auch ohne die beiden hilfsvariablen, wenn man die formel so schreibt:
Code:
bmi[j]=a*1.0/(groesse*groesse)*10000
allerdings gibt er dann die tabelle noch nicht richtig aus.
Re: Schon wieder was ernstes!
schranzo - 02.02.2009, 15:22
hier nochmal das ganze. jetzt funktioniert es perfekt. habe noch die vorschleife geändert, er muss sie ja nur 10 mal durchlaufen um 11 werte zu errechnen.
Code:
# include <iostream.h>
# include <iomanip.h>
# include <conio.h>
# include <math.h>
int main()
{
float bmi[11];
int gew[11];
int j, a, gewicht, groesse, i;
// EINLESEN
cout<<"Bitte geben Sie Ihre Groesse in cm ein: ";
cin>>groesse;
cout<<"Bitte geben Sie Ihr Gewicht in ganzen kg ein: ";
cin>>gewicht;
// ZUNÄCHST NUR DIE ARRAYS MIT DEN WERTEN FÜLLEN
j=0;
for(a=gewicht-5;a<=gewicht+5;a++)
{
gew[j] = a;
bmi[j] = a*1.0/(groesse*groesse)*10000;
j++;
}
cout<<" Gewicht"<<setw(10)<<" BMI"<<endl;
cout<<"-------------------------"<<endl<<endl;
// JETZT DIE ARRAYS AUSGEBEN
for(i=0;i<=10;i++)
{
if(gew[i] == gewicht){cout<< "--------------------------"<<endl;}
cout<<setw(5)<<gew[i]<<setw(13)<<bmi[i];
cout<<endl;
if(gew[i] == gewicht){cout<< "--------------------------"<<endl;}
}
cout<<"\n\nProgrammende...";
cin.get();cin.get();
return(0);
}
wahlweise kann man a auch vom typ float deklarieren!das ist das aller einfachste!
Re: Schon wieder was ernstes!
ktimorio - 02.02.2009, 15:34
Sehr gut. Genau so wirds gemacht... ;) 8)
Re: Schon wieder was ernstes!
kleinesfieseswindchen - 02.02.2009, 15:38
Aha......is ja einfach! :shock:
Re: Schon wieder was ernstes!
ktimorio - 02.02.2009, 16:24
Code:
# include <iostream>
# include <iomanip>
# include <cmath>
using namespace std;
int fakultaet(int a) {
if (a == 1) {
return 1;
}
else {
return a * fakultaet(a - 1);
}
}
float reihenentwicklung(float x) {
int i;
float reihe = 1;
for (i = 1; i <= 12; i++) {
reihe = reihe + (pow(x, i) / fakultaet(i));
cout<<"Glied "<<i<<" : "<<reihe<<endl;
}
}
int main()
{
float x;
// EINLESEN
cout << "Bitte geben Sie x ein: ";
cin>>x;
cout<<endl;
cout<<"TEIL 1:"<<endl;
cout<<"exp(x): "<<exp(x)<<endl;
cout<<endl;
cout<<"TEIL 2:"<<endl;
reihenentwicklung(x);
cout<<"\n\nProgrammende...";
cin.get();cin.get();
return(0);
}
Re: Schon wieder was ernstes!
betanova - 02.02.2009, 16:31
nur das der bmi mal so gar nichts aussagt, da nicht zwischen fett und muskel unterschieden wird.
und wie ich kai kenne ist das ne richtige muckisau.
:lol:
somit alles im grünen bereich....
kam float vor double oder nach?
Re: Schon wieder was ernstes!
ktimorio - 02.02.2009, 17:02
betanova hat folgendes geschrieben:nur das der bmi mal so gar nichts aussagt, da nicht zwischen fett und muskel unterschieden wird.
und wie ich kai kenne ist das ne richtige muckisau.
:lol:
somit alles im grünen bereich....
kam float vor double oder nach?
float hat nen kleineren Zahlenbereich als double
Und das mit den Muskel siehst du schon ganz richtig, haha. Klitschko hat bestimmt auch nen erhöhten BMI und ist trotzdem nicht übergewichtig! ;)
Re: Schon wieder was ernstes!
ktimorio - 02.02.2009, 17:29
Die letzte Aufgabe mit OOP:
Code:
# include <iostream>
# include <iomanip>
# include <cmath>
using namespace std;
class reihenentwicklung {
public:
void anzahl_der_glieder_eingeben(void);
void reihenentwicklung_ausgeben(float x);
int anzahl_der_glieder;
private:
int fakultaet(int a);
};
int reihenentwicklung::fakultaet(int a) {
if (a == 1) {
return 1;
}
else {
return a * fakultaet(a - 1);
}
}
void reihenentwicklung::anzahl_der_glieder_eingeben() {
// EINLESEN
cout << "Bitte geben Sie die Anzahl der Glieder ein: ";
cin>>anzahl_der_glieder;
cout<<endl;
}
void reihenentwicklung::reihenentwicklung_ausgeben(float x) {
int i;
float reihe = 1;
for (i = 1; i <= anzahl_der_glieder; i++) {
reihe = reihe + (pow(x, i) / fakultaet(i));
cout<<"Glied "<<i<<" : "<<reihe<<endl;
}
}
int main()
{
float x = -1;
cout<<"REIHENENTWICKLUNG: "<<endl;
reihenentwicklung e_fkt;
e_fkt.anzahl_der_glieder_eingeben();
e_fkt.reihenentwicklung_ausgeben(x);
cout<<"\n\nProgrammende...";
cin.get();cin.get();
return(0);
}
Re: Schon wieder was ernstes!
schranzo - 02.02.2009, 17:37
hab das jetzt ein bisschen umgeschrieben, läuft aber nicht...weiß auch nicht was der will!
Code:
# include <iostream.h>
# include <iomanip.h>
# include <math.h>
int fakultaet(float a)
{
if (a == 1)
{return 1;}
else
{return a * fakultaet(a - 1);}
}
float reihenentwicklung(float x)
{
int i;
float reihe = 1;
cout.setf(ios::right|ios::fixed);cout.precision(5);
for (i = 1; i <= 12; i++)
{ reihe = reihe + (pow(x, i) / fakultaet(i));
cout<<"Glied "<< i<<" : "<<reihe<<endl;
}
}
int main()
{
float x;
x=-1;
// EINLESEN
cout<<"TEIL 1:"<<endl<<endl;
cout<<"exp(x): "<<exp(x)<<endl;
cout<<endl;
cout<<"TEIL 2:"<<endl<<endl;
reihenentwicklung(x);
cout<<"\n\nProgrammende...";
cin.get();cin.get();
return(0);
}
Re: Schon wieder was ernstes!
schranzo - 02.02.2009, 19:12
hab hier nochmalk ein proigramm...wär cool wenn dir das auch aqnguckst
Code:
# include<iomanip.h>
# include<math.h>
//klassendeklaration
class automaten
{
public:
char marke1, marke2, marke3, marke4, marke5,anzahl;
int marke;
int preis,preis1,preis2,preis3,preis4,preis5, rueckgeld;
void marke_auswaehlen();
void anzahl_der_2_eu_st_eingeben();
void marke_berechnen_und_ausgeben();
void rueckgeld_auszahlen();
};
//Methodendeklaration
void automaten::marke_auswaehlen()
{
/*marke1= 1 = 45 ct (postkarte);
marke2= 2 = 55 ct (postkarte);
marke3= 3 = 90 ct (postkarte);
marke4= 4 = 145 ct (postkarte);
marke5= 5 = 220 ct (postkarte);*/
cout<<"Welche Briefmarke moechten Sie kaufen?"<<endl<<endl;
cout<<"1 = 45 ct (postkarte)"<<endl;
cout<<"2 = 55 ct (postkarte)"<<endl;
cout<<"3 = 90 ct (postkarte)"<<endl;
cout<<"4 = 145 ct (postkarte)"<<endl;
cout<<"5 = 220 ct (postkarte)"<<endl<<endl;
cout<<"Waehlen Sie Ihre Marke: ";
cin>>marke;
cout<<endl;
};
void automaten::anzahl_der_2_eu_st_eingeben()
{
cout<<"Der Automat nimmt heute leider nur 2 Euro Stuecke entgegen."<<endl
<<"Bitte geben Sie die Anzahl Ihrer 2 Euro Stuecke an ";
cin>>preis;
cout<<endl;
};
void automaten::marke_berechnen_und_ausgeben()
{
marke1=45, marke2=55,marke3=90, marke4=145, marke5=220;
anzahl= (preis*2)/marke;
rueckgeld =(preis*2)-anzahl;
cout<<"Sie erhalten "<<anzahl<<" Marken zu "<<marke<<"ct"<<endl;
cout<<"Ihr Rueckgeld betraegt "<<rueckgeld<<" ct"<<endl;
};
int main()
{
automaten briefmarken;
briefmarken.marke_auswaehlen();
briefmarken.anzahl_der_2_eu_st_eingeben();
briefmarken.marke_berechnen_und_ausgeben();
cout<<"\n\nProgrammende...";
cin.get();cin.get();
return(0);
}
Re: Schon wieder was ernstes!
betanova - 02.02.2009, 22:27
hmm, so ganz verstehe ich das nicht.
Schritt 1: Wähle Marke.
in der Variablen marke des Typen int speicherst du z.b. unter
cout<<"5 = 220 ct (postkarte)"<<endl
doch den WERT 5 oder ?!
Re: Schon wieder was ernstes!
betanova - 02.02.2009, 22:27
Die anzahl errechnest du aus :preis ( hätte ich zwei 2 Eurostücke also = 4 Euro *2/marke (in meinem beispiel 5)
ergebe das doch (4*2) /5
also 1,6
aber 1,6 von was???
müsstest du nicht noch eine if oder case bedienung schreiben ??
if (marke=5; marke=marke5)
else
if (marke=4; marke=145)
und so weiter.
Wo findet die Euro->Cent Umrechnung
und das Abrunden statt?
deinen Aufgabe verstehe ich so:
Durch die Menge des Geldes, was ich reinstecke wird auch ein maximum der gekauften Marken ermittelt.
d.H. ich stecke 20 € rein, so kaufe ich autom. 9 briefmarken wenn ich marke5 wähle?
Von der Syntax bin ich bestimmt nicht ganz im bilde, aber dein code ergibt für mich noch keinen sinn. was für einen compiler benutzt du?
Re: Schon wieder was ernstes!
betanova - 02.02.2009, 22:28
Versucht mal meine beiden Antworten als eine abzusenden!
funktioniert nicht!
der schmeisst einfach einen teil weg.
Re: Schon wieder was ernstes!
betanova - 02.02.2009, 22:38
für mich nocmal!
gibt es eine funktion fakultaet in c++?
Re: Schon wieder was ernstes!
schranzo - 02.02.2009, 22:41
ich benutze einen compiler den unser prof auf seine seite gestellt hat.
wenn du den haben möchtest, dann sag bescheid, ich lass ihn dir wie auch immer zu kommen.(z.b mail)
bin mir auch schon bewußt geworden, dass ich da mit den rechnungen etwas schief liege. hab mich auch die letzten 3 stunden nicht mit dem programm beschäftigt, werde da gleich nochmal rübergucken. wenigstens compiled er das. wenn dann die berechnung nicht stimmt, dann gibt das in der klausur nur minimal punktabzug;)
habe aber auch schon überlegt ob es eventuell cleverer wär das über ein array einzulesen. was sagst du?
habe grad noch ein anderes programm geschrieben und da gibt er eine fehlermeldung aus, dich ich gar nich nachvollziehen kann.
Re: Schon wieder was ernstes!
schranzo - 02.02.2009, 22:42
die funktion haben wir selber geschrieben. naja, mehr kai. er meinte es ist ne rekursive funktion und zwar die hier:
Code:
int fakultaet(float a)
{
if (a == 1)
{return 1;}
else
{return a * fakultaet(a - 1);}
}
Re: Schon wieder was ernstes!
schranzo - 02.02.2009, 22:51
hier das neue programm
Code:
# include <iostream.h>
# include <iomanip.h>
# include <conio.h>
//Klassendeklaration
class geld
{
public:
char g1,g2,g3,g4;
void pin_eingabe();
void betrag_eingabe();
void berechnung_eingabe(int betrag);
};
//Methodendeklaration
void geld::pin_eingabe()
{
int betrag;
int pin1=1, pin2=2, pin3=3,pin4=4;
char g1,g2,g3,g4;
neueEingabe:
cout<<"Bitte geben Sie Ihren PIN ein: ";
g1=getch();
cout<<"*";
g2=getch();
cout<<"*";
g3=getch();
cout<<"*";
g4=getch();
cout<<"*";
if ((g1!=pin1)||(g2!=pin2)||(g3!=pin3)||(g4!=pin4))
{cout<<"\nDie Geheimzahl ist falsch!\n";
goto neueEingabe;
}
}
void geld::betrag_eingabe()
{
neueEingabe:
cout<<"\nBitte geben Sie einen Betrag ein: ";
int betrag;
cin>>betrag;
if((betrag%10)!=0)
{ cout<<"\nDer Betrag muss durch 10 teilbar sein!!!\n\n";
goto neueEingabe;
}
};
void geld::berechnung_eingabe(int betrag)
{
int a[]={1000,500,200,100,50,20,10};
int i;
cout<<"\nSie erhalten:\n ";
for(i=0;i<=7;i++)
{
int anzahl= betrag/a[i];
betrag = betrag-anzahl*a[i];
if(anzahl!=0){cout<<setw(2)<<anzahl<<setw(2)<<a[i]<<" Euro-Scheine.\n";
}
}
};
//Hauptprogramm
int main()
{
int betrag;
geld meinGeld;
meinGeld.pin_eingabe();
meinGeld.betrag_eingabe();
meinGeld.berechnung_eingabe(betrag);
cout<<"\n\nProgrammende...";
cin.get();cin.get();
return(0);
}
problem an der geschichte...wenn ich den pin 1234 eingebe, dann sagt er es ist falsch....
Re: Schon wieder was ernstes!
schranzo - 02.02.2009, 22:58
idiot...ich muss ja noch ne else anweisung schreiben, damit er weiter macht!
wenn ich die aber schreibe, sagen wir mit else goto weiter und weiter in die nächste void anwendung schreibe, dann erzählt er mir, dass weiter nicht definiert ist!
Re: Schon wieder was ernstes!
betanova - 02.02.2009, 23:12
Code:# include <iostream>
# include <iomanip>
# include <conio>
//Klassendeklaration
class geld
{
public:
char g1,g2,g3,g4;
void pin_eingabe();
void betrag_eingabe();
void berechnung_eingabe(int betrag);
};
//Methodendeklaration
void geld::pin_eingabe()
{
int betrag;
int pin1=1, pin2=2, pin3=3,pin4=4;
char g1,g2,g3,g4;
neueEingabe:
cout<<"Bitte geben Sie Ihren PIN ein: ";
g1=getch();
cout<<"*";
g2=getch();
cout<<"*";
g3=getch();
cout<<"*";
g4=getch();
cout<<"*";
if ((g1!=pin1)||(g2!=pin2)||(g3!=pin3)||(g4!=pin4))
{cout<<"\nDie Geheimzahl ist falsch!\n";
goto neueEingabe;
}
hier müsste doch dein else rein?!
void geld::betrag_eingabe()
{
neueEingabe:
cout<<"\nBitte geben Sie einen Betrag ein: ";
int betrag;
cin>>betrag;
if((betrag%10)!=0)
{ cout<<"\nDer Betrag muss durch 10 teilbar sein!!!\n\n";
goto neueEingabe;
}
};
void geld::berechnung_eingabe(int betrag)
{
int a[]={1000,500,200,100,50,20,10};
int i;
cout<<"\nSie erhalten:\n ";
for(i=0;i<=7;i++)
{
int anzahl= betrag/a[i];
betrag = betrag-anzahl*a[i];
if(anzahl!=0){cout<<setw(2)<<anzahl<<setw(2)<<a[i]<<" Euro-Scheine.\n";
}
}
};
//Hauptprogramm
int main()
{
int betrag;
geld meinGeld;
meinGeld.pin_eingabe();
meinGeld.betrag_eingabe();
meinGeld.berechnung_eingabe(betrag);
cout<<"\n\nProgrammende...";
cin.get();cin.get();
return(0);
}
Re: Schon wieder was ernstes!
schranzo - 02.02.2009, 23:12
betanova hat folgendes geschrieben:hmm, so ganz verstehe ich das nicht.
Schritt 1: Wähle Marke.
in der Variablen marke des Typen int speicherst du z.b. unter
cout<<"5 = 220 ct (postkarte)"<<endl
doch den WERT 5 oder ?!
meiner meinung nach speichert er da gar nichts ab, sondern gibt einfach nur aus 5=220ct(postkarte)
Zitat:
ergebe das doch (4*2) /5
also 1,6
aber 1,6 von was???
wenn du 2 2 eurostücke hast sind das ja schon 4 euro. die rechnung lautet also (2*2)/220 <- ich will ja erreichen, dass er durch den wert der marke teilt und nicht durch die nummer der marke!
dann soll er sagen er kann mir 1 marke geben.
es müßte also heißen
cout.precision(1);
(2.0*2.0)/2.2=1.81 (die nachkommerstelle gibt er aber in diesem fall nicht aus)
im nächsten schritt will ich erreichen, dass er mir den differenzbetrag von 4-2.2=1.8 wieder ausgibt.
das war mein eigentliches ziel. ich geb zu ich hab da vorhin nicht richtig drüber nachgedacht!
Re: Schon wieder was ernstes!
betanova - 02.02.2009, 23:14
vielleicht solltest du dir zu den berechnungen immer ausgaben in der konsole erzeugen.
z.b. deine pineingabe augeben etc.
ist zwar schon einige jahre her, hat mir aber geholfen.
so, muss jetzt ins bett.
aber irgendwie hast du ein geiles thema. is wie sudoko -was zum pnobeln..
Re: Schon wieder was ernstes!
schranzo - 02.02.2009, 23:20
betanova hat folgendes geschrieben:vielleicht solltest du dir zu den berechnungen immer ausgaben in der konsole erzeugen.
z.b. deine pineingabe augeben etc.
versteh ich nicht ganz. mußt du mir morgen früh nochmal genau erklären.
hast du eigentlich irgendein messenger über den man mit dir in kontakt bleiben kann?
je mehr man in das thema reinkommt desto mehr spass macht es auch. wenn ich mir überlege, dass ich bis vor 4 tagen noch keinen blassen schimmer von diesem programm hatte und jetzt voll drauf abgehen. es fesselt einen immer mehr;)
Re: Schon wieder was ernstes!
betanova - 03.02.2009, 08:24
ich kenn das aber auch nur aus java -solte aber in c++ genauso möglich sein.
Ich meinte damit aber auch nur, das du das ergebnis deiner bedingung damit prüfen könntest.
bedingung pin war ja, richtig oder falsch.
im "richtigprüfteil" if pin1=1 || pin2 =2 und soweiter
könnte man ein (java) System.Out println "Ihre pin ist mit pin1 pin2 etc.. " richtig
im else zweig dann (logische konsequenz für falsch)
System.Out println ( Ihre Pineingabe mit pin1 pin2 etc " ist falsch.
für den unwahscheinlichen fall könntest du hiermit unter anderem prüfen ob du schift gedrückt hattes. statt 1 dann ! 2 " etc.
Müsst ihr eigentlich jeder Zahl einen Char zuweisen?
Wir haben sowas ähnliches mal gebastelt, allerdings mit einem String.
Re: Schon wieder was ernstes!
schranzo - 03.02.2009, 10:55
string sagt mir irgendwas, aber ich weiß nicht genau was.
der begriff println ist mir leider gar kein begriff, is eventuell sowas wie cout?
Re: Schon wieder was ernstes!
schranzo - 03.02.2009, 13:25
tja das mit dem geldautomaten will mir nicht so richtig gelingen
Code:
# include <iostream.h>
# include <iomanip.h>
# include <conio.h>
# include <math.h>
//Klassendeklaration
class automat
{
public:
double a[6];
double i;
int z,n,m;
void auswaehlen();
void _2_st_eingeben();
void marken_berechnen_und_ausgeben();
void geld_auszahlen();
};
//Methodendeklaration
void automat::auswaehlen()
{
//double a[6]={0,1,2,3,4,5};
double i;
cout<<"Welche Marke moechten Sie kaufen?"<<endl<<endl;
cout<<"1 = 45 ct(Postkarte)"<<endl;
cout<<"2 = 55 ct(Postkarte)"<<endl;
cout<<"3 = 90 ct(Postkarte)"<<endl;
cout<<"4 = 145 ct(Postkarte)"<<endl;
cout<<"5 = 225 ct(Postkarte)"<<endl<<endl;
cout<<"Ihre Wahl bitte ";
cin>>a[i];
a[1]=0.45;
a[2]=0.55;
a[3]=0.90;
a[4]=1.45;
a[5]=2.25;
//for(i=1;i<=5,i++)
};
void automat::_2_st_eingeben()
{
int z;
cout<<"Der Automat nimmt heut leider nur 2 Euro Stuecke an.\n";
cout<<"Bitte geben Sie die Anzahl Ihrer 2 Euro Stuecke ein: ";
cin>>z;
};
void automat::marken_berechnen_und_ausgeben()
{
double a[6];
double i;
double z,j,n,m;
j=z*2;
n=j/a[6];
m=j-(n*a[6]);
cout<<endl;
};
void automat::geld_auszahlen()
{
double a[6];
cout<<"Sie erhalten "<<n<<"Marke(n) zu "<<a[6]<<"ct.\n";
cout<<"Ihr Rueckgeld betraegt"<<m<<"Euro."<<endl;
};
//Hauptprogramm
int main()
{
automat bank;
bank.auswaehlen();
bank._2_st_eingeben();
bank.marken_berechnen_und_ausgeben();
cout<<"\n\nProgrammende...";
cin.get();cin.get();
return(0);
}
vielleicht hat jm von euch ne idee
Re: Schon wieder was ernstes!
betanova - 03.02.2009, 13:29
ist zwar auskommentiert, aber arbeitet ihr/du schon mit arrays???
Re: Schon wieder was ernstes!
betanova - 03.02.2009, 13:33
was kommt denn für eine fehlermeldung?
oder wird falsch gerechnet?
Re: Schon wieder was ernstes!
betanova - 03.02.2009, 13:38
in der public class hast du z,n,m als int deklariert.
im späteren verlauf dann:
void automat::marken_berechnen_und_ausgeben()
{
double a[6];
double i;
double z,j,n,m;
j=z*2;
als double .
ist das richtig?
Re: Schon wieder was ernstes!
schranzo - 03.02.2009, 13:39
jo arrays haben wir.
und das array sollt eeigentlich nicht ausgeblendet sein, das war nur ein überbleibsel von nem versuch;)
also er startet das programm und es läuft bis zu dem zeitpunkt an dem ich die zahl der 2 euro stücke eingeben soll...dann springt er komischerweise ans programmende ohne irgendeine berechnung durchzuführen.
Re: Schon wieder was ernstes!
betanova - 03.02.2009, 14:00
hmmm.. mal angenommen ich tätige wahl 3.
dann wird doch mit dem wert 0.9 gerechnet.
dann ist einem zwei eurostück
j=z*2
j=1*2
j=2
n=j/a[6]
n=2/0,9
n=2,22
m=j-(n*a[6])
m=2-(2,22*0,9)
m=0
ich glaube hier fehlt eine prüfung wie oft eine ganze zahl multipliziert werde kann.
1x0,9 i.o
2x0.9 i.o
3x0.9 nicht i.o
die differenz aus 2x0.9 wird dann dein wechselgeld.
boah, genau den gleichen mist habe ich schonmal in java gemacht. habe heute morgen auch noch nach den teilen geschaut, jedoch nichts mehr auf der platte gefunden. könnte man bestimmt mit einer for-schleife erfüllen.
ich schaue gerne heute abend nochmal, kann dir dann auch icq nennen. bis dahin hofe ich, das kai nochmal seinen senf dazu gibt. der scheint das ja wirklich aus dem ärmel zu schütteln
Re: Schon wieder was ernstes!
betanova - 03.02.2009, 14:06
deklarieren doch mal gleich in der public class z, n, m als double.
du gibst z bei der wahl der anzahl eurostücke einen int wert.
in nächstem schritt deklarierst du z als double.
überschreibt der das? geht das so?
wir haben immer nur in der public class unsere variablen deklaiert.
in den einzelnen programmschritten vielleicht noch hilfsvariablen.
aber eine variable im programm durch anderen typen ersetzt -kenne ich nicht.
Re: Schon wieder was ernstes!
schranzo - 03.02.2009, 14:06
oh das mit der deklaration hab ich gar nicht gesehen. danke.
diese fuck aufgabe irritiert mich immer mehr.
ich habe es auch schonmal mit einer for-schleife versucht...mit dem gleichen erfolg. aber vielleicht war meine laufvariable auch ne falsche.
werd jetzt erstmal ein bisschen theorie machen und mich auch später erst dran setzen. die sache mit etwas abstand betrachten...
Re: Schon wieder was ernstes!
schranzo - 03.02.2009, 14:12
betanova hat folgendes geschrieben:deklarieren doch mal gleich in der public class z, n, m als double.
du gibst z bei der wahl der anzahl eurostücke einen int wert.
in nächstem schritt deklarierst du z als double.
überschreibt der das? geht das so?
wir haben immer nur in der public class unsere variablen deklaiert.
in den einzelnen programmschritten vielleicht noch hilfsvariablen.
aber eine variable im programm durch anderen typen ersetzt -kenne ich nicht.
habe anfangs auch alles in der class deklariert, das is dann aber entweder zu unübersichtlich geworden oder er hat gemeckert.
deswegen dachte ich mir ich deklarier jetzt die variablen da, wo ich sie brauche, aber ich hab festgestellt, dass er sie dann in die folge methode nicht übernimmt. dann hab ich sie wieder in der class deklariert...deswegen is das ganze etwas unübersichtlich geworden
Re: Schon wieder was ernstes!
betanova - 03.02.2009, 20:25
Code:
import java.io.*;
public class Bankautomat
{
public static void main(String[] args)
throws IOException
{
BufferedReader ein = new BufferedReader(new InputStreamReader(System.in));
int pin=1234;
int geld=1000;
int rep=1;
do
{
System.out.println("Geben Sie bitte PIN ein");
int pinein=Integer.parseInt(ein.readLine());
if(pinein==pin)
{
rep=1;
System.out.println("Wie viel Geld wollen Sie abheben?");
int geldein=Integer.parseInt(ein.readLine());
if(geldein<=geld)
{
System.out.println("Bitte nehmen Sie Ihr Geld");
rep=4;
}
else
{
System.out.println("So viel Geld haben Sie aber nicht");
System.out.println("Versuchen Sie es noch mal");
}
}
else
{
if(rep<3)
{
System.out.println("PIN ist falsch");
System.out.println("Versuchen Sie es noch mal");
}
else if(rep==3)
{
System.out.println("Ihre Karte ist gesperrt");
}
rep=rep+1;
}
}while(rep<4);
}
}
Das war unser Geldautomat. Vielleicht kannst du daraus deine Pin-Abfrage ja ableiten?
Zitat:ich glaube hier fehlt eine prüfung wie oft eine ganze zahl multipliziert werde kann.
1x0,9 i.o
2x0.9 i.o
3x0.9 nicht i.o
die differenz aus 2x0.9 wird dann dein wechselgeld.
Für sowas kann man die Restwert-Methode anwenden:
Finde leider kein bsp. vielleicht mal googlen
Re: Schon wieder was ernstes!
schranzo - 04.02.2009, 22:35
so, klausur is gelaufen. noch mals vielen dank für eure hilfen! werde jetzt mal weiter programmieren, weiß zwar noch nicht was, aber das kann ich mir ja noch überlegen
:wink:
Re: Schon wieder was ernstes!
schranzo - 10.02.2009, 12:48
ich programmiere mir grade einen vokabeltrainer. kann mir einer einen befehl sagen, der den bildschirm löscht.
habe mir das so vorgestellt:
ausgabe:
Herzlich Willkommen!
wenn man jetzt eine taste drückt, verschwindet das herzlich willkommen und ein neuer text erscheint.
danke
Re: Schon wieder was ernstes!
ktimorio - 10.02.2009, 14:32
Keine Ahnung, aber Google wirkt Wunder:
Googlen nach: "c++ clear screen"
http://forum.fachinformatiker.de/c-c/12626-suche-c-befehl-fuer-clearscreen.html
Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken
Weitere Beiträge aus dem Forum Junggesellschaft Equord von 1893
Zukünftige Nachnamen - gepostet von Plumoroso am Dienstag 19.09.2006
Quizfrage Vol. 5 - gepostet von Der Kühlschrank am Donnerstag 10.05.2007
1:0 in München...ist das die wende? - gepostet von schranzo am Mittwoch 08.11.2006
Bundesligatippspiel - gepostet von Der Kühlschrank am Dienstag 13.02.2007
Schützenfestmusik 2007 - Wer macht sie? - gepostet von Der Kühlschrank am Mittwoch 18.04.2007
JG-Pokal 2008 - gepostet von Kühlschrank am Mittwoch 05.03.2008
Herta Equord Saisonplanung 07/08 - gepostet von Plumoroso am Mittwoch 23.05.2007
Was ist passiert?? - gepostet von Der Kühlschrank am Mittwoch 01.03.2006
Funny Pic threat - gepostet von betanova am Sonntag 16.07.2006
Ähnliche Beiträge wie "Schon wieder was ernstes!"
Gefällt euch die Leitung der Ally - Beer18 (Samstag 21.01.2006)
will in eure ally wechseln - Anonymous (Samstag 27.01.2007)
Verlassen der Ally - Crisher (Mittwoch 08.08.2007)
Keine Ally mehr - willhelm (Samstag 28.10.2006)
Ally - Anonymous (Sonntag 02.04.2006)
Ideen für die Ally-Zukunft - fawkes (Freitag 02.06.2006)
lord Caos Ally: SPQR - Gor (Montag 19.02.2007)
ally flotte? - Mik (Sonntag 24.07.2005)
Titan Panel - Tolina (Montag 04.09.2006)
Ally umbenennung - soliver (Freitag 29.12.2006)