Binär Array to Stack?



  • Also ich schilder mal mein Problem.
    Ich will eine willkürliche Zahl in eine binärzahl umwandeln.
    Hier der Code + Ausgabe:

    Zahl=eingelesene Zahl;
    do
    {
      Rest=Zahl/2;
      Binar[x]=Zahl%2;
      Zahl=Rest;
      x++;
    } while(Rest!=0);
    
    for(j=x-1;j>=0;j--)
      printf("%d",Binar[j]);
    

    Jetzt habe ich die Binärzahl aber in einem Array, ich möchte sie in ein Stack packen, damit ich mehrere Binär zahlen übereinander ausgeben kann.
    Kann mir vielleicht wer helfen?



  • Zehn Lösungen, die alle sich sehr schlecht anfühlen.
    Was wollst Du wirklich (drumherum) machen? Dafür gibt es vermutlich eine wunderbare klare Lösung.



  • Bitte?

    Ich bin noch Anfänger daher dacht ich das mit der binärumwandlung is so ok.
    Ich möchte eine eingegebene Zahl in eine binärzahl umwandeln und die binärzahlen dann in einem Array speichern.
    Sodass ich schnell auf die einzelnen binärzahlen zugreifen kann.



  • HelferGesucht schrieb:

    Bitte?

    Ich bin noch Anfänger daher dacht ich das mit der binärumwandlung is so ok.
    Ich möchte eine eingegebene Zahl in eine binärzahl umwandeln und die binärzahlen dann in einem Array speichern.
    Sodass ich schnell auf die einzelnen binärzahlen zugreifen kann.

    Sorry. Dann habe ich Dich falsch verstanden, Ich unterschied Zahlen und Ziffern. Eine Ziffer ist ist nur 0 oder 1, eine Zahl ist sowas wie 10001010.
    Kannste ein ganzes Programm zeigen, wo nur noch ein Fitzelchen nicht klappt? Dann wäre es damit für mich voll viel einfacher, es zu lösen, bitte.
    Und Sorry.



  • Kein Problem hab vielleicht nicht genau genug beschrieben 🙂

    Also das ist eigtl. der relevante Ausschnitt.
    Der Rest hat damit nichts zu tun, weil alles in Zweige unterteilt ist.

    Wenn die Taste B eingelesen wird, sollen alle Zahlen die bisher in dem Stack gespeichert sind in binär umgewandelt und ausgegeben werden.
    Und das war der Ausschnitt für den case fall b.



  • scanf("%s",Einlesen);
    Stack[i]=atof(Einlesen);
    i++;
    
    case 'B':
     Darstellung=3;
     Zahl=Stack[i-1];
     do
     {
      Rest=Zahl/2;
      Binar[x]=Zahl%2;
      Zahl=Rest;
      x++;
     }while(Rest!=0);
    break;
    


  • Verstehe Dein Problem noch nicht.
    Der Code von Dir

    int main() {
    	int Binar[17];
    	int Rest;
    	int j;
    
    	int Zahl=11;
    	int x=0;
    	do {
    		Rest=Zahl/2;
    		Binar[x]=Zahl%2;
    		Zahl=Rest;
    		x++;
    	} while(Rest!=0);
    
    	for(j=x-1; j>=0; j--)
    		printf("%d",Binar[j]);
    }
    

    funktioniert doch wunderbar.



  • Jap daran haperts auch nicht.
    Ich möchte einen Stack mit Binärzahlen Haben.

    Sagen wir Zahl wäre ein Array

    int main() {
        int Binar[17];
        int Rest;
        int j;
        int Zahl[2];
    
        Zahl[0]=11;
        Zahl[1]=20;
        Zahl[2]=5;
    
        for(i=0;i<=2;i++) //Jede Zahl im Array soll eine binärzahl werden
        {
        int x=0;
        do {
            Rest=Zahl[i]/2;
            Binar[x]=Zahl[i]%2;
            Zahl[i]=Rest;
            x++;
        } while(Rest!=0);
        }
    
        for(j=x-1; j>=0; j--)
            printf("%d",Binar[j]);
    }
    

    Am Ende Soll der Array der vorher so aussah:
    11
    2
    5

    Im binärcode sein:
    110001
    001001
    010010

    Binärzahlen gelten nur als Beispiel sind nich umgerechnet keine sorgen 🙂



  • Hab auch keine rechte Ahnung, warum es jetzt geht.

    int main() {
    	int Zahl[3];//3 um von [0] bis [2] zu haben
    	Zahl[0]=11;
    	Zahl[1]=2;
    	Zahl[2]=5;
    
        int i;
    	for(i=0; i<=2; i++) { //Jede Zahl im Array soll eine binärzahl werden
            int x=0;
            int Binar[8]={};
            int Rest;
    
    		do {
    			Rest=Zahl[i]/2;
    			Binar[x]=Zahl[i]%2;
    			Zahl[i]=Rest;
    			x++;
    		} while(Rest!=0);
            int j;
            for(j=x-1; j>=0; j--)
                printf("%d",Binar[j]);
            printf("\n");
    	}
    
    }
    

    Hab ein wenig gefummelt. Ist es das, was Du wolltest?



  • Jaa genau mir ist auch die Erleuchtung gekommen!
    Ich habs genauso nur bei mir wandelt er nur die letzte zahl in binär um?

    for(j=0;j<=Endwert;j++)
    				{
    					Zahl=Stack[j];
    					x=0;
    					do
    					{
    						Rest=Zahl/2;
    						Binar[x]=Zahl%2;
    						Zahl=Rest;
    						x++;
    					} while(Rest!=0);
    					for(l=x-1;l>=0;l--)
    						printf("%d",Binar[j]);
    						printf("\n");
    				}
    

    Startwert ist 0 wenn nur eine Zahl im Stack steht.
    Startwert ist i-1 wenn mehrere Zahlen im Stack stehen.

    Sagen wir ich geben..
    10
    5
    3
    ein. Dann wandelt er mir nur die 3 um und 10 ist 0000 und 5 ist 000
    Ich versteh das nicht ich habs ja nicht anders als du 😞



  • HelferGesucht schrieb:

    Ich versteh das nicht ich habs ja nicht anders als du 😞

    Du bist nüchtern und ich komme vom Volksfest heim. Das wird der Unterschied sein.
    Morgen abend nach dem Aufstehen knacke ich das Problem, falls es bis dahin noch existiert.



  • Oki ich weiß nicht wie oder warum, aber ich habe es geschafft.
    Vielen Dank für deine Bemühungen, dass hat mir sehr geholfen! 🙂


Anmelden zum Antworten