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 vor 😕 schü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 warum

    int 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


Anmelden zum Antworten