Programieren

Neue Frage »

Auf diesen Beitrag antworten »
info ( beste ) Programieren

Hallo leute ich poste mal eine Aufgabe zum üben:

Es ist ein Programm zu erstellen, welche Datentypen
int, double, bool, char und string
je eine Größe von Tastatur einliest und diese danach am Bildschirm wieder ausgibt. Wählen Sie
dabei für jeden Typ geeignete Manipulatoren zur Darstellung der Ausgabe am Bildschirm. Jeder der
Manipulatoren soll wenigstens einmal verwendet werden.
Testen sie auch, was bei der Eingabe unzulässiger Zeichen passiert?
Hinweis zur Gestaltung der Ausgabe:
Die Ausgabe einer Größe kann durch folgende Manipulatoren verbessert werden:
setw(int n) Die nächste auszugebende Größe wird in ein Feld der Breite (mindestens) n geschrieben
right Die auszugebende Größe wird in das Feld rechtsbündig geschrieben (default)
left Die auszugebende Größe wird in das Feld linksbündig geschrieben
setprecision(int n) Die auszugebende Gleitpunktzahl hat (maximal) n Stellen Genauigkeit
fixed Die auszugebende Gleitpunktzahl hat genau n Nachkommastellen (von setprecision)
endl Neue Zeile
Erforderlich ist hierfür die Direktive #include <iomanip>. Weitere Manipulatoren finden sich in der Literatur.
Die Manipulatoren müssen vor der auszugebenden Größe erscheinen.
Beispiel:
betrag1=1.2;
betrag2=1.23456;
cout << setprecision(2)<<fixed<<setw(6)<<betrag1<< setprecision(4)<<setw(8)<<betrag2<<endl;
cout<<setw(6)<<left<<12<<setw(6)<<right<<13<<endl;
Ergebnis:
1.20 1.2346
12 13


Am anfang wäre ich schon für tips dankbar.
 
Auf diesen Beitrag antworten »
Karlito

http://www.c-plusplus.de/forum/309118-full
Auf diesen Beitrag antworten »
info

Naja danke , aber ich wollte irgendwie selber drauf kommen .

Die lösung hilft mir ja nicht viel.
Auf diesen Beitrag antworten »
Karlito

Find ich gut, mach mal einen Vorschlag oder stelle konkrete Fragen...

VG,

Karlito
 
Auf diesen Beitrag antworten »
info

#include <cstdlib>
#include <iostream>
#include <iomanip>

using namespace std;



int main()
{

int Zahl1;

int Zahl2;

cout << "Geben sie eine Zahl ein !" << "Zahl1" <<endl;

cout << " Geben sie eine zweite Zahl ein "" << " Zahl2 " << endl;

cin>> Zahl;

cout << setw(5) << right <<showpos << Zahl1 << dec << endl;

cout << setw(5) << left <<showpos << Zahl1 << dec << endl;




system("PAUSE");
return EXIT_SUCCESS;
return 0;
}
Auf diesen Beitrag antworten »
eulerscheZahl

Das ist so nicht lauffähig:
cout << "Geben sie eine Zahl ein !" << "Zahl1" <<endl;
Was soll das sein? Einlesen von Zahl1 geht mit
cin >> Zahl1;

Das 2. cout ist noch verkehrter, da einmal " zuviel

cin>> Zahl;
Die Variable Zahl wurde nirgends definiert.
Auf diesen Beitrag antworten »
info

Ich hab es mittlerweile so das es läuft:

#include <cstdlib>
#include <iostream>
#include <iomanip>

using namespace std;



int main()
{

int Zahl1;

int Zahl2;





cout << "Geben sie eine Zahl ein !" << endl;

cin>> Zahl1;

cout << " Geben sie eine zweite Zahl ein! "<< endl;

cin>> Zahl2;





cout << setw(5) << right <<showpos << Zahl1 << dec << endl;

cout << setw(5) << left <<showpos << Zahl2 << dec << endl;




system("PAUSE");

return 0;
}


Jetzt müsste ich ein programm mit double erstellen oder?
Auf diesen Beitrag antworten »
eulerscheZahl

Zitat:
Es ist ein Programm zu erstellen, welche Datentypen
int, double, bool, char und string
je eine Größe von Tastatur einliest und diese danach am Bildschirm wieder ausgibt.

Dann fang' mal an, viel ist es ja nicht!
Auf diesen Beitrag antworten »
info

Hey leute ich hab bisschen rumprobiert und mein code funktioniert auch soweit.

