Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

zamiana kodu binarnego na dziesietny...

PWEITI 01 Kwi 2012 03:45 3097 15
  • #1 01 Kwi 2012 03:45
    PWEITI
    Poziom 10  

    POMOCY!
    Mam napisac program w jezyku C i pojawil sie problem z zamiana liczby binarnej na dziesietna. Moglby ktos sie zainteresowac moim problemem i mi pomoc. Bylbym bardzo wdzieczny... Kod zamieszczam ponizej:


    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 15
  • #3 01 Kwi 2012 09:40
    PWEITI
    Poziom 10  

    Blok z zamiana kodu dziesietnego na binarny jest ok, jego pozostawmy. Problem mam z zamiana z binarnego na dziesietny. Na wejscie podam np. 101 a program zamiast 5 wywala mi 2130567169...

    0
  • #5 01 Kwi 2012 11:34
    PWEITI
    Poziom 10  

    Ok w zmiennej int poprawilem suma=0. Zmiana jest ale teraz caly czas wyslwietla po konwersji kodu cyfre 1

    Cytat:

    int d_b, d_o, b_d, d_h, dz_b, dz, i, j, ok, suma=0;
    char tab[256];

    0
  • #6 01 Kwi 2012 12:27
    Dżyszla
    Poziom 42  

    Tak w ogóle to się inicjuje przed wykorzystaniem, a nie raz, bo każde wywołanie będzie dawać kolejny wynik.
    Po drugie - a co masz w tablicy przed obliczeniem wartości dziesiętnej? Używałeś debuggera i podglądałeś wartości zmiennych oraz przebiegi pętli?

    0
  • #7 01 Kwi 2012 13:23
    PWEITI
    Poziom 10  

    Powinienem na poczatku powiedzieć ze dopiero sie ucze programowac. suma=0 wrzucilem przed petle for. Przed obliczeniem wardosci dziesietnej mam w tablicy zapis binarny np. 101. Debugera nigdy nie uzywalem i nie umiem nim sie poslugiwac...

    0
  • Pomocny post
    #8 01 Kwi 2012 13:56
    Dżyszla
    Poziom 42  

    Kod może nie jest optymalnie napisane, ale wydaje się być poprawny, jeśli chodzi o przeliczanie.
    Dlatego poczytaj o tym, jak używa się debugera (ustawianie pułapek - ang. breakpoint; pogląd wartości zmiennych - ang. wachtes). To naprawdę wiele rozjaśni.

    0
  • #9 01 Kwi 2012 14:50
    PWEITI
    Poziom 10  

    Dziala!!! swietna rzecz ten debuger... ponizej zamieszczam petle z bledem w ktorej "j=255" bylo zle zapisane, a pownno byc "j==255"... WIELKIE DZIEKI Dżyszla

    Cytat:

    printf("Postac dziesietna liczby: ");
    for (j=0; j<=255; j++){
    suma += tab[j]*(pow(2,j));
    if(j==255) printf("%d", suma);
    }
    break;

    0
  • #11 04 Kwi 2012 01:26
    PWEITI
    Poziom 10  

    Ok kolejna rzecz z którą mam problem. Jak przejść z kodu hexadecymalnego na dziesiętny. Głównie chodzi o to jak zrobic aby po wczytaniu np. A42 zamienić to na oddzielne cyfry wpisane do tablicy. Albo ktoś ma lepszy, łatwiejszy pomysł?

    0
  • #12 04 Kwi 2012 07:09
    Dżyszla
    Poziom 42  

    Wczytujesz stringa, analizujesz znak po znaku. od '0'-'9' odejmujesz '0' i dostajesz liczbę, a od 'A'-'F' odejmujesz 'A' dodajesz 10 i dostajesz liczbę. To się nadaje w sam raz na funkcję HexCharToInt ;) (oczywiście do napisania). Potem identycznie jak w pozostałych kodach - potęga, mnożenie, dodawanie itd..

    0
  • #13 04 Kwi 2012 10:06
    PWEITI
    Poziom 10  

    string.h nigdy nie uzywalem, nie moglby mi ktos przyblizyc jakich komed uzywac aby taka zamiane zrobic, moze przykladowy programik ktos ma?? ludzie ratujcie mam malo czasu!!!

    0
  • #14 05 Kwi 2012 01:24
    blue_17
    Poziom 32  

    Kolego w czystym C niema stringów :)

    http://4programmers.net/C/String

    Wszystko jak piszesz tylko zrób sobie to na tablicach char-ów a jak już chcesz mieć wszystko ładnie to zrób sobie strukturę i zrób sobie tablice tablic :)
    i wtedy przeglądasz sobie taki element tablicy do napotkania '/0' lub NULL jak kto woli :)

    w praktyce tak by to wyglądało

    w przykładzie z pliku ładują się nazwiska z pliku tekstowego do tablicy tablic :)

    Kod: c
    Zaloguj się, aby zobaczyć kod


    W celach edukacyjnych popatrz jak pobieram nazwę pliku bo właśnie tak robi się "sztuczny" string :)

    P.S debugger to bardzo a bardzo przydatna rzecz :)

    Pozdrawiam

    0
  • #15 05 Kwi 2012 01:27
    _alfred_
    Poziom 16  

    Spróbuj tego:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Resztę zrób tak jak napisał Dżyszla.

    blue_17 szybszy :)
    Jednak przy wczytywaniu określ ile znaków chcesz wczytać. Bezpieczniej, zabezpieczysz się przed ewentualnym przepełnieniem bufora.

    0
  • #16 05 Kwi 2012 02:09
    blue_17
    Poziom 32  

    To dobrze że są bardziej doświadczeni ode mnie i mogą mi i innym to uświadomić :)

    oraz funkcja scanf ma taka właściwość :)

    Jak widać program nie jest jakimś cudem bo zabrakło w nim automatycznego wpisywania ocen do indeksów :D

    W językach programowania jakoś szczególnie nie jestem dobry ale się podszkoliłem się czytając książkę Pana Mirka :)

    Pozdrawiam

    0