Keresés

Új hozzászólás Aktív témák

  • Fire/SOUL/CD

    félisten

    válasz cellpeti #765 üzenetére

    Hali!

    Köszönöm a hozzászólást! :R
    Itt a kód, ami (miután tisztáztuk, hogy mit is kell írni) 10 perc alatt készült...

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <conio.h>

    #define MAXBINARIES 16
    #define MAXBITS 16
    #define NUMBERINDEX 0
    #define BITCOUNTINDEX 1

    char BinaryDigits[MAXBITS+1];
    int BinariesCount=0;
    unsigned int Numbers[MAXBITS][2];

    unsigned int btou(int bitnumber, char s[]) {

    int i;
    unsigned int number=0;

    for (i=bitnumber-1;i>=0;i--) {
    if (BinaryDigits[i]) number+=pow(2,bitnumber-i-1);
    }
    return number;
    }

    int bin(int bitnumber, char s[]) {

    int i;

    for (i=0;i<bitnumber;i++) {
    if (BinaryDigits[i]!=0 && BinaryDigits[i]!=1) {
    printf("Nem binaris szam, probalja ujra...\n");
    return 0;
    }
    }
    Numbers[BinariesCount][BITCOUNTINDEX]=bitnumber;
    Numbers[BinariesCount++][NUMBERINDEX]=btou(bitnumber,BinaryDigits);
    return 1;
    }

    void InputBinaries() {

    int i,j,ch;
    printf("Kerem a szamokat binaris formaban (max. 16 darab, max. 16 bites szamot)\n\n");
    for (i=0;i<MAXBINARIES;i++) {
    do {
    printf("%02d. szam: ",i+1);
    j=0;
    do {
    ch = getchar();
    BinaryDigits[j++] = ch-'0';
    }
    while( ch!='\n' && ch!=EOF && j <= MAXBITS);
    fflush(stdin);
    if (j==1) return;
    }
    while (!(bin(j-1,BinaryDigits)));
    }
    return;
    }

    void bintoscreen(int binariesndx) {

    int i;
    unsigned int a;

    a=Numbers[binariesndx][NUMBERINDEX];
    i=MAXBITS-Numbers[binariesndx][BITCOUNTINDEX];
    for (;i>0;i--) printf("0");
    for (i=Numbers[binariesndx][BITCOUNTINDEX]-1;i>=0;i--) {
    printf((a & (unsigned int)pow(2,i)) ? "1":"0");
    }
    }

    void bintoscreenXOR(int binariesndx) {

    int i,j,highbitcount;
    unsigned int a,b,c;

    highbitcount=0;
    a=Numbers[binariesndx][NUMBERINDEX];
    b=Numbers[binariesndx+1][NUMBERINDEX];
    c=a^b;
    if (Numbers[binariesndx][BITCOUNTINDEX]>Numbers[binariesndx+1][BITCOUNTINDEX])
    i=MAXBITS-Numbers[binariesndx][BITCOUNTINDEX];
    else i=MAXBITS-Numbers[binariesndx+1][BITCOUNTINDEX];
    j=i;
    for (;i>0;i--) printf("0");
    for (i=MAXBITS-j-1;i>=0;i--) {
    if (c & (unsigned int)pow(2,i)) {
    printf("1");
    highbitcount++;
    }
    else printf("0");
    }
    printf("\t%9u\t",a^b);
    printf((highbitcount % 2) ? "Paratlan" : "Paros");
    }

    int main() {

    int i;

    printf("Peldaprogram by Fire/SOUL/CD [Code::Blocks 8.02]\n\n");
    InputBinaries();
    if (BinariesCount) {
    printf("\nSorszam\tBinaris\t\t\tDecimalis\n\n");
    for (i=0;i<BinariesCount;i++) {
    printf("%02u.\t",i+1);
    bintoscreen(i);
    printf("\t%9u\n",Numbers[i][NUMBERINDEX]);
    }
    if (BinariesCount>1) {
    printf("\nSorszam\tBinaris\t\t\tDecimalis\tMagas bitek\n\n");
    for (i=0;i<BinariesCount-1;i++) {
    printf("%02u.\t",i+1);
    bintoscreen(i);
    printf("\t%9u\n",Numbers[i][NUMBERINDEX]);

    printf("%02u.\t",i+2);
    bintoscreen(i+1);
    printf("\t%9u\n",Numbers[i+1][NUMBERINDEX]);

    printf("XOR\t");
    bintoscreenXOR(i);
    printf("\n\n");
    }
    }
    }
    else printf("\nNem adott meg egyetlen binaris szamot sem...\n\n");

    printf("\nA kilepeshez usson le egy billentyut...");
    getch();

    return 0;
    }

    Fire.

    UI: szerintem is többet ér megírni egy progit, mintha nem válaszolna rá esetleg senki

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

Új hozzászólás Aktív témák