Jetzt wollte ich mein summiertes ergebnis rechtsbündig nazeigen in einer neuen Zeile .

Ich habs auch irgendwie in meinem code eingegeben , aber das programm macht nichts.

#include <iostream>
#include <iomanip>
using namespace std;



int main() {

double nummer1 = 0;

double nummer2= 0;







std::cout << "Geben sie die erste Zahl an mit der die zweite addiert werden soll an !" << std::endl;

std::cin >> nummer1;

std::cout << "Geben sie die zweite Zahl an !"<< std::endl;

std::cin >> nummer2;

std::cout << "Die Summe von den zwei Zahlen ist" << " " << nummer1+nummer2 << endl << setw(4) << right <<std::endl;









return 0;
}
Auf diesen Beitrag antworten »
eulerscheZahl

Du musst ja auch erst die Eigenschaften festlegen und dann die Zahl ausgeben.
Mit setw() bestimmst du, wie viel Platz insgesamt verbraucht werden soll.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
#include <iostream>
#include <iomanip>
using namespace std;

int main() 
{
	double nummer1 = 0;
	double nummer2 = 0;
	cout << "Geben sie die erste Zahl an mit der die zweite addiert werden soll an !" << endl;
	cin >> nummer1;
	cout << "Geben sie die zweite Zahl an !"<< endl;
	cin >> nummer2;
	cout << "Die Summe von den zwei Zahlen ist:\n" << setw(10) << right  << nummer1+nummer2 <<endl;
	system("PAUSE");
	return 0;
} 
Auf diesen Beitrag antworten »
info

Ok leute ich hatte mich jetzt an bool dran gehängt , aber mein programm zeigt wieder mal Fehler an.

Ich hab auch gleichzeitig versucht mit string zu arbeiten.

Hab versucht mit büchern zu arbeiten.

SInd aber immer noch Fehler drin leider.

#include <iostream>
#include <iomanip >
#include< stringh >
using namespace std;

int main() {
string s1 = "Geben sie eine Zahl zwischen 1 bis 100 an!";

cin >> s1;

bool bedingung = true;

if(s1>= 100){

bedingung = true;

cout <<setprecision(2)<<fixed<<setw(6)<< right << s1 << endl;

else() {
bedingung = false;

cout << " Die angegebene Zahl ist zu gross!"<< endl;
}
}


return 0;
}
Auf diesen Beitrag antworten »
eulerscheZahl

Etwas mehr Mühe kannst du dir dann duch geben: wenn ich die Zeilen in VisualStudio2010 kopiere, kriege ich direkt Fehlermeldungen, Kompilieren ist nicht möglich.
Syntaxfehler: (Nummer, Beschreibung, Zeile, Spalte)
code:
1:
2:
3:
4:
5:
1	IntelliSense: Die Datei "Quelle" kann nicht geöffnet werden: "stringh".	3	1
2	IntelliSense: Kein ">>"-Operator stimmt mit diesen Operanden überein.	9	5
3	IntelliSense: Kein ">="-Operator stimmt mit diesen Operanden überein.	13	6
4	IntelliSense: Kein "<<"-Operator stimmt mit diesen Operanden überein.	17	48
5	IntelliSense: Es wurde eine Anweisung erwartet. 	  		19	1

Gründe sind:
1. string //ohne h
2. weil #include <string> fehlte
wenn ich mir den weiteren Verlauf des Programms ansehe, macht ein string hier aber keinen Sinn
3. string>=100 ergibt entsprechend auch keinen Sinn, wie soll man so verschiedene Datentypen vergleichen?
4. weil #include <string> fehlte
5. if (Bedingung) { ...else() { ... } ... }
seltsames Konstrukt, richtig wäre: if (Bedingung) { ... } else { ... }

Zum Sinn:
Wenn du "Geben sie eine Zahl zwischen 1 bis 100 an!" ausgeben willst, brauchst du auch ein cout.
Was du mir der Variable "bedingung" bezweckst, erschließt sich mir nicht.
Auf diesen Beitrag antworten »
info

Ja ich wollte Geben sie eine.... als string ausgeben ,

daher hatte ich das cout weggelassen.

Wie würde ich denn eine ausgabe mittels string ausgeben.
Auf diesen Beitrag antworten »
info

Mein programm sieht jetzt so aus:

#include <iostream>
#include <iomanip >
#include< string >
using namespace std;

