Zum Inhalt springen

Funktion erstellen


e.full

Empfohlene Beiträge

hallo informatiker,

bin grad neu am programmieren, und weiss jetzt nicht unbedingt wie man sowas macht, und würde mich freuen wenn ihr mir elfen würdet:

also ich soll in der Sprache C eine Funktion int oddBits (int B) schreiben, die die Anzahl gesetzter Bits an ungeraden Positionen zurückliefert, also für eine Zahl b mit der Bitdarstellung b_n b_n-1 .... b_2 b_1 die summe

b_n-1 + b_n-3+ b_1 berechnet.

ich soll dabei eine Bitmaske verwenden, die ich von 1 bis INT_MAX/2 jeweils um 2 Bits nach links schiebe. INT_MAXist in limits.h definiert.

ich habe echt keine ahnung wie ich das machen soll, da ich bisher nicht soviel erfahrung mit programmieren gemacht habe und bitte um Lösungsvorschläge

lg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zeig bitte ein wenig mehr Eigeninitiative. Wenn du nur die Aufgabenstellung ablädst, und behauptest, dass du "keine Ahnung" hast, liegt die Vermutung nahe, dass du nur jemanden suchst, der deine Hausaufgaben macht.

Die Aufgabenstellung enthält bereits eine ziemlich detaillierte Anleitung, wie die Aufgabe zu lösen ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich bin nicht so sicher aber ich habe mal so angefangen:

#include <stdio.h>

main ()

{

int b;

also ich nehme hier die eingangszahl b,

jetzt muss ich ja irgendwie die zahl der gesetzten bits nehmen welche am anfang 0 ist, also n=0

ich weiss nicht wie ich das machen soll, und wie es weiter geht, es ist nciht meine absicht einfach die lösung kriegen. will es auch verstehn

danke lg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du brauchst eine Funktion, die int zurückgibt, oddBits heißt und einen int-Parameter mit Namen b hat. In dieser Funktion brauchst du eine weitere int-Variable für die Maske, die du mit 1 initialisierst, sowie einen Zähler, den du mit 0 initialisierst. Dann machst du in einer Schleife eine bitweise-Und-Verknüpfung zwischen b und der Maske. Wenn dabei nicht 0 herauskommt, erhöhst du den Zähler um 1. Danach schiebst du die Maske um 2 nach links und beginnst von vorn. Die Schleife musst du so lange durchlaufen, wie Maske <= INT_MAX/2 ist. Dann gibst du den Zähler zurück.

Link zu diesem Kommentar
Auf anderen Seiten teilen

danke für ihre antwort, aber mein problem ist das ganze jetzt in c++ zu schreiben,

Eigentlich habe ich bereits den größten Teil der Arbeit gemacht, denn das, was ich geschrieben habe, kann man 1 zu 1 in Code umsetzen. Wenn du das nicht kannst, kannst du einfach nicht genug C++, um diese Aufgabe zu lösen.

war denn überhaupt mein anfang richtig

Nein.

Den Header stdio.h gibt's in C++ nicht, die main-Funktion muss int zurückgeben und überhaupt sollst du ja eine zusätzliche Funktion schreiben.

Wer gibt denn jemandem, der offenbar gar kein C++ kann, so eine Aufgabe?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...