PLS help!!
-
Hi also ich möchte gerne ein 2 Dimensioales Array schreiben was Mit Hilfe einer (oder 2 ist glaub ich besser) For-schleife fokgendes ausgibt
1 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0
0 0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 1Nun habe ich schon versucht etwas in der Richtung zu schreiben nur funzt das nicht
#include<iostream> using namespace std; int main() { int sudoku_feld[9][9]; int a,s; for(a=0;a<10;a=a+1) { sudoku_feld[a]=a; sudoku_feld[s]=s; } for(a=0;a<10;a++) { for(s=0;s<10;s++) { cout<<sudoku_feld[a]" " <<sudoku_feld[s]<<"\n"; } } cin.get(); }
Ich programmiere noch nicht wirklich lange bzw ich stehe ganz am anfang ! Ich lerne im moment mit nem einiger maßen alten C++ Objektoriente Programmierungs Buch! falss das hilft!
naja danke schonmal im Vorraus hoffe ihr könnt mir weiterhelfen!
mfg Soulseller
-
also wenn du nur dieses zweidimensionales array haben willst, ist das die einfachste anweisung:
int i; int sudoku_field[9][9]; for(i=0;i<=8;i++) { sudoku_field[i][i] = 1; }
desweiteren hast du das zweidimensionale array immer nur mit einem wert angesprochen, also musst du immer sudoku_field[Wert1][Wert2] angeben
achja und wenn du dir programmieren selber beibringst und wirklich noch in deinen ersten stunden bist, dann empfehle ich dir, das mit der OOP erstmal zu lassen
guck dir lieber erstmal die seite an:
www.win-tux.deEDIT: cin und cout sind anweisungen von C++ und kein ANSI C
also auch falsches forum
-
THX!! es klappt^^ wegen falschen Forum sry dann bitte einfach vrschieben wenn möglich! also ich habe jetzt
#include<iostream> using namespace std; int main() { int a; int sudoku_feld[9][9]; for(a=0;a<=8;a++) { sudoku_feld[a][a] = 1; } sudoku_feld[a][a]=a; for(a=0;a<10;a++) { cout<<sudoku_feld[a]<<"\n"; } cin.get(); }
ABER wie schaff ich es jetzt das er mir mein Sudokufeld ausgibt? also so wie ich das in meinem ersten Beitrag gerne hätte!Also wie muss ich die Schleifen schreiben?
mfg Soulseller
-
bitte bitte,
erstmal die frage von mir? was soll die anweisung in zeile 14 machen? die schreibt an die stelle [8][8] (also unten rechts) den wert 8und die ausgabe, also ich hab noch nicht wirklich großartig mit cin und cout gearbeitet, also probierst du es damit
//Header einbinden #include <stdio.h> //An die Stelle der Ausgabe for(i=0;i<=8;i++) { for(j=0;j<=8;j++) { printf("%d", sudoku_feld[i][j]); } printf("\n"); }
also das j musste halt noch deklarieren
bei dem printf bin ich mir aber gerade nicht so sicher, ob das auch in C++ geht, dürfte aber auch funktionieren, im notfall musst du mal gucken, wie der aufbau von cout ist
-
miujin schrieb:
bitte bitte,
erstmal die frage von mir? was soll die anweisung in zeile 14 machen? die schreibt an die stelle [8][8] (also unten rechts) den wert 8Sicher? Ich probiere es jetzt nicht aus, aber ich denke, er schreibt an [9] [9] (über das Array hinaus) den Wert 9.
-
miujin schrieb:
also das j musste halt noch deklarieren
bei dem printf bin ich mir aber gerade nicht so sicher, ob das auch in C++ geht, dürfte aber auch funktionieren, im notfall musst du mal gucken, wie der aufbau von cout ist
Da Soulseller ja sowieso mit einem C++-Compiler kompiliert, noch ein, zwei Hinweise hierzu. Zählvariablen für for-Schleifen muss man in C vorher deklarieren, in C++ aber nicht. Solange du eine Variable als nur für die Schleife brauchst, kannst du sowas hier machen:
for(int i=0;i<123;i++) {...}
printf ist auch ein Bestandteil von C++, das ist also kein Problem. Mit cout ginge das dann auch ganz einfach, nämlich so:
#include <stdio.h> #include <iostream> int main() { short sudoku_feld[9][9]={0}; for(int i=0;i<=8;i++) { sudoku_feld[i][i] = 1; } for(int i=0;i<=8;i++) { for(int j=0;j<=8;j++) { std::cout << sudoku_feld[i][j]; } std::cout << std::endl; } getchar(); }
EDIT: Ach ja, und arbeite an deiner Einrückung! Sobald deine Programme ein wenig größer werden, kriegst du arge Probleme, wenn du nicht vernünftig einrückst.
Öffnende geschweifte Klammer => nach rechts einrücken!
Schließende geschweifte Klammer => wieder zurück!Mehr isses im Grunde nicht...
-
Gut danke erstmal Leute! ICh werde eure tipps sofort ausprobieren! und @miujin ja das mit der Zeile 14 habe ich auch gemerkt das die keinen sinn ergibt ist nu auch futsch^^ nuja also ich habe bis her es soweid geschafft!
#include<iostream> using namespace std; int main() { int a,s; int sudoku_feld[9][9]; for(a=0; a<9; a++) for(s=0; s<9; s++) { sudoku_feld[a][a] = 9; sudoku_feld[s][s] = 9; } for(a=0; a<9; a++) { for(s=0; s<9; s++) { cout<<sudoku_feld[a]<<" "<<sudoku_feld[s]<<"\n"; } } cin.get(); }
Jetzt probier ich mal eure tipps noch aus!!! udn nochmals vielen dank hat mir sehr geholfen!
-
Hmm, das mit der Einrückung klappt aber noch nicht so ganz, ne.
Oder sehen wir hier einen kruden Mix aus Tabs und Leerzeichen? Ansonsten zieh dir das hier mal 'rein:
http://de.wikipedia.org/wiki/Einrückungsstil
Öffnende und schließende eines Blocks/Scopes stehen untereinander. Beispiel:
int main() { while(1) { for(;;) { if(1) { for(;;) { while(1) { DoSomething(); } } } } } }
Und das Füllen der Diagonalen mit Einsen musst du nur mit einer Schleife machen, nicht mit zweien (siehe mein Beispiel, das ist eigentlich schon die Lösung!).
-
_matze schrieb:
Zählvariablen für for-Schleifen muss man in C vorher deklarieren
ja, sollte man. geht natürlich auch anders, wenn man C99 verwendet.
_matze schrieb:
Mit cout ginge das dann auch ganz einfach...
nicht dass ich pingelig bin. aber ich finde, im c-forum sollte man keinem zu 'cout' raten.
-
~fricky schrieb:
nicht dass ich pingelig bin. aber ich finde, im c-forum sollte man keinem zu 'cout' raten.
Na ja, erstens rate ich ja nicht dazu, zweitens programmiert er ja offensichtlich C++ (er hat selbst cout benutzt und liest ein C++-Buch) und ist im falschen Forum gelandet, was schon erwähnt wurde und woraufhin er um Verschiebung gebeten hat.
Also ja, du bist zu pingelig!
-
_matze schrieb:
Also ja, du bist zu pingelig!
ok, hast ja recht.
-
voila
#include <iostream> using namespace std; int main() { int arr[9][9]; for(int i=0;i<9;i++) { for(int j=0;j<9;j++) { if(i==j) arr[i][i]=1; else arr[i][j]=0; cout << arr[i][j] << " "; } cout << endl; } cout << endl; return 0; }
-
Also habe es nun geschafft dank eurer Hilfe Vielen Vielen Dank!!