int main() {
string s1 = "Geben sie eine Zahl zwischen 1 bis 100 an!";

cin >> s1;

bool bedingung = true;

if(bedingung>= 100){

bedingung = true;

cout <<setprecision(2)<<fixed<<setw(6)<< right << s1 << endl;

else() {
bedingung = false;

cout << " Die angegebene Zahl ist zu gross!"<< endl;
}
}


return 0;
}


Es funktioniert leider immer noch leider nicht .

Mir wird ein fehler für diese Zeile angezeigt:

cout <<setprecision(2)<<fixed<<setw(6)<< right << s1 << endl;


Nur so ne nebenfrage ist es nicht egal wie ich mein bool nenne ?

Ich hab es einfach bedingung genannt.

Wäre eigentlich die idee die ich bei diesem programm hatte für die Aufgabe in ordnung?
Auf diesen Beitrag antworten »
eulerscheZahl

Zitat:
Original von info
Es funktioniert leider immer noch leider nicht .

Weil du nicht auf das eingehst, was ich dir geschrieben habe.
Lassen wir mal beiseite, dass das Programm nicht machen wird, was du von ihm willst und kümmern uns um den syntaktischen Unfug:
Die Ausgabe mit cout << ... ist so ok.
Das eigentliche Problem hatte ich in meinem letzten Beitrag unter Punkt 5 schon benannt.
Auf diesen Beitrag antworten »
info

Aha das habe ich soweit korrigiert .

Jetzt wird mir irgendein Fehler wegen string angezeigt , den verstehe ich nicht.

#include <iostream>
#include <iomanip >
#include< string >
using namespace std;

int main() {
string s1 = "Geben sie eine Zahl zwischen 1 bis 100 an!";

cin >> s1;

bool bedingung = true;

if(bedingung>= 100){

bedingung = true;

cout <<setprecision(2)<<fixed<<setw(6)<< right << s1 << endl;

}

else() {
bedingung = false;

cout << " Die angegebene Zahl ist zu gross!"<< endl;

}


return 0;
}
Auf diesen Beitrag antworten »
eulerscheZahl

Hast du nicht.
Nach else kommen keine runden Klammern
Auf diesen Beitrag antworten »
info

Habs jetzt so stehen . Funzt aber immer noch nicht.

Man die fehler zu finden ist für Anfänger echt schwer.

#include <iostream>
#include <iomanip >
#include< string >
using namespace std;

int main() {
string s1 = "Geben sie eine Zahl zwischen 1 bis 100 an!";

cin >> s1;

bool bedingung = true;

if(bedingung>= 100){

bedingung = true;

cout <<setprecision(2)<<fixed<<setw(6)<< right << s1 << endl;

}

else {
bedingung = false;

cout << " Die angegebene Zahl ist zu gross!"<< endl;

}


return 0;
}
Auf diesen Beitrag antworten »
eulerscheZahl

Aber es lässt sich kompilieren smile
Nun zum Inhalt:
Wenn du die Zahl unbedingt als string einlesen willst, meinetwegen.
code:
1:
2:
3:
4:
5:
	string s1;
	int zahl;
	cout << "Geben sie eine Zahl zwischen 1 bis 100 an!  ";
	cin >> s1;
	zahl = atoi(s1.c_str());

atoi (ASCII to integer) macht dir eine Zahl aus einem char-Array.
c_str() erstellt dir aus dem string das entsprechende Array.

Die boolsche Variable bedingung bitte ich zu entfernen, da sie keinen Sinn ergibt.
Jetzt können wir nämlich zahl für die Abfrage verwenden.
Auf diesen Beitrag antworten »
Info

Bei mir bei eclipse kompiliertes leider nicht . Weißt du woran der Fehler liegt?
Auf diesen Beitrag antworten »
eulerscheZahl

Ich kriege eine Warnung: Warnung warning C4804: '>=': unsichere Verwendung des Typs 'bool' in einer Operation (Zeile 34)

Würde mich nicht wundern, wenn es an if(bedingung>= 100) liegt.
Demnach würde z.B. if(true) funktionieren.

Falls es das nicht war, bitte ich um die genaue Fehlermeldung.
Auf diesen Beitrag antworten »
info

Description Resource Path Location Type
Function 'setprecision' could not be resolved main.cpp.cpp /main.cpp/src line 25 Semantic Error

Description Resource Path Location Type
Function 'setw' could not be resolved main.cpp.cpp /main.cpp/src line 25 Semantic Error

Description Resource Path Location Type
Invalid overload of 'endl' main.cpp.cpp /main.cpp/src line 25 Semantic Error

