Dezimalzahlen in Dualzahlen mit hilfe von arrays invertieren.

tomasson

Grünschnabel
hallo,
hat von euch schon einer mal ein programm zum invertieren von dezimal in dualzahlen programmiert? die mit hilfe von arrays umgewandelt werden.wäre echt nett wenn ihr des mal hier reinposten würdet.

mfg
 
Hallo,

1.) Würde mich intressieren für was du das brauchst?
und
2.) Würde mich intressieren wie weit du schon selber vorrangekommen bist?

Gruß,

RedWing
 
hallo,
ich brauche dieses programm für die schule. ich hänge leider schon bei den arrays da ich überhaupt keine ahnung von diesen habe.
eine kleine musterlösung würde mir helfen um mich in die funktionsweise hineinzudenken.

mfg
 
ein programm zum invertieren von dezimal in dualzahlen
Kann es sein, daß Du konvertieren meinst? Man kann eine Dezimalzahl in eine Dualzahl konvertieren (umwandeln), man kann aber auch eine Dualzahl invertieren, wobei alle Einsen in Nullen gewandelt werden und umgekehrt.
Was die Vorgehensweise angeht, da gibt es mehrere (wie meistens).
Eine gehr sogar ohne Arrays:
Du liest die Zahl als Textstring von der Kommandozeile ein und wandelst den String mit atoi(...) in eine Zahl. Dann prüfst Du die einzelnen Bits von 'links nach rechts' (soll heißen vom höchsten Bit zum niedrigsten). Wenn das getestete Bit 0 ist, gibst Du eine Null aus, wenn es 1 ist, eine Eins.
Andere Methoden findest Du, wenn du RedWing's Links nachgehst.
 
oh verdammt... du hast recht...´ja ich meinte konvertieren..

ich muss diese aufgabe mit hilfe von diesen arrays lösen, auch wenn es andere möglichkeiten gibt wie ich gesehen habe...

mfg tomasson
 
Hallo,

ich hoffe du kommst deinem Geschichtslehrer gegenüber nicht in Erklärungsnot...

Code:
#include <stdio.h>

#define SIZE 33

void get_dual(int* array, unsigned int dezimal){
    int i = 0;
    while(dezimal > 0 && i < SIZE - 1){
        array[i++] = dezimal & 0x1;
        dezimal >>= 1;
    }
    array[i] = 2;
}

void print_array(int* array){
    int i = 0;
    while(array[i++] != 2);
    for(i -= 2; i >= 0; i--)
        printf("%d", array[i]);
    printf("\n");
}

int main(){
    int array[SIZE];
    unsigned int dezi = 14;
    printf("Dezimal: %d\n", dezi);
    get_dual(array, dezi);
    printf("Dual: ");
    print_array(array);
    return 0;
}

Gruß,

RedWing
 
Zuletzt bearbeitet:
Zurück