Aktuell: Richtige Schleife wählen?; Alt: Fehlerquelle gesucht
-
Guten Abend Kn4ck3r,
danke für die Tipps, werde es mir merken.
Wieso werden mir der Einrückstil Probleme machen? Wird es dann zu unübersichtlich?
-
ja, und hier hat dir dein Stil schon Probleme gemacht:
http://www.c-plusplus.net/forum/p2395021#2395021
Wenn richtig eingerückt wäre, wär dir sicherlich ohne nachzufragen aufgefallen, was an dem Code nicht stimmen kann.
-
Ok passt danke dir.
Dann werde ich mir mal die Stile der anderen User hier ansehen

Und dann werd ich mich an Array setzen.lg und schönen abend noch
-
So habe mich bisschen in array eingearbeitet und zu Beginn einmal das 1x1 geschrieben. Habe dabei auch auf einen ordentlicheren Stil geachtet, wobei ich es ohne Einrückungen unübersichtlicher finde? Was meint ihr oder würdet ihr mir ein kurzes Bsp. geben?
Danke/* main.cpp */ #include <iostream> using namespace std; int zaehler [] = {1, 1}; int zaehlerEins, zaehlerZwei; int main() { for ( zaehlerEins = zaehler[0] ; zaehlerEins <=10; zaehlerEins++) { for (zaehlerZwei = zaehler[1] ; zaehlerZwei <= 10; zaehlerZwei++) { cout << zaehlerEins << " * " << zaehlerZwei << endl; } } cin.clear(); cin.ignore(cin.rdbuf()->in_avail()); cin.get(); return 0; }
-
#include <iostream> #include <array> using namespace std; int main() { std::array<int, 2> zaehler = {1, 1}; for(int zaehlerEins = zaehler[0]; zaehlerEins <=10; zaehlerEins++) { for (int zaehlerZwei = zaehler[1]; zaehlerZwei <= 10; zaehlerZwei++) { cout << zaehlerEins << " * " << zaehlerZwei << endl; } } cin.clear(); cin.ignore(cin.rdbuf()->in_avail()); cin.get(); return 0; }Das Array ist eigentlich hier unsinnig, aber du wolltest ja etwas mit Arrays machen, deshalb hab ich das mal stehen lassen und in ein std::array umgeschrieben.
Die globalen Variablen habe ich in die main-Funktion eingefügt, sowie die Zählervariablen direkt im Kopf der for-Schleife definiert.
Als letzes habe ich den Code noch sauber eingerückt.
Ich hoffe das Beispiel hier hilft dir, wenn du es mit deinem Code vergleichst.
-
Hey, frohe Ostern allerseits

Top, danke dir patrick dass du dir die Mühe und Zeit genommen hast : )
Jetzt ist es auf jedenfall übersichtlicher und ich werde meine Codes in Zukunft anhand dieses Beispieles strukturieren.
Hehe, dass es unsinnig ist dachte ich mir
Wollte es einfach mal ausprobieren und anhand dieses Bsp. schauen ob ich es verstehe.
Was könnte ich denn noch für Übungen zu diesem Thema machen? Habt ihr Vorschläge? Werde mal googeln ob es Aufgaben gibt denne ich gewachsen bin
Und kennt jemand dieses C++ - Lernen und professionell anwenden | ISBN: 3826691954 Buch? Wenn ja würde ich mich freuen eure Meinung dazu zu hören. Habe vor es naechste Woche zu bestellen.
EDIT: Habe eher den Bücher Thread gefunden

lg
-
Con5ti schrieb:
Guten Abend Kn4ck3r,
danke für die Tipps, werde es mir merken.
Wieso werden mir der Einrückstil Probleme machen? Wird es dann zu unübersichtlich?Lies mal fremden Code.
-
Du könntest als übung dein 1x1 ausbauen. Mit Arrays.
Erst schreibst du alles Ergebnisse in ein Array.
Wenn das gemacht ist, erstellst du anhand des Arrays eine Ausgabe die ca so aussieht:x 1 2 3 4 5 1 1 2 3 4 5 2 2 4 6 8 10 3 3 6 9 12 15 4 4 8 12 16 20 5 5 10 15 20 25Damit übst du noch mal Schleifen und Arrays.
Außerdem hast du etwas Denkarbeit mit den Leerzeichen damit es gut aussieht.
-
Danke für die Aufgabe Sqwan. hatte leider in den letzten Tagen nicht viel Zeit und konnte daher nicht wirklich üben

Habe mir mal ein bisschen den Kopf zerbrochen wie man diese Aufgabe lösen könnte.Zuerst einmal ein mehrdimensionales array erstellen.
Dieses haette ich unter: Faktoren[5][5] = {1}{1} ,initialisiert.
Dadurch haette ich ja dann als Anfangswert 1 und das Array koennte 5 Werte speichern.Dannach noch zwei weitere Variablen, zaehlerEins und zaehlerZwei, welche ich in eine Formel zur Berechnung des Produktes nehme.
Zwei Schleifen, einmal zaehlerEins++, wobei zaehlerEins = 1 und <=5, das selbe nocheinmal für zaehlerZwei.
Dann eine Formel zur Berechnung des Produktes aufstellen.
Jetzt haette ich schon Einmal das Ergebnis wenn das stimmen würde.. . Ist das der richtige Weg?
Bin noch am überlegen wie ich die Ausgabe hinbekomme...
Evtl. das er mir zuerst zaehlerEins++ x zaehlerZwei und deren Produkt ausgibt und dann das selbe nocheinmal mit zaehlerZwei++. Is nur mal meine Theorie, ob das hinauen sollte werde ich dann sehen
-
Der Anfang hört sich garnicht schlecht an.
Am Ende mit der Ausgabe komme ich leider nicht so ganz mit.
Ich erwarte gespannt dein Ergebnis
-
Soo, den Anfang habe ich gemeistert(Glaube ich zumindest)