Description Resource Path Location Type
schwerwiegender Fehler: string : No such file or directory main.cpp.cpp /main.cpp/src line 11 C/C++ Problem


Das sind die Fehler die ich nicht nachvollziehen kann.
Auf diesen Beitrag antworten »
eulerscheZahl

Hmm..
Klingt, als würde er #include <string> nicht finden, aber die Zeilenangabe passt nicht zur Fehlermeldung.

Kannst du das ausführen:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
#include <iostream>
#include <iomanip >
#include< string >
using namespace std;

int main() 
{
	string s1;
	cout << "Geben sie eine Zahl zwischen 1 bis 100 an!  ";
	cin >> s1;
	cout << setprecision(2) << fixed << setw(6) << right << s1 << endl;
	system("PAUSE");
	return 0;
}
Auf diesen Beitrag antworten »
info

funktioniert leider auch nicht .

Vielleicht liegts auch an eclipse welche ide benutzt du?
Das Programm scheint string nicht zu finden.
Auf diesen Beitrag antworten »
eulerscheZahl

Ich habe Visual Studio 2010 Ultimate, da ich über die Hochschule kostenlos rankam.

Die Expressversion sollte auch reichen, erfordert aber eine kostenlose Registierung bei Microsoft.


Mit Eclipse kenne ich mich nicht aus, aber prinzipiell sollte es da auch möglich sein, das zum Laufen zu bringen.
Auf diesen Beitrag antworten »
info

Ich hab mir jetzt visiual studio geholt aber da scheint es auch nicht zu funktionieren komisch .

Egal lassen wir es dann und erstellen ein neues Programm mit boole.

Hast du paar tips für mich was für ein programm ich mit boole erstellen soll?
Auf diesen Beitrag antworten »
eulerscheZahl

Der Variablentyp heißt bool.
Und nein, mir fällt dazu gerade keine Aufgabe ein.
Auf diesen Beitrag antworten »
info

hey eulersche Zahl,

jetzt funzt es bei mir bei eclipse, habe das string weggelassen

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
int Zahl;

cout << "Geben sie eine Zahl zwischen 1 bis 100 an!";

cin >> Zahl;

bool bedingung = true;

if(bedingung>= 100){

bedingung = true;

cout <<setprecision(2)<<fixed<<setw(6)<< left << Zahl << endl;

}

else {
bedingung = false;

cout << " Die angegebene Zahl ist zu gross!"<< endl;

}


return 0;
}

Aber das problem ist wenn ich auch ne kleinere Zahl als 100 eingebe kommt die Meldung dass die Zahl zu gross ist.

Habe ich einen fehler im code?
Auf diesen Beitrag antworten »
eulerscheZahl

Ja, das #include <string> ist zum Einlesen von strings.

Warum du immer die Meldung kriegst, dass die Zahl zu groß ist, ist glaube ich vom Compiler abhängig:

bool bedingung = true;
if(bedingung>= 100) {...}

true wird meist mit 1 gleichgesetzt, es ist aber alles außer 0 =true.
Somit: if (1 >=100) {...}
ist natürlich nicht erfüllt.

Versuche mal:
if (Zahl >= 1 && Zahl <= 100)
Auf diesen Beitrag antworten »
info

cool danke jetzt funktionierts.

Aber du musst mr irgendwie jetzt wenn es geht kurz erklären wie ich jetzt mit string arbeiten soll.

Damit es auch funktioniert?
Auf diesen Beitrag antworten »
eulerscheZahl

Es klappt bei dir noch nicht alles: Wenn die Zahl <= 0 ist, bekommst du die Meldung, die Zahl sei zu groß, obwohl sie zu klein ist.

Mit string sieht das dann so aus:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

int main() 
{
	string s1;
	int Zahl;
	cout << "Geben Sie eine Zahl zwischen 1 bis 100 an!  ";
	cin >> s1;
	Zahl = atoi(s1.c_str());
	if(Zahl >= 1 && Zahl <= 100)
		cout << setprecision(2) << fixed << setw(6) << right << s1 << endl;
	else if(Zahl < 1)
		cout << " Die angegebene Zahl ist zu klein!" << endl;
	else
		cout << " Die angegebene Zahl ist zu gross!" << endl;
	system("PAUSE");
	return 0;
}
Auf diesen Beitrag antworten »
info

Naja leider scheint das programm mit string nicht zu funktioieren.

Aber ok das Prinzip habe ich aber verstanden.
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »