
- 1
- 2

c++ übungen
Hallo zusammen,
in meiner Umschulung befassen wir uns gerade mit c++, leider haben wir nur 8h in der wochen, mir macht das aber riesig spaß und versuche nebenbei schon mehr zu machen, jetzt hatte ich gegoogelt und zwar einige sachen gefunden, aber entweder war es nicht gut beschrieben oder einfach zu schwer.
Deshalb frage ich hier, wer eine Seite gut empfehlen kann, es muss nicht ein turtorial sein, es sollte nur viele übungen beeinhalten und bei der beschreibung nicht ru weit ausholen, alles was ich so schreibe mach ich mit strukturizer nochmal (fürs bessere verstehen), also wer kennt eine gute seite?
lg Armour
in meiner Umschulung befassen wir uns gerade mit c++, leider haben wir nur 8h in der wochen, mir macht das aber riesig spaß und versuche nebenbei schon mehr zu machen, jetzt hatte ich gegoogelt und zwar einige sachen gefunden, aber entweder war es nicht gut beschrieben oder einfach zu schwer.
Deshalb frage ich hier, wer eine Seite gut empfehlen kann, es muss nicht ein turtorial sein, es sollte nur viele übungen beeinhalten und bei der beschreibung nicht ru weit ausholen, alles was ich so schreibe mach ich mit strukturizer nochmal (fürs bessere verstehen), also wer kennt eine gute seite?
lg Armour
programmiert ihr schon oder zeichnet ihr nur struktogramme?
am leichtesten gehts, wenn du uns sagst was ihr stofflich schon alles behandelt habt.
seid ihr bei if, oder bei den schleifen? zeiger classen? überladene operatoren?
was könnt ihr schon, bzw. willst du üben?
lg wischi
am leichtesten gehts, wenn du uns sagst was ihr stofflich schon alles behandelt habt.
seid ihr bei if, oder bei den schleifen? zeiger classen? überladene operatoren?
was könnt ihr schon, bzw. willst du üben?
lg wischi
wischipedia - http://wischenbart.org/wwa (einfach mal vorbeischaun)
wir sind bei schleifen machen gerade nur grundlagen leider, struktogramme erstellen wir garkeine, man hat uns nur gesagt mit was das geht, hab so probleme mit den schleifen, aber übung macht den meißter deshalb fragte ich ja nach einfachen übungen mit anschließender lösung zum besseren verstehen warum und wieso das so muß.
Wie darf ich dann das verstehen?
ok mal zum starten ist mir was eingefallen (ich werd per EDIT: noch was hinzufügen wenn mir mehr einfällt. EInfach sagen ob zu leicht oder zu schwer)
Zitat
alles was ich so schreibe mach ich mit strukturizer
ok mal zum starten ist mir was eingefallen (ich werd per EDIT: noch was hinzufügen wenn mir mehr einfällt. EInfach sagen ob zu leicht oder zu schwer)
- schreibe ein prgramm (c++) lies zwei zahlen ein x und y und überprüfe ob x größer als 2 und kleiner als 75 ist und y größer als 2 und kleiner als 20
bei falscher eingabe den benutzer mit "Fehler!" darauf hinweisen und erneut um die eingabe bitten.
weiter wird mit den eingelesenen Zahlen ein rahmen gezeichnet mit der eingegeben breite x und der höhe y.
Bsp: x = 5, y=4
Quellcode
1 2 3 4
+---+ | | | | +---+
wischipedia - http://wischenbart.org/wwa (einfach mal vorbeischaun)
Moin!
Also in meiner Ausbildung damals (lang lang ist's her) haben wir mit dem Buch 'Jetzt lerne ich C++' (Addison-Wesley) gearbeitet...
Gibt da mittlerweile natürlich überarbeitete Versionen von. Da sind auf jeden fall Aufgaben (mit Lösungen) drin.
Naja, zumindest hatten wir alle ein Exemplar
Gelernt haben wir mehr durch Scripts von Universitäten. Geht etwas schneller, weil die Texte straffer sind.
Hab Dir mal eins rausgesucht: http://www.rrzn.uni-hannover.de/cplus.html
Habs nicht komplett gelesen, aber scheint ganz nett zu sein.
Und Du kannst Die einzelnen Lektionen als Pdf runterladen.
Ich selbst fand 'Thinking C++' (Prentice Hall) noch ziemlich cool. Ich habs damals im Original gelesen, gibt aber auch ne Übersetzung.
Ist zugegeben Harter Tobak, aber auch recht amüsant zu lesen. Und gibt einem ein Gefühl für objektorientierte Programmierung.
'Das Einmaleins der C++ Programmierung' (ADMOS Media) fand ich auch recht gut. Ist auch mit Aufgaben und Lösungen, aber heute schwer zu bekommen...
Naja, der Grund-Tenor ist: Kauf Dir ein Buch! (ein Pdf kann man so schlecht mit aufs Klo nehmen...
)
Wenn Du Fragen hast, einfach hier stellen... helfe gern. (Bin ein verfechter der 'echten' Sprachen
)
MfG, Marcus
Also in meiner Ausbildung damals (lang lang ist's her) haben wir mit dem Buch 'Jetzt lerne ich C++' (Addison-Wesley) gearbeitet...
Gibt da mittlerweile natürlich überarbeitete Versionen von. Da sind auf jeden fall Aufgaben (mit Lösungen) drin.
Naja, zumindest hatten wir alle ein Exemplar

Gelernt haben wir mehr durch Scripts von Universitäten. Geht etwas schneller, weil die Texte straffer sind.
Hab Dir mal eins rausgesucht: http://www.rrzn.uni-hannover.de/cplus.html
Habs nicht komplett gelesen, aber scheint ganz nett zu sein.
Und Du kannst Die einzelnen Lektionen als Pdf runterladen.
Ich selbst fand 'Thinking C++' (Prentice Hall) noch ziemlich cool. Ich habs damals im Original gelesen, gibt aber auch ne Übersetzung.
Ist zugegeben Harter Tobak, aber auch recht amüsant zu lesen. Und gibt einem ein Gefühl für objektorientierte Programmierung.
'Das Einmaleins der C++ Programmierung' (ADMOS Media) fand ich auch recht gut. Ist auch mit Aufgaben und Lösungen, aber heute schwer zu bekommen...
Naja, der Grund-Tenor ist: Kauf Dir ein Buch! (ein Pdf kann man so schlecht mit aufs Klo nehmen...
Wenn Du Fragen hast, einfach hier stellen... helfe gern. (Bin ein verfechter der 'echten' Sprachen
)MfG, Marcus
@ Marcus, danke dir, werd es mir mal ansehenWie darf ich dann das verstehen?
meinte ich so, das ich damit alles noch mache um die funktion etwas besser zu verstehen
Zitat
alles was ich so schreibe mach ich mit strukturizer
ok mal zum starten ist mir was eingefallen (ich werd per EDIT: noch was hinzufügen wenn mir mehr einfällt. EInfach sagen ob zu leicht oder zu schwer)
- schreibe ein prgramm (c++) lies zwei zahlen ein x und y und überprüfe ob x größer als 2 und kleiner als 75 ist und y größer als 2 und kleiner als 20
bei falscher eingabe den benutzer mit "Fehler!" darauf hinweisen und erneut um die eingabe bitten.
![]()
C/C++-Quelltext
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include <iostream> using namespace std; void main () { float x = 1; float y = 1; cout << "Geben Sie x und y einen Wert! \nx= "; cin >> x; cout << "\ny= "; cin >> y; if (x>2||x<75&&y>2||y<20){ cout << "x muss > 2 und < 75, sowie y > 2 und < 20 sein.\nx= " ; cin >> x; cout << "\ny= "; cin >> y; } } irgendwie ist die eingabe auch nur einmal möglich, das hab ich noch nicht hinbekommen, aber wäre so der ansatz schonmal richtig?- weiter wird mit den eingelesenen Zahlen ein rahmen gezeichnet mit der eingegeben breite x und der höhe y.
Bsp: x = 5, y=4
![]()
Quellcode
1 2 3 4 +---+ | | | | +---+- Ich komm nicht drauf damit er mir was malt, hab nicht mal einen ansatz dafür
Moin!
Ich versuch mal mich an Deine Zählung zu halten:
Zu 3.:
Der Ansatz ist schon nicht sooo schlecht.... aber
-
if (x>2||x<75&&y>2||y<20) --> bedeutet 'wenn x größer 2 oder x kleiner 75...etc.'
Du möchtest aber: 'wenn x>2 UND x<75...etc.' also --> if (x>2&&x<75&&y>2&&y<20)
-
für x und y würde auch ein int oder unsigned char reichen...
(manche Compiler geben sogar eine Warnung wenn in einem Vergleich (in deinem if) floats und ints gemischt werden.)
-
Um die Abfrage so lange zu machen, bis die Eingaben im erlaubten Bereich sind bietet sich eine Schleife an....
dann brauchst Du auch nur einmal cin>>x und cin>>y
Tip: Du kannst aus einer Schleife per 'break' ausbrechen, wenn die Bedingung erfüllt ist...
-
Zu 5.
Das Zeichnen machst Du auch wieder mit Schleifen und cout<<'+' / cout<<'-' / cout<<'|' cout<<endl
ist übrigens ein recht übliches Übungsprogramm für Schleifen
Musste da auch mal durch (allerdings damals in TurboPascal)
(Auch nett ist Tannenbäume malen...)
Habe jetzt erstmal extra nicht ne komplette Lösung geschrieben, aber für den Notfall leg ich die gerne nach.
Hoffe aber, das die Tipps reichen.
MfG, Marcus
Ich versuch mal mich an Deine Zählung zu halten:
Zu 3.:
Der Ansatz ist schon nicht sooo schlecht.... aber

-
if (x>2||x<75&&y>2||y<20) --> bedeutet 'wenn x größer 2 oder x kleiner 75...etc.'
Du möchtest aber: 'wenn x>2 UND x<75...etc.' also --> if (x>2&&x<75&&y>2&&y<20)
-
für x und y würde auch ein int oder unsigned char reichen...
(manche Compiler geben sogar eine Warnung wenn in einem Vergleich (in deinem if) floats und ints gemischt werden.)
-
Um die Abfrage so lange zu machen, bis die Eingaben im erlaubten Bereich sind bietet sich eine Schleife an....

dann brauchst Du auch nur einmal cin>>x und cin>>y
Tip: Du kannst aus einer Schleife per 'break' ausbrechen, wenn die Bedingung erfüllt ist...
-
Zu 5.
Das Zeichnen machst Du auch wieder mit Schleifen und cout<<'+' / cout<<'-' / cout<<'|' cout<<endl
ist übrigens ein recht übliches Übungsprogramm für Schleifen

Musste da auch mal durch (allerdings damals in TurboPascal)
(Auch nett ist Tannenbäume malen...)
Habe jetzt erstmal extra nicht ne komplette Lösung geschrieben, aber für den Notfall leg ich die gerne nach.
Hoffe aber, das die Tipps reichen.
MfG, Marcus
gut das erste werd ich ändern, beim zweiten dachte ich, der soll automatisch malen
aber wenn nicht weerd ichs denke hinbekommen, meld mich wenn´s probleme gibt (also bald)
das erste hab ich schonmal, hatte statt nur while eine do..while genommen und wußte nicht wo der fehler lag
jetzt hab ichs ja, das andere kommt noch:
aber wenn nicht weerd ichs denke hinbekommen, meld mich wenn´s probleme gibt (also bald)das erste hab ich schonmal, hatte statt nur while eine do..while genommen und wußte nicht wo der fehler lag
jetzt hab ichs ja, das andere kommt noch:|
|
C/C++-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <iostream> using namespace std; void main () { int x = 1; int y = 1; cout << "Geben Sie x und y einen Wert! \nx= "; cin >> x; cout << "\ny= "; cin >> y; while (x>2&&x<75&&y>2&&y<20){ cout << "x muss > 2 und < 75, sowie y > 2 und < 20 sein.\nx= " ; cin >> x; cout << "\ny= "; cin >> y; } } |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Armour« (4. Mai 2010, 13:01)
Mmmh...
So wie du es jetzt hast, ist es trotzdem bisschen viel code, da du ja die Abfrage doppelt dort stehen hast.
Wieso bist du von der do..while Schleife weggegangen?
So müsste es doch auch klappen udn du sparst code und Schreibarbeit
So wie du es jetzt hast, ist es trotzdem bisschen viel code, da du ja die Abfrage doppelt dort stehen hast.
Wieso bist du von der do..while Schleife weggegangen?
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <iostream>
using namespace std;
void main () {
int x = 1;
int y = 1;
do
{
cout << "x muss > 2 und < 75, sowie y > 2 und < 20 sein.\nx= " ;
cin >> x;
cout << "\ny= ";
cin >> y;
} while (x>2&&x<75&&y>2&&y<20);
}
|
So müsste es doch auch klappen udn du sparst code und Schreibarbeit
Moin!
Schalte mich jetzt nochmal ein, weil eure (Sowohl Meryls als auch Deine tkm) Schleifen laufen, solange die Werte im richtigen Bereich sind. Wenn man ne Wiederholung haben möchte ist das ein Weg, aber besser wäre dann 'Wollen Sie nochmal? j/n' ...
Die Idee hinter dieser ersten Schleife ist ja eigentlich, solange zu laufen BIS die Werte im richtigen Bereich sind.
(WICHTIG: Operatoren sind in C++ unheimlich wichtig - die müssen sitzen
)
Ich hänge mal eure Version, leicht angepasst an, damit Du auch noch zum Zeichnen kommst
Schalte mich jetzt nochmal ein, weil eure (Sowohl Meryls als auch Deine tkm) Schleifen laufen, solange die Werte im richtigen Bereich sind. Wenn man ne Wiederholung haben möchte ist das ein Weg, aber besser wäre dann 'Wollen Sie nochmal? j/n' ...
Die Idee hinter dieser ersten Schleife ist ja eigentlich, solange zu laufen BIS die Werte im richtigen Bereich sind.
(WICHTIG: Operatoren sind in C++ unheimlich wichtig - die müssen sitzen
)Ich hänge mal eure Version, leicht angepasst an, damit Du auch noch zum Zeichnen kommst

|
|
C/C++-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include <iostream> using namespace std; void main() { int x=0; int y=0; bool eingabeok=false; // Drei Versuche, eine ordentliche Eingabe zu bekommen. Stattdessen kann auch 'while(1)' stehen, dann endlos for(int versuche=0;versuche<3;versuche++) { cout<<"Geben Sie x und y einen Wert!\nx= "; cin>>x; cout<<"\ny= "; cin>>y; if(x>2&&x<75&&y>2&&y<20) // wenn Werte im richtigen Bereich { eingabeok=true; // Merken break; // Schleife beenden (funktioniert auch bei ner Endlos-Schleife ala 'while(1)') } else cout<<"\nFehler: x muss > 2 und < 75, sowie y > 2 und < 20 sein.\n\n" ; } if(eingabeok) { //hier kommt dann der Code zum Zeichnen.... } else cout<<"Och nee - beim 3. Mal die Regeln nich gerafft?\n"; // wird nach 3 Fehlversuchen ausgegeben (NICHT wenn 'while(1)') cout<<"\nBis danndann...."; // Wird am Ende ausgegeben } |
so ich kriegs nicht hin, ich hab echt keine ahnung wie ich anfangen soll mit der zeichnung, vielleicht würd ich die gerade noch hinbekommen, aber mit den leerstellen dann wohl nicht mehr
, ich werd nicht aufgeben, hab grad pause und versuche weiter, aber über einen kleinen tipp wäre ich ganz zufrieden 
Dachte das stimmt, aber irgendwas rechnet der da, bin denke mal total falsch oder?
, ich werd nicht aufgeben, hab grad pause und versuche weiter, aber über einen kleinen tipp wäre ich ganz zufrieden 
Dachte das stimmt, aber irgendwas rechnet der da, bin denke mal total falsch oder?
|
|
C/C++-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <iostream> using namespace std; void main () { int a; int b; do { cout << "Geben sie zwei positive Zahlen bis 10 ein!\na= " ; cin >> a; cout << "\nb= "; cin >> b; } while (a<0||a>10||b<0||b>10); cout << a*'-' << b*'+'; } |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Armour« (5. Mai 2010, 14:50)
ja der rechnet was *gg*
ein denkfehler, aber darum helfen wir ja gerne *gg* char (also ein zeichen) ist eine Zahl (0-255) welche als zeichen dargestellt wird. dass heißt wenn du folgendes machst.
cout << (int)'A' ; //C++
printf("%d",'A'); //C
dann gibt er 65 aus, denn das ist der code für ein großes A.
und bei:
cout << (char)65; //C++
printf("%c",65); //C
wenn dir printf nichts sagst hast du 2 möglichkeiten 1. ignorieren, oder 2. nachfragen :-)
achja das umwandeln von ariablen nennt sich type-casting und bei manchen sach muss man ein bissl aufpassen, aber das macht die erfahrung.
also zu deinem Problem. Zum ausgeben darsft du nicht multipizieren (also 10 mal 'A' ausgeben ist NICHT 10*'A')
sondern die widerholung des ausgebens
also
cout << 'A';
cout << 'A';
cout << 'A';
cout << 'A';
aber weil das unschön, bzw. nicht dynamisch ist schreibt man das in eine schleife.
und weil wir ja zum zeitpunkt der schleife genau wissen wie oft wir uns im kreis drehen bietet sich eine for schleife an (vergiss leute die sagen das muss man mit for machen... man kann jede schleife in eine andere umschreiben indem man ein bissl herumbastelt. Aber jede schleife eignet sich für eine bestimmte anwendung mehr oder weniger.)
also.
repeat = 10;
//1. möglichkeit
while(repeat--)
{
cout << 'A';
} // theoretisch kann man sich bei einer zeile die {} sparen
//2. möglichkeit (für programmieranfänger zu empfehlen weil leichter verständlich - mach nix was du nicht verstehst, also keinen code aus inet kopieren und einbasteln. wenn du den code verstehst ist das erlaubt *gg*
repeat = 10;
for(int i = 0;i<repeat;i++)
{
cout << 'A';
}
und der rahmen ist dann zum zeichnen ein bissl was zum überlegen, denn das werden 2 veschachtelte schleifen also in der form:
for(blabla)
{
//...da steht vlt. was
for(blabla)
{
//hier auch
}
//bla
}
lg wischi
EDIT: Achja zum float ist mir noch was aufgefallen. Info: verwende float NUR wenn du kommazahlen benötigst! und ganz wichtig float solltest du wenn du überprüfen willst ob beide inhalte gleich groß sind NIE mit == direkt überprüfen (hat gründe der rechenungenauigkeit einer CPU (lernst vielleicht später wäre jetzt du tief, aber immer dran denken) am besten die differenz bilden und schauen ob die differenz kleiner als ein schwellwert ist.
z.b:
float x,y;
//blabla
if(abs(x-y)<0.001)
{
//...blabla
}
//abs bildet den betrag der differenz, d.h aus eventuell -0.5 was ja kleiner als 0.001 ist wird 0.5 was dann nicht mehr kleiner ist. einfach mal in ruhe anschaun
ein denkfehler, aber darum helfen wir ja gerne *gg* char (also ein zeichen) ist eine Zahl (0-255) welche als zeichen dargestellt wird. dass heißt wenn du folgendes machst.
cout << (int)'A' ; //C++
printf("%d",'A'); //C
dann gibt er 65 aus, denn das ist der code für ein großes A.
und bei:
cout << (char)65; //C++
printf("%c",65); //C
wenn dir printf nichts sagst hast du 2 möglichkeiten 1. ignorieren, oder 2. nachfragen :-)
achja das umwandeln von ariablen nennt sich type-casting und bei manchen sach muss man ein bissl aufpassen, aber das macht die erfahrung.
also zu deinem Problem. Zum ausgeben darsft du nicht multipizieren (also 10 mal 'A' ausgeben ist NICHT 10*'A')
sondern die widerholung des ausgebens
also
cout << 'A';
cout << 'A';
cout << 'A';
cout << 'A';
aber weil das unschön, bzw. nicht dynamisch ist schreibt man das in eine schleife.
und weil wir ja zum zeitpunkt der schleife genau wissen wie oft wir uns im kreis drehen bietet sich eine for schleife an (vergiss leute die sagen das muss man mit for machen... man kann jede schleife in eine andere umschreiben indem man ein bissl herumbastelt. Aber jede schleife eignet sich für eine bestimmte anwendung mehr oder weniger.)
also.
repeat = 10;
//1. möglichkeit
while(repeat--)
{
cout << 'A';
} // theoretisch kann man sich bei einer zeile die {} sparen
//2. möglichkeit (für programmieranfänger zu empfehlen weil leichter verständlich - mach nix was du nicht verstehst, also keinen code aus inet kopieren und einbasteln. wenn du den code verstehst ist das erlaubt *gg*
repeat = 10;
for(int i = 0;i<repeat;i++)
{
cout << 'A';
}
und der rahmen ist dann zum zeichnen ein bissl was zum überlegen, denn das werden 2 veschachtelte schleifen also in der form:
for(blabla)
{
//...da steht vlt. was
for(blabla)
{
//hier auch
}
//bla
}
lg wischi
EDIT: Achja zum float ist mir noch was aufgefallen. Info: verwende float NUR wenn du kommazahlen benötigst! und ganz wichtig float solltest du wenn du überprüfen willst ob beide inhalte gleich groß sind NIE mit == direkt überprüfen (hat gründe der rechenungenauigkeit einer CPU (lernst vielleicht später wäre jetzt du tief, aber immer dran denken) am besten die differenz bilden und schauen ob die differenz kleiner als ein schwellwert ist.
z.b:
float x,y;
//blabla
if(abs(x-y)<0.001)
{
//...blabla
}
//abs bildet den betrag der differenz, d.h aus eventuell -0.5 was ja kleiner als 0.001 ist wird 0.5 was dann nicht mehr kleiner ist. einfach mal in ruhe anschaun
wischipedia - http://wischenbart.org/wwa (einfach mal vorbeischaun)
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »wischi« (5. Mai 2010, 18:04)
Die gerade hab ich jetzt, mal schauen wie ich die andere da rein bekomm 

|
|
C/C++-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <iostream> using namespace std; void main () { int a; int b; char c = '-'; char d = '|'; do { cout << "Geben sie zwei positive Zahlen bis 10 ein!\na= " ; cin >> a; cout << "\nb= "; cin >> b; } while (a<0||a>10||b<0||b>10); for (int x=0;x<a;x++) { cout << c ; } } |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Armour« (7. Mai 2010, 08:43)
also ich würde zu testzwecken immer davon ausgehen dass der benutzer schon die richtigen daten eingibt. denn der kern dieser übung ist nicht zu prüfen was eingegeben wurde, sondern 2 ineinander verschachtelte schleifen mit einer IF abfrage. an deiner stelle würde ich erstmal mit folgendem bild anfangen
dass du halt zunächst folgende ausgabe in der console hast. in diesem beispiel, brauchst du noch kein IF aber in deinem nächsten, da musst du prüfen ob deine x/y werte auf 0/0 stehen oder 0/breite oder höhe /0 oder höhe/breite und dann musst du überlegen ob du gerade die erste schleife durchlaufst oder die letzte für die - und | . das ganze ist halt ein wenig komplexer, desswegen versuch erstmal 2 schleifen um so ein rechteck zu erzeugen, und danach mit if abfragen das aussehen zu verändern
MFG
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 |
Bitte die Breite und Höhe eingeben! Breite : 5 Hohe : 5 ----------------------------------------- Das ergebnis: +++++ +++++ +++++ +++++ ------------------------------------------ Programm wiederholen ? (j/n) : n |
dass du halt zunächst folgende ausgabe in der console hast. in diesem beispiel, brauchst du noch kein IF aber in deinem nächsten, da musst du prüfen ob deine x/y werte auf 0/0 stehen oder 0/breite oder höhe /0 oder höhe/breite und dann musst du überlegen ob du gerade die erste schleife durchlaufst oder die letzte für die - und | . das ganze ist halt ein wenig komplexer, desswegen versuch erstmal 2 schleifen um so ein rechteck zu erzeugen, und danach mit if abfragen das aussehen zu verändern
MFG
Mein kleines Projekt
-Cruel Online-
-Cruel Online-
So, sorry das es was länger gedauert hat und es jetzt nur so aussieht als ob ich meine monatlichen PM erreichen will aber hab viel zu tun.
Ich hab das Programm soweit eigentlich hinbekommen, aber eines stört mich noch, wie kann ich ihn jetzt sagen er solle die Leerzeichen b entsprechend nehmen??
Ich hab das Programm soweit eigentlich hinbekommen, aber eines stört mich noch, wie kann ich ihn jetzt sagen er solle die Leerzeichen b entsprechend nehmen??
|
|
C/C++-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include <iostream> using namespace std; void main () { int b = 5; int h = 5; cout << "+"; for (int i=2;i<b;i++) { cout << "-"; } cout << "+" << endl; for (int o=2;o<h;o++) { cout << "|" << " " << "|" << endl; //Hier liegt mein Problem } cout << "+"; for (int i=2;i<b;i++) { cout << "-" ; } cout << "+" << endl; } |
Hallo Welt!
Hmm,
dem Quelltext nach zu urteilen hast du das System doch raus - du weist wie man eine Zeile erstellt
und hast auch bedacht das das erste und letzte Zeichen anders aussehen muss
willst du ein Viereck haben lässt du einfach eine weitere FOR-Schleife mehrere Zeilen schreiben.
Jetzt musst du nur wieder differenzieren und
Gruß
Ego
dem Quelltext nach zu urteilen hast du das System doch raus - du weist wie man eine Zeile erstellt
und hast auch bedacht das das erste und letzte Zeichen anders aussehen muss
Für eine Zeile lässt du die FOR-Schleife mehrere Zeichen hintereinander schreibeneine Zeile mit Ascii-Art
das Ergebnis von diesem Teil müsste dann ungefähr so aussehen:
![]()
C/C++-Quelltext
6 7 8 9 10 11 12 13 14 int b=5; int h=5; cout << "+"; for (int i=2;i<b;i++) { cout << "-"; } cout << "+" << endl;
+---+
willst du ein Viereck haben lässt du einfach eine weitere FOR-Schleife mehrere Zeilen schreiben.
ein Rechteck mit ASCII-Art
![]()
C/C++-Quelltext
6 7 8 9 10 11 12 13 14 15 16 17 int b=5; int h=5; for (int j=0;j<h;j++) { cout << "+"; for (int i=2;i<b;i++) { cout << "-"; } cout << "+" << endl; }
das neue Ergebnis müsste dem entsprechen:
+---+
+---+
+---+
+---+
+---+
Jetzt musst du nur wieder differenzieren und
- eine Obere Zeile schreiben lassen
- dann h-2 mittlere Zeilen (mit | statt + und [LEERZEICHEN] statt - )
- und eine untere Zeile
Lösung
![]()
![]()
hihi
![]()
![]()
![]()
das bisher geschriebene sollte ausreichen um das Problem zu lösen
Gruß
Ego
Jetzt hab ichs, einfach mal etwas logisch denken dann klappt´s auch mit dem Viereck 

|
|
C/C++-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#include <iostream> using namespace std; void main () { int b = 5; int h = 5; cout << "+"; for (int i=2;i<b;i++) { cout << "-"; } cout << "+" << endl; for (int o=2;o<h;o++) { cout << "|"; for (int i=2;i!=b;i++) { cout << " "; } cout << "|" << endl; } cout << "+"; for (int i=2;i<b;i++) { cout << "-" ; } cout << "+" << endl; } |
Ich kenn eine coole c++ seite:
http://tutorial.schornboeck.net/
(Ist im Moment down, kommt aber bald wieder!
http://tutorial.schornboeck.net/
(Ist im Moment down, kommt aber bald wieder!
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »ka6a« (18. Juni 2010, 20:24)

- 1
- 2

Ähnliche Themen
-
Film & Fernsehen »-
Schlag den Raab
(18. Januar 2009, 01:09)
-
Allgemeines Forum »-
Bundeswehr Übungen?
(1. September 2004, 19:03)
-
Allgemeines Forum »-
Deine Französisch Kenntnisse werden gebraucht !
(13. Januar 2004, 19:32)
-
Plauder Forum »-
Mein neuer Avatar
(25. September 2003, 19:56)