Doch mit der erfolgreichen Ausgabe in einer Tabelle komme ich nicht zurecht.
Gibt es einen Befehl, der mir erlaubt, dass nur eine maximale Anzahl an Variablen pro Zeile ausgegeben werden dürfen? Das wäre meine einzige Idee irgendwie auf das "tabellenformat" zu kommen...lg Consti
#include <iostream> #include <array> using namespace std; int main() { int faktoren[5][5] = {1}; //Hier initialisiere ich ein Mehrdimensionales Array mit dem Anfangswert 1 . Zuerst hatte ich fakoren[5][5] = {1}{1} stehen, int zaehlerEins, zaehlerZwei; //da ich dachte zwei Anfangswerte zu nehmen. Durch die Fehlermeldung habe ich es dann geändert. int produkt; //produkt, zaehlerEins und zaehlerZwei initialisiert. Brauche ich überhaupt die Variable "produkt"? for(zaehlerEins = 1; zaehlerEins <= 5 ; zaehlerEins++) { for(zaehlerZwei = 1 ; zaehlerZwei <= 5; zaehlerZwei++) { produkt = faktoren[zaehlerEins][zaehlerZwei] = zaehlerEins * zaehlerZwei; // So... hier dir Formel zur berechnung des Ergebnis. cout << produkt << endl; // Hier gebe ich das produkt aus, doch leider nur ein einfacher Ausgabe untereinander. Wie kann ich es in einer Tabelle ausgeben? } //Gibt es einen Befehl, der mir erlaubt, dass nur eine maximale Anzahl an Variablen pro Zeile ausgegeben werden dürfen? Das wäre meine einzige Idee irgendwie auf das "tabellenformat" zu kommen... } cin.clear(); cin.ignore(cin.rdbuf()->in_avail()); cin.get(); return 0; }
-
Dafür gibt es die Stream-Manipulatoren. Hier ist eine Liste: http://www.cplusplus.com/reference/iomanip/
Welcher passt wohl dafür?Zum Code:
Sieh dir den Code an und behalte dabei die Regel "Variablen immer so spät wie nötig deklarieren". Merkst du etwas?Zur Variable produkt:
Die überschreibst du jeden Durchlauf. Da du sie nur beschreibst und nie liest, brauchst du sie nicht. Siehe auch http://de.wikipedia.org/wiki/Write-Only-Memory
-
Danke patrick für die Links. War sehr Hilfreich

Ich tendiere jetzt zu setfill() und setw().
Mit setfill koennte ich ja Leerzeichen einfügen. setw() würde mir das selbe Ergebnis leifern da ich ja den Zeichenabstand festlegen kann?
Noch ganz Klar ist es mir noch nicht...Zu: "Variablen immer so spät wie nötig deklarieren".
Ich hatte sie immer am Anfang deklariert, da es für mich einfacher war nichts zu vergessen. Aber jetzt wo du es sagst, ist es natürlich sinnvoller die Variablen erst dort zu deklarieren wo man sie wirklich benötigt. Um z.B. keine unnötigen Variablen wie "produkt" zu deklarieren
-
Gibt es einen Befehl, der mir erlaubt, dass nur eine maximale Anzahl an Variablen pro Zeile ausgegeben werden dürfen? Das wäre meine einzige Idee irgendwie auf das "tabellenformat" zu kommen...
Habe den link nur kurz überflogen.
Um schleifen zu lernen solltest du jedoch mal nachdenken wie du es schaffen könntest deine Tabelle mit einer zusätzlichen Schleife zu erstellen.Sicher ist das dann nicht die effizienteste Variante. Aber die für den Lernerfolg beste denke ich.
-
Zu setfill und setw, diese beiden Manipulatoren spielen zusammen. Hier das Beispiel aus der Dokumentation zu setfill (http://www.cplusplus.com/reference/iomanip/setfill/):
// setfill example #include <iostream> // std::cout, std::endl #include <iomanip> // std::setfill, std::setw int main () { std::cout << std::setfill ('x') << std::setw (10); std::cout << 77 << std::endl; return 0; }Ausgabe: xxxxxxxx77
Hier werden setfill und setw zusammen verwendet. setfill sagt welche Zeichen zum Auffüllen verwendet werden und setw sagt wie viele Zeichen maximal aufgefüllt werden sollen. Die Ausgabe ist 2 Zeichen breit, setw setzt die Breite auf 10 und setfill sagt, dass die verbleibenden 8 Zeichen mit 'x' aufgefüllt werden sollen. Standard ist das Leerzeichen.
Natürlich kannst du dir das auch selber zusammenbauen, warum aber sollte man die Möglichkeiten der STL nicht benutzen
