Komisches problem in c
-
hi leute ich hab heute etwas code geschrieben und da offenbarte sich ein für mich unerklaerbares problem seht selbst:
printf("1. Denken Sie sich eine Zweistellige Zahl z.B: 54\n"); printf("2. Rechnen Sie die Ziffern der Zahl davon Weg z.b: 54 - 4 - 5\n"); printf("3. Suchen sie sich das Zeichen das zu ihrer Zahl passt\n"); char arr[arrlength] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y'}; int outputarr[10][5]; char outputchararr[10][5]; int zufallszahl = 0, i = 0; int puffer = 1; char x; srand(time(NULL)); char currentchar = arr[zufallszahl = rand()%49 + 0]; printf("Current Char: %c\n", currentchar); int waag = 0; int senk = 0; printf("vor schleifen beginn Senkrecht:%d Waagrecht: %d", senk, waag); while(senk < 5){ while(waag < 10){ outputarr[senk][waag] = puffer; puffer++; printf("%d\n, Senkrecht:%d Waagrecht: %d", puffer, senk, waag); waag++; }//end while waag = 0; senk++; }//end while senk = 0; waag = 0; while(senk < 5){ while(waag < 10){ printf("%d |",outputarr[senk][waag]); waag++; }//end while waag = 0; printf("\n"); senk++; }//end while /* senkrecht = 0; waagrecht = 0; while(senkrecht < 5){ while(waagrecht < 10){ x = arr[zufallszahl = rand()%49 + 0]; if(x == currentchar){ outputchararr[senkrecht][waagrecht] = x; }else{ outputchararr[senkrecht][waagrecht] = x; }//end if waagrecht++; }//end while waagrecht = 0; senkrecht++; }//end while senkrecht = 0; waagrecht = 0; while(senkrecht < 5){ while(waagrecht < 10){ printf("%c - %d |", outputchararr[senkrecht][waagrecht], outputarr[senkrecht][waagrecht]); waagrecht++; }//end while waagrecht = 0; printf("\n"); senkrecht++; }//end while */ /* while(i < arrlength){ //printf("%c = %d|%c = %d|%c = %d|%c = %d|%c = %d|%c = %d|%c = %d|%c = %d|%c = %d|%c = %d|\n", arr[zufallszahl = rand()%49 + 0], zufallszahl = rand()%99 + 1, arr[zufallszahl = rand()%49 + 0],zufallszahl = rand()%99 + 1, arr[zufallszahl = rand()%49 + 0],zufallszahl = rand()%99 + 1, arr[zufallszahl = rand()%49 + 0],zufallszahl = rand()%99 + 1, arr[zufallszahl = rand()%49 + 0],zufallszahl = rand()%99 + 1, arr[zufallszahl = rand()%49 + 0],zufallszahl = rand()%99 + 1, arr[zufallszahl = rand()%49 + 0],zufallszahl = rand()%99 + 1, arr[zufallszahl = rand()%49 + 0],zufallszahl = rand()%99 + 1, arr[zufallszahl = rand()%49 + 0],zufallszahl = rand()%99 + 1, arr[zufallszahl = rand()%49 + 0], zufallszahl = rand()%99 + 1); i += 10; }//end while */
also die ausgabe von dem proggy ist:
1. Denken Sie sich eine Zweistellige Zahl z.B: 54
2. Rechnen Sie die Ziffern der Zahl davon Weg z.b: 54 - 4 - 5
3. Suchen sie sich das Zeichen das zu ihrer Zahl passt
Current Char: B
vor schleifen beginn Senkrecht:0 Waagrecht: 02
, Senkrecht:0 Waagrecht: 03 <---
, Senkrecht:0 Waagrecht: 14 <---
, Senkrecht:0 Waagrecht: 25 <---
, Senkrecht:0 Waagrecht: 36
, Senkrecht:0 Waagrecht: 47und das geht dann so weiter
, Senkrecht:0 Waagrecht: 58
, Senkrecht:0 Waagrecht: 69
, Senkrecht:0 Waagrecht: 710
, Senkrecht:0 Waagrecht: 811
, Senkrecht:0 Waagrecht: 912
, Senkrecht:1 Waagrecht: 013 obwohl ich die sch******
, Senkrecht:1 Waagrecht: 114 mit 0 intitialisiert habe
, Senkrecht:1 Waagrecht: 215 ich kann da nur mer den kopf
, Senkrecht:1 Waagrecht: 316 vorschütteln
, Senkrecht:1 Waagrecht: 417
, Senkrecht:1 Waagrecht: 518
, Senkrecht:1 Waagrecht: 619
, Senkrecht:1 Waagrecht: 720
, Senkrecht:1 Waagrecht: 821
, Senkrecht:1 Waagrecht: 922
, Senkrecht:2 Waagrecht: 023
, Senkrecht:2 Waagrecht: 124
, Senkrecht:2 Waagrecht: 225
, Senkrecht:2 Waagrecht: 326
, Senkrecht:2 Waagrecht: 427
, Senkrecht:2 Waagrecht: 528
, Senkrecht:2 Waagrecht: 629
, Senkrecht:2 Waagrecht: 730
, Senkrecht:2 Waagrecht: 831
, Senkrecht:2 Waagrecht: 932
, Senkrecht:3 Waagrecht: 033
, Senkrecht:3 Waagrecht: 134
, Senkrecht:3 Waagrecht: 235
, Senkrecht:3 Waagrecht: 336
, Senkrecht:3 Waagrecht: 437
, Senkrecht:3 Waagrecht: 538
, Senkrecht:3 Waagrecht: 639
, Senkrecht:3 Waagrecht: 740
, Senkrecht:3 Waagrecht: 841
, Senkrecht:3 Waagrecht: 942
, Senkrecht:4 Waagrecht: 043
, Senkrecht:4 Waagrecht: 144
, Senkrecht:4 Waagrecht: 245
, Senkrecht:4 Waagrecht: 346
, Senkrecht:4 Waagrecht: 447
, Senkrecht:4 Waagrecht: 548
, Senkrecht:4 Waagrecht: 649
, Senkrecht:4 Waagrecht: 750
, Senkrecht:4 Waagrecht: 851
, Senkrecht:4 Waagrecht: 91 |2 |3 |4 |5 |11 |12 |13 |14 |15 |
11 |12 |13 |14 |15 |21 |22 |23 |24 |25 |
21 |22 |23 |24 |25 |31 |32 |33 |34 |35 |
31 |32 |33 |34 |35 |41 |42 |43 |44 |45 |
41 |42 |43 |44 |45 |46 |47 |48 |49 |50 |ich spiele mich nun schon etwa 2h damit
was kann hier nur fasch sein ich komm einfach nicht drauf vielleicht könnt ihr mir ja helfen
waere super
na dann vorsorglich schom mal ein fettes THX
--linuxuser--
-
Ist es dir in den Sinn gekommen, dass es hilfreich sein könnte, wenn du verrätst, was das Programm tun soll?
Oder bist du nur dadurch irritiert, dass du puffer immer am Ende der vorangegangenen Zeile ausgibst, direkt hinter dem letzten Wert von waag?
-
hab gedacht für echte progger spricht ein code mehr als 1000 worte
also was soll das proggy tun:es soll eine tabelle von zahlen und buchstaben ausgeben und waenn
char currentchar = arr[zufallszahl = rand()%49 + 0];
gleich
x = arr[zufallszahl = rand()%49 + 0];
ist soll
char currentchar = arr[zufallszahl = rand()%49 + 0];
ausgegeben werden die haufen meldungen sind nur als "DEBUGGING" zwecke vorhanden und die auskommentierten zeilen auch nur dazu um den fehlerbereich einzuschrenken weil ich mich wie gesagt schon ne zeit mit dem proggy herumschlage und nicht den wert von
int waag = 0;
nachvollziehen kann der hat immer irgendwelche werte wie zb
Senkrecht:1 Waagrecht: 821
wo ich die scheiße ausgib is in dem fall eher ziemlich egal
aber ich komm einfach nicht dahinter warumint waag = 0;
waenn ich es mit 0 declariere dann einfahc den wert 02 haben kann (das ist narürlich direkt nach der dekleration:
int waag = 0; int senk = 0; printf("vor schleifen beginn Senkrecht:%d Waagrecht: %d", senk, waag);
und das ist hier mein eigentliches problem
-
Ich weiß zwar nicht genau, welchem Zweck dein Programm dienen soll, da du das ja auch nach Nachfrage nicht problemorientiert erklärt hast und ich wohl kein krasser "Progger" bin, der das sofort erkennen würde
Und damit meine ich natürlich nicht, was das Programm für Anweisungen enthält und was sie machen sondern natürlich das Problem, das es lösen soll
Jedenfalls gibt
int waag = 0; int senk = 0; printf("vor schleifen beginn Senkrecht:%d Waagrecht: %d", senk, waag);
vor schleifen beginn Senkrecht:0 Waagrecht: 0
aus, wie es sich gehört. Die 2 stammt von einer späteren Ausgabe wegen des fehlenden Zeilenvorschubes.
[cpp]printf("%d\n, Senkrecht:%d Waagrecht: %d", puffer, senk, waag);
[/cpp]Die 2 ist also der Inhalt der Variable puffer. Das kann man übrigens mit den üblichen Debuggingmethoden recht schnell rausfinden. Wieso benutzt du eigentlich keine Zählschleifen?
-
danke das mit dem zeilenvorschub hat mich weiter gebracht aber ich hab noch immer das problem:
dieser code:int outputarr[10][5]; char outputchararr[10][5]; int puffer = 0; int waag = 0; int senk = 0; printf("Puffer:%d Senkrecht:%d Waagrecht: %d\n", puffer, senk, waag); while(senk < 5){ while(waag <= 9){ if(waag == 9){ break; }//end if outputarr[senk][waag] = puffer; puffer++; waag++; printf("Puffer:%d Senkrecht:%d Waagrecht: %d\n", puffer, senk, waag); }//end while waag = 0; senk++; }//end while senk = 0; waag = 0; while(senk < 5){ while(waag < 10){ printf("| %d[%d][%d] |",outputarr[senk][waag], senk, waag); waag++; }//end while waag = 0; printf("\n"); senk++; }//end while
macht das:
Puffer:1 Senkrecht:0 Waagrecht: 0
Puffer:2 Senkrecht:0 Waagrecht: 1
Puffer:3 Senkrecht:0 Waagrecht: 2
Puffer:4 Senkrecht:0 Waagrecht: 3
Puffer:5 Senkrecht:0 Waagrecht: 4
Puffer:6 Senkrecht:0 Waagrecht: 5
Puffer:7 Senkrecht:0 Waagrecht: 6
Puffer:8 Senkrecht:0 Waagrecht: 7
Puffer:9 Senkrecht:0 Waagrecht: 8
Puffer:10 Senkrecht:0 Waagrecht: 9
Puffer:11 Senkrecht:1 Waagrecht: 1
Puffer:12 Senkrecht:1 Waagrecht: 2
Puffer:13 Senkrecht:1 Waagrecht: 3
Puffer:14 Senkrecht:1 Waagrecht: 4
Puffer:15 Senkrecht:1 Waagrecht: 5
Puffer:16 Senkrecht:1 Waagrecht: 6
Puffer:17 Senkrecht:1 Waagrecht: 7
Puffer:18 Senkrecht:1 Waagrecht: 8
Puffer:19 Senkrecht:1 Waagrecht: 9
Puffer:20 Senkrecht:2 Waagrecht: 1
Puffer:21 Senkrecht:2 Waagrecht: 2
Puffer:22 Senkrecht:2 Waagrecht: 3
Puffer:23 Senkrecht:2 Waagrecht: 4
Puffer:24 Senkrecht:2 Waagrecht: 5
Puffer:25 Senkrecht:2 Waagrecht: 6
Puffer:26 Senkrecht:2 Waagrecht: 7
Puffer:27 Senkrecht:2 Waagrecht: 8
Puffer:28 Senkrecht:2 Waagrecht: 9
Puffer:29 Senkrecht:3 Waagrecht: 1
Puffer:30 Senkrecht:3 Waagrecht: 2
Puffer:31 Senkrecht:3 Waagrecht: 3
Puffer:32 Senkrecht:3 Waagrecht: 4
Puffer:33 Senkrecht:3 Waagrecht: 5
Puffer:34 Senkrecht:3 Waagrecht: 6
Puffer:35 Senkrecht:3 Waagrecht: 7
Puffer:36 Senkrecht:3 Waagrecht: 8
Puffer:37 Senkrecht:3 Waagrecht: 9
Puffer:38 Senkrecht:4 Waagrecht: 1
Puffer:39 Senkrecht:4 Waagrecht: 2
Puffer:40 Senkrecht:4 Waagrecht: 3
Puffer:41 Senkrecht:4 Waagrecht: 4
Puffer:42 Senkrecht:4 Waagrecht: 5
Puffer:43 Senkrecht:4 Waagrecht: 6
Puffer:44 Senkrecht:4 Waagrecht: 7
Puffer:45 Senkrecht:4 Waagrecht: 8
Puffer:46 Senkrecht:4 Waagrecht: 9
| 1[0][0] || 2[0][1] || 3[0][2] || 4[0][3] || 5[0][4] || 10[0][5] || 11[0][6] || 12[0][7] || 13[0][8] || 14[0][9] |
| 10[1][0] || 11[1][1] || 12[1][2] || 13[1][3] || 14[1][4] || 19[1][5] || 20[1][6] || 21[1][7] || 22[1][8] || 23[1][9] |
| 19[2][0] || 20[2][1] || 21[2][2] || 22[2][3] || 23[2][4] || 28[2][5] || 29[2][6] || 30[2][7] || 31[2][8] || 32[2][9] |
| 28[3][0] || 29[3][1] || 30[3][2] || 31[3][3] || 32[3][4] || 37[3][5] || 38[3][6] || 39[3][7] || 40[3][8] || 41[3][9] |
| 37[4][0] || 38[4][1] || 39[4][2] || 40[4][3] || 41[4][4] || 42[4][5] || 43[4][6] || 44[4][7] || 45[4][8] || 1073976392[4][9]er sollte aber das machen:
Puffer:1 Senkrecht:0 Waagrecht: 0
Puffer:2 Senkrecht:0 Waagrecht: 1
Puffer:3 Senkrecht:0 Waagrecht: 2
Puffer:4 Senkrecht:0 Waagrecht: 3
Puffer:5 Senkrecht:0 Waagrecht: 4
Puffer:6 Senkrecht:0 Waagrecht: 5
Puffer:7 Senkrecht:0 Waagrecht: 6
Puffer:8 Senkrecht:0 Waagrecht: 7
Puffer:9 Senkrecht:0 Waagrecht: 8
Puffer:10 Senkrecht:0 Waagrecht: 9
Puffer:11 Senkrecht:1 Waagrecht: 1
Puffer:12 Senkrecht:1 Waagrecht: 2
Puffer:13 Senkrecht:1 Waagrecht: 3
Puffer:14 Senkrecht:1 Waagrecht: 4
Puffer:15 Senkrecht:1 Waagrecht: 5
Puffer:16 Senkrecht:1 Waagrecht: 6
Puffer:17 Senkrecht:1 Waagrecht: 7
Puffer:18 Senkrecht:1 Waagrecht: 8
Puffer:19 Senkrecht:1 Waagrecht: 9
Puffer:20 Senkrecht:2 Waagrecht: 1
Puffer:21 Senkrecht:2 Waagrecht: 2
Puffer:22 Senkrecht:2 Waagrecht: 3
Puffer:23 Senkrecht:2 Waagrecht: 4
Puffer:24 Senkrecht:2 Waagrecht: 5
Puffer:25 Senkrecht:2 Waagrecht: 6
Puffer:26 Senkrecht:2 Waagrecht: 7
Puffer:27 Senkrecht:2 Waagrecht: 8
Puffer:28 Senkrecht:2 Waagrecht: 9
Puffer:29 Senkrecht:3 Waagrecht: 1
Puffer:30 Senkrecht:3 Waagrecht: 2
Puffer:31 Senkrecht:3 Waagrecht: 3
Puffer:32 Senkrecht:3 Waagrecht: 4
Puffer:33 Senkrecht:3 Waagrecht: 5
Puffer:34 Senkrecht:3 Waagrecht: 6
Puffer:35 Senkrecht:3 Waagrecht: 7
Puffer:36 Senkrecht:3 Waagrecht: 8
Puffer:37 Senkrecht:3 Waagrecht: 9
Puffer:38 Senkrecht:4 Waagrecht: 1
Puffer:39 Senkrecht:4 Waagrecht: 2
Puffer:40 Senkrecht:4 Waagrecht: 3
Puffer:41 Senkrecht:4 Waagrecht: 4
Puffer:42 Senkrecht:4 Waagrecht: 5
Puffer:43 Senkrecht:4 Waagrecht: 6
Puffer:44 Senkrecht:4 Waagrecht: 7
Puffer:45 Senkrecht:4 Waagrecht: 8
Puffer:46 Senkrecht:4 Waagrecht: 9
| 1[0][0] || 2[0][1] || 3[0][2] || 4[0][3] || 5[0][4] || 6[0][5] || 7[0][6] || 8[0][7] || 9[0][8] || 10[0][9] || 11[1][0] || 12[1][1] || 13[1][2] || 14[1][3] || 15[1][4] || 16[1][5] || usw..das ganze geht mir nicht?? ursprünglich hab ichs so gehabt:
int waag = 0; int senk = 0; printf("Puffer:%d Senkrecht:%d Waagrecht: %d\n", puffer, senk, waag); while(senk < 5){ while(waag < 10){ outputarr[senk][waag] = puffer; puffer++; waag++; printf("Puffer:%d Senkrecht:%d Waagrecht: %d\n", puffer, senk, waag); }//end while waag = 0; senk++; }//end while senk = 0; waag = 0; while(senk < 5){ while(waag < 10){ printf("| %d[%d][%d] |",outputarr[senk][waag], senk, waag); waag++; }//end while waag = 0; printf("\n"); senk++; }//end while
hat aber genauso wenig gefunzelt
-
--linuxuser-- schrieb:
hab gedacht für echte progger spricht ein code mehr als 1000 worte
Ich bin kein "Progger", wer mich so nennt, macht sich nicht beliebt bei mir. Man kann aus dem Programm den Zweck ablesen, wenn der Programmierer sich Mühe gegeben hat. Trotzdem ist das zusätzliche Arbeit für den Leser, die du ihm leicht abnehmen könntest.
--linuxuser-- schrieb:
macht das:
[viel Text]
er sollte aber das machen:
[noch mehr Text]Wäre es hier wirklich so schwierig gewesen, nur die unterschiedlichen Teile zu zeigen?
Deine Art, Probleme zu beschreiben, ist verbesserungsbedürftig.
Das Problem ist übrigens, dass du die Dimensionen vertauscht hast. Du deklarierst die Arrays als [10][5], benutzt sie aber wie [5][10].
-
THX MFK der code funzelt jetzt...
werd an meiner fehlerbeschreibung arbeitern aber du kannst dort
http://www.ebaumsworld.com/mindprobe.html
nachsehen was der code dan im endeffekt machen soll