einlesen + speichern von daten in ein 2dim. feld.
-
hi.
okay. aber versteh das net. wenn ich 2.2 eingebe dann stehn da auch noch einige andere zahlen?? kann doch net?
das soll ja so aussehen-------------------
| | | | | | | | | |-------------------
| | | | | | | | | |-------------------
| | | | | | | | | |
-------------------
| | | | | | | | | |-------------------
| | | | | | | | | |-------------------
| | | | | | | | | |-------------------
| | | | | | | | | |
-------------------
| | | | | | | | | |-------------------
| | | | | | | | | |-------------------
| | | | | | | | | |so solls aussehen, 10reihen-10spalten.
und alles soll leerbleiben außer das was ich halt einles mit dem was du mir grad egeben. hast.hmm
danke
err0r
-
Hast du dein Feld komplett mit 0 vorbelegt?
Deine Ausgabefunktion hatte ich mit icht angeschaut, komme auch nicht ganz klar damit.Probiers mal damit:
Dies Funktione sollte dir dein Meer komplett darstellenint i; int j; printf("\n0123456789\n"); printf("\n----------\n"); for(i=0;i<10;i++) { for (j=0;j<10;j++) { if( 0==myarray[j][j]) printf(" "); else printf("1"); } printf("\n"); } printf("----------\n");
-
hä?
ne das hilft mir nich so viel.
hm wie soll ichs dir nur erklären.wie gesgat, wie eben so muss das ausgegeben werden.
aber wenn ich halt jetzt 3.5 eingeben kommt da nur
3|0
0|0
...
das sollte ja net, sondrn ich WILL das er ein schiff z.b irgend n ascii code an die stelle 3.5 packt! und alles andere leer oder 0 bleibt.
err0r
-
Due gehst ja in deinen Schleifen jewils nur von 0 < 2, wie sollen da denn alle elemente zu sehen seim.
Nutz den Code von mir doch einfach um das Feld gesamt darzustellen und zu überprüfen ob deine Eingabe
richtig sind. Das Bild der Ausgabe das zu zeigst und deine Ausgaberoutine passen nicht zusammen.
-
hi. oke das ganze sieht nu so aus:
so. alles ist null..oke..aber wenn ich 5.5 einlese dann steht bei spalte 1 und spalte 2, zeile F: 1|1.
das kann doch net?!
hmm...weiss nich mehrint x, y, h, o; int i = 0; // nummer char j = 'A'; //buchstabe int t = 1; int u,g; int myarray[10][10]= { {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, }; for(u=0; u < 2; u++) { for(g=0; g < 2; g++) { printf("Koordinaten fuer die Schiffe [0..9] Bitte mit Komma trennen"); scanf("%d,%d",&u,&g); myarray[u][g]=1; } } //printf("\nKoordinaten[%d][%d]...\n\n",2,2); printf("\t"); for (y=1; y<11; y++) { printf ("%d ", y); } printf("\n\n"); printf("\t--------------------\n"); for(u=0; u < 10; u++) { printf("%c\t",65+u); for(g=0; g < 10; g++) { printf("|"); printf("%d",myarray[u][g]); } printf ("\n"); printf("\t--------------------\n"); printf("\n\n"); } }
-
A=0, B=1, C=2, D=3, E=4, F=5, ....
In C werden die Indizes von 0 an gezählt somit ist f für 5 richtig.
Das siehst du auch in meier Ausgabefunktion die Schlaifen laufen von 0 bis < 10 also 9
-
ja okay dann ist halt zeile f (5) richtig, aber 5.5 soltle ja dann auch spalte 5 !!! sein, das kommt aber nur in die spalte 1oder 2 rein?
err0r
-
Hab mir den Code mit dem MSVC 6.00 angeschaut und korrigiert
- Bei der Eingabe war ein Fehler, wir haben die beiden Schleifenindices g,u überschreiben.
habe das durch die ungenutzten Varaibalen x,y ersetzt
- Die Leseroutine mit scanf macht bei Probleme obwohl IMHO richtig
habe sie durch eine bei mir funktionierende ersetzt.
- Habe den Code bei mir laufenlassen, scheint zu funktionieren
- Frage, warum liest du über Werte über die Scheifen über g und u ein?
Eine einfache Schleife for (I=0;I<4;I++) hätte den selben Effectint x, y, h, o; int i = 0; // nummer char j = 'A'; //buchstabe int t = 1; char text[80+1]; int u,g; int myarray[10][10]= {0}; for(u=0; u < 2; u++) { for(g=0; g < 2; g++) { printf("Koordinaten fuer die Schiffe [0..9] Bitte mit Komma trennen > "); fgets(text,80,stdin), sscanf(text,"%i,%i",&x,&y); myarray[x][y]=1; } } //printf("\nKoordinaten[%d][%d]...\n\n",2,2); printf("\t"); for (y=1; y<11; y++) { printf ("%d ", y); } printf("\n\n"); printf("\t--------------------\n"); for(u=0; u < 10; u++) { printf("%c\t",65+u); for(g=0; g < 10; g++) { printf("|"); printf("%d",myarray[u][g]); } printf("\n\t--------------------\n"); // printf("\n\n"); }
-
hm oke. aber wenn ich dann halt 3.4 eingeb und das fragt er mich halt mehrmals, dann steht am ende das spielfeld da, aber nur in der spalte 1 sind "zahlen" drin, bzw nur einsen! und sons nirgends!?
wenn ich doch 3.4 eingeb muss er doch _dort_ die eins hinsetzen?!err0r
dankeschön
ps: sollte standard c sein, da ich linux nutze
-
int main(int argc, char* argv[]) {int x, y, h, o; int i = 0; // nummer char j = 'A'; //buchstabe int t = 1; char text[80+1]; int u,g; int myarray[10][10]= {0}; for(u=0; u < 2; u++) { for(g=0; g < 2; g++) { printf("Koordinaten fuer die Schiffe [0..9] Bitte mit Komma trennen >"); fgets(text,80,stdin), sscanf(text,"%i,%i",&x,&y); myarray[x][y]=1; } } printf("\t0123456789\n\t----------\n"); for(u=0; u < 10; u++) { printf("%c\t",'A'+u); for(g=0; g < 10; g++) printf("%d",myarray[u][g]); printf("\n"); } return 0; }
Dieses Programm bringt folgendes Ergebniss:
Koordinaten fuer die Schiffe [0..9] Bitte mit Komma trennen >3,1
Koordinaten fuer die Schiffe [0..9] Bitte mit Komma trennen >3,2
Koordinaten fuer die Schiffe [0..9] Bitte mit Komma trennen >3,3
Koordinaten fuer die Schiffe [0..9] Bitte mit Komma trennen >3,4
0123456789
----------
A 0000000000
B 0000000000
C 0000000000
D 0111100000
E 0000000000
F 0000000000
G 0000000000
H 0000000000
I 0000000000
J 0000000000Koordinaten fuer die Schiffe [0..9] Bitte mit Komma trennen >5,6
Koordinaten fuer die Schiffe [0..9] Bitte mit Komma trennen >6,6
Koordinaten fuer die Schiffe [0..9] Bitte mit Komma trennen >7,6
Koordinaten fuer die Schiffe [0..9] Bitte mit Komma trennen >8,6
0123456789
----------
A 0000000000
B 0000000000
C 0000000000
D 0000000000
E 0000000000
F 0000001000
G 0000001000
H 0000001000
I 0000001000
J 0000000000Koordinaten fuer die Schiffe [0..9] Bitte mit Komma trennen >5,6 Koordinaten fuer die Schiffe [0..9] Bitte mit Komma trennen >6,6 Koordinaten fuer die Schiffe [0..9] Bitte mit Komma trennen >7,6 Koordinaten fuer die Schiffe [0..9] Bitte mit Komma trennen >8,6 0123456789 ---------- A 0000000000 B 0000000000 C 0000000000 D 0000000000 E 0000000000 F 0000001000 G 0000001000 H 0000001000 I 0000001000 J 0000000000
Vielleicht solltest du darauf achten, das Trennzeichen ist eine Komma kein Punkt!