Pseudocode Ziffern in Binärzahl

Hey,

ich sitz gerade an einer Aufgabe, die lautet, in „Pseudocode“ einen „Algorhitmus“ zu „entwickeln“ (meine Anführungszeichen sollen meine Verachtung gegenüber diesem Pseudocode ausdrücken :wink: ), der von einer Dezimalzahl, die aus 0en und 1en besteht, ermittelt, wie viele 0en und 1en in der Zahl enthalten sind.
In Java oder C das zu programmieren wäre für mich kein Problem, aber wie kann ich das in Pseudocode ausdrücken?

Programmiermäßig würde ich die Zahl als Array ausdrücken und dann über 2 Zählvariablen einfach die Anzahl an 0en und 1en zählen.

Hier Quasi das Werkzeug wie in dem Pseudcode sachen ausgedrückt werden sollen:

Danke schonmal für eure Hilfe!

Also wenn du Java und C kannst sollte diese Pseudocode Sprache kein Problem darstellen. Wo liegt denn das Problem? Keine Lust?

Achja, zu deinem Lösungsansatz: das ist glaube ich nicht die richtige Herangehensweise. Ein Tipp. Zahl modulo 10 = letzte Ziffer.

Na Lust hab ich schon, ich komm nur überhaupt nicht mit dem Pseudocode zurecht. Ich hab ja die Herangehensweise schon beschrieben. Nur wie drücke ich denn sowas wie einen Array in Pseudocode aus? Also wie formuliere ich die Abfrage nach einem einzelnen Zeichen von so einer Zahl in Pseudocode?

Wenn ich mich nicht täusche kann man doch Arrays in Pseudocode ganz “noromal” in Mengenschreibweise ausdrücken. Googel mal danach

Was willst du denn mit einem Array?
Überleg dir einen Lösungsansatz ohne Array, implementiere ihn in Java aus, und übersetze ihn dann in Pseudocode, wenn dir das andersherum schwerfällt.

Wobei ich nicht nachvollziehen kann, dass du das in Java / C programmieren könntest, aber nicht in Pseudocode…

solange der Ansatz Array war, wäre es auch für jeden anderen in Pseudocode unmöglich,
also auf einfachste Weise nachzuvollziehen,

Array gibts eben nicht in dieser vereinfachten Sicht, es braucht paar Variablen und dann Schleifen/ ifs,
ggfs. erst so in Java programmieren, um es einfacher zu haben, gleich sicher über Funktionsfähigkeit zu sein,
dann ‘übersetzen’

Wie man Pseudocode notiert sollte scheiß egal sein, dass sich manche an bestimmten Notationen aufhängen, tja, komische Leute. Einfach erklärt


maske = 0x80000000 // bei 32bit ist das höchste Bit (31) 1, alle anderen 0
for 32 // da ja nur 32bit
    bit = zahl & maske
    if bit
        print 1
    else
        print 0
    bit << 1

Das entspricht nicht der Aufgabenstellung, sollte aber wohl nur der Veranschaulichung dienen, dass die Notation egal ist.

Upsi, ja ned genau gelesen :wink:

Aber ist recht ähnlich:


zahl = 1011011101101110110010
einsen = 0
nullen = 0
while zahl != 0
    if zahl%10
        einsen++
    else
        nullen++
    zahl /= 10

Das Problem einen fertigen Code von der Syntax her in eine Pseudo-Notation umwandeln sollte eigentlich kein Problen sein.

[QUOTE=TheDarkRose]Upsi, ja ned genau gelesen :wink:

Aber ist recht ähnlich:


zahl = 1011011101101110110010
einsen = 0
nullen = 0
while zahl != 0
    if zahl%10
        einsen++
    else
        nullen++
    zahl /= 10

Das Problem einen fertigen Code von der Syntax her in eine Pseudo-Notation umwandeln sollte eigentlich kein Problen sein.[/QUOTE]

Hey, das klappt, sehr schön :slight_smile: Frag mich grad nur, warum. Ich hätte das wie schon oben beschrieben irgendwie als Array hingewürgt, aber das scheint genial.
Also um mal versuchen zu verstehen, was da passiert:
Wir benutzen 2 Zählvariablen, namens nullen und einsen. Dann sagen wir: solange zahl was anderes als Null ist, mache folgendes:

Falls der Divisionsrest von Zahl / 10 1 ist (was funktioniert, weil es ja nur Nullen und 1en gibt), zähle die Eins um 1 hoch. Also betrachten wir (darauf zielte das modulo 10 im ersten Post wohl ab, mir geht grad ein Licht auf) mit dem % einfach immer nur die letzte Ziffer. Falls es keine 1 ist, muss es ja eine 0 sein. Und das zahl /= 10 ist identisch mit zahl=zahl/10, richtig?

Ha, ihr seid toll :slight_smile: Habs grad in Java umgesetzt und es klappt!


public class ten {

	public static void main(String[] args) {
		int n=100100;
		int einsen = 0;
		int nullen = 0;
		
		while (n!=0){
			if ((n%10)!= 0){
				einsen++;
			}
			else{
				nullen++;
			}
			n = n / 10;
			
		}
		System.out.println("#Einsen:" + einsen);
		System.out.println("#Nullen:" + nullen);
	}
}