_mclaren_
Lieutenant
- Registriert
- Dez. 2006
- Beiträge
- 909
Schreiben Sie eine Funktion, die feststellt wie viele Einser und wieviele Nullen im Bit-
muster eines Integerwertes vorkommen und welche die Ergebnisse in zwei Interger-
variable des Aufrufers schreibt, die der Funktion per Reference ubergeben werden.
Testen Sie Ihre Funktion in einem geeigneten Hauptprogramm.
Also vom Prinzip hab ich das Programm, aber warum verändert sich mein Zähler nicht?1 Ich verstehs nicht - Fehler beim Pointer?
Danke für jeden Tipp!
Zur ERklärung:
Ich habe irgendein Bitmuster hier nun 0xFFFF . Das übergeb ich an die Funktion.
Dort verunde ich das Bitmuster mit 1, damit ich die letze Stelle weiß, wenn die eins ist, soll er in dem entsprechenden if Zweig den Zähler erhöhen - das gleiche für Null.
muster eines Integerwertes vorkommen und welche die Ergebnisse in zwei Interger-
variable des Aufrufers schreibt, die der Funktion per Reference ubergeben werden.
Testen Sie Ihre Funktion in einem geeigneten Hauptprogramm.
Also vom Prinzip hab ich das Programm, aber warum verändert sich mein Zähler nicht?1 Ich verstehs nicht - Fehler beim Pointer?
Danke für jeden Tipp!
Zur ERklärung:
Ich habe irgendein Bitmuster hier nun 0xFFFF . Das übergeb ich an die Funktion.
Dort verunde ich das Bitmuster mit 1, damit ich die letze Stelle weiß, wenn die eins ist, soll er in dem entsprechenden if Zweig den Zähler erhöhen - das gleiche für Null.
Code:
#include <stdio.h>
#include <stdlib.h>
int main()
{
unsigned int bitmuster = 0xFFFF;
int einser=0;
int nuller=0;
zaehler(bitmuster, &einser, &nuller);
printf("%d 1er und %d 0er\n",einser,nuller);
return 0;
}
// Funktionsbeschreibung
/* Die Funktion erhält ein Bitmuster und gibt per Pointer zurück wie
viele Einser und Nuller dieses Bitmuster enthalten hat.
bitmuster: Bitmuster
*einser: Adresse der Variable einser
*nuller: Adresse der Variable nuller
*/
void zaehler(int bitmuster,int *eins,int *null){
int einerstelle;
int i;
for(i=(sizeof(int)*8);i>=1;i--){
einerstelle = bitmuster & 1;
if(einerstelle){
*(eins++);
}else *(null++);
bitmuster = bitmuster >> 1;
}
}
Zuletzt bearbeitet: