geschachtelte schleifen
-
noobLolo schrieb:
nwp2 schrieb:
Mit einer ordentlichen Einrückung und ein paar Kommentaren sieht man das auch leichter.
damit meinst aber nicht den blocksatz von dir oder?
die {'s in der gleichen zeile wie der beginn der anweisung kann er auch nicht meinen *fg*
-
Ich wollte erst noch schreiben dass die Meinungen über ordentlichen Stil auseinandergehen. Hätte ich mal machen sollen. Jedenfalls, Anweisungen die in derselben "Schleifentiefe" stehen sollten gleich eingerückt sein. Was mit Blocksatz gemeint ist weiß ich nicht.
Übrigens kann man sowas auch vom Rechner machen lassen, AStyle kann sowas, Code::Blocks hat es als Plugin drin.
-
nwp2 schrieb:
Was mit Blocksatz gemeint ist weiß ich nicht.
ich hab nix gegen deinen stil nur gegen diese mit kommentaren zu gestopften zeilen die sich lesen wie buch seiten.
um es dir mal ohne farbe zu zeigen hab ichs mal in [code] gepackt stell dir vor ich hätt keine...blocksatz
#include <stdio.h> int main(){ int i, j, Zahl=1; //i ist die Zeile, j ist die Zahlennummer in jeder Zeile for (i = 1; i <= 11; i++){ //wir gehen durch die Zeilen und machen in jeder for (j = 1; j <= 10; j++) printf ("%4i", Zahl++); //wir geben 10 mal printf ("\n"); //nach der Zeile kommt ein newline Zeichen, quasi ein Enter } return 0; }
kein blocksatz
#include <stdio.h> int main(){ int i, j, Zahl=1; for (i = 1; i <= 11; i++){ for (j = 1; j <= 10; j++) printf ("%4i", Zahl++); printf ("\n"); } return 0; }
-
nwp2 schrieb:
Ich wollte erst noch schreiben dass die Meinungen über ordentlichen Stil auseinandergehen. Hätte ich mal machen sollen. Jedenfalls, Anweisungen die in derselben "Schleifentiefe" stehen sollten gleich eingerückt sein. Was mit Blocksatz gemeint ist weiß ich nicht.
Übrigens kann man sowas auch vom Rechner machen lassen, AStyle kann sowas, Code::Blocks hat es als Plugin drin.Du tust immer so, als wärst du der Größte, aber vielleicht solltest du mehr Energie dafür aufwenden es zu sein? Das gelingt dir nämlich in keinster Weise!
Die Einrückung vom OP ist absolut in Ordnung und lesbar. Solltest du das nicht so sehen, dann hast du einfach noch weniger Ahnung, als ohnehin schon bekannt. Der Einzig schlecht eingerückte Code ist deiner!
-
btw. glaubst du das jemand der nicht weiß dass
printf ("\n");
ne neue zeile ausgibt den code dadurch versteht?
//nach der Zeile kommt ein newline Zeichen, quasi ein Enter
-
Ja, wenn jemand C als erste Sprache lernt und Beispiele aus Wikipedia kopiert und versucht ihn zu verstehen und fragt wie eine for-Schleife funktioniert, dann denke ich dass die Möglichkeit besteht, dass man mit printf("\n") nichts anfangen kann. Ein "Enter" ist etwas, was auch meine Oma versteht, weil es auf der Tastatur steht. Und wenn nicht fragt man halt nochmal nach.
Aber es war natürlich ins Blaue geraten, vielleicht weiß er das ja schon, vielleicht ist er nichtmal ein er, war auch nur geraten. Wenn die Zeile umsonst war schadet sie nichts, wenn sie hilft hilft sie viel, dachte ich jedenfalls in meinem Leichtsinn.Aber gut, ich bin auch lernfähig, vielleicht sollte ich den Code nicht mit Kommentaren pflastern und stattdessen neue Zeilen nehmen oder so, war mir bisher nicht bewusst dass jemand damit ein Problem hat.
Wenn ihr mich alle so schrecklich findet gehe ich auch wieder, will mich ja nicht übermäßig aufdrängen.
-
nwp2 schrieb:
Wenn ihr mich alle so schrecklich findet gehe ich auch wieder, will mich ja nicht übermäßig aufdrängen.
Ich habe nichts gegen dich, aber deine Art Dinge auszudrücken kommt zumindest bei mir meistens nicht sonderlich gut an.
-
nwp2 schrieb:
Wenn die Zeile umsonst war schadet sie nichts
falsch, denn es macht den text unleserlich und kostet dich zeit...
nwp2 schrieb:
Wenn ihr mich alle so schrecklich findet gehe ich auch wieder, will mich ja nicht übermäßig aufdrängen.
mach dir nicht die action mit 10.000 kommentaren wenns jemand nicht checkt dann sagt er es dir schon
-
Was ein newline ist und dass Zahl++ eines dazu bedeutet ist mir schon klar.
Aber warum wurde das mit Zahl++ gelöst.
Ich verstehe die Logik hinter dem Code-Beispiel eben nicht.
Was wird hier wie Mal gerechnet?#include <stdio.h> int main() { int i, j, k; for (i = 1; i <= 11; i++) { { for (j = 1; j <= 10; j++) { printf ("%4i", i * j); } } printf ("\n"); } return 0; }
So verstehe ich es schon etwas besser. (Die Klammern sind für das bessere Verständnis für mich)
for (i = 1; i <= 11; i++)
Bedeutet doch, gebe i 1, zähle bis 11 und zähle eins zu i hinzu solange i unter oder gleich 11 ist.
Was macht der Computer dann intern?
Schreibt er 1, 2, 3, 4, 5, 6, 7, 8, 9, 10?Die innere schleife macht dann was?
for (j = 1; j <= 10; j++)
Definiere j mit 1, zähle bis unter 10 und addiere jeweils eins zu j.
printf ("%4i", i * j);
Drucke i * j ...
Rechnet der dann so:
1 (1 * 1) (2 * 1)
2
3
4
5
6
7
8
9
10
11 (1 * 11) (...) (10 * 11)
Innere schleife * äußerer schleifeTut mir leid wenn das eigentlich logisch wäre, ich verstehe es nur nicht.
-
#include <stdio.h> int main() { int i, j, k; for (i = 1; i <= 11; i++) { for (j = 1; j <= 10; j++) { printf ("%4i", i * j); } printf ("\n"); } return 0; }
denke jetzt haben wir bald alle stile durch
for(i = 1; i <= 11; i++)
1. setze i = 1 2. wenn ja .- teste ob i kleiner gleich 11 <----. wenn nein -. 3. '-> führe den schleifen körper aus | | 4. erhöhe i um eins | | 5. gehe zu schritt 2 ----------------' | 6. loop ende <------------------------------------'
hoffe das ist jetzt nicht zu verwirrend