logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Dlaczego program do konwersji IP na binarny nie wyświetla wyniku?

dyro_lisz 23 Sty 2012 18:56 1675 13
REKLAMA
  • #1 10438327
    dyro_lisz
    Poziom 10  
    Posty: 12
    Napisałe taki programik i nie wiem dlaczego nie wyświetla wyniku, może ktoś wie o co chodzi:
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 10438395
    pawel-jwe
    Poziom 30  
    Posty: 1383
    Pomógł: 123
    Ocena: 272
    Po pierwsze nie "++j" tylko "j++"
    Po drugie nie "--i" tylko "i--"
    po trzecie wyświetlenie elementu "bin[0]" nie ma prawa działać, skoro "bin" jest macierzą musisz podać drugą współrzędną elementu w macierzy.
  • #3 10438512
    dyro_lisz
    Poziom 10  
    Posty: 12
    Mógłbyś dać jakiś przykład, bo nie zabardzo kojarze twój tok myślenia z drugą współrzędną.
  • REKLAMA
  • #4 10438627
    Krzysztof Gustaw
    Poziom 23  
    Posty: 392
    Pomógł: 76
    Ocena: 31
    Witam!

    Zwróć uwagę, jak zadeklarowałeś tablicę bin[][] a w jaki sposób próbujesz wyświetlić jej zawartość.
    Musisz zmienić sposób wyświetlania. (Funkcja printf na nic..., pomysl nieco inaczej).
    Podpowiadam: znak po znaku.
  • #5 10438638
    pawel-jwe
    Poziom 30  
    Posty: 1383
    Pomógł: 123
    Ocena: 272
    Chyba powinno być tak (oczywiście można też krócej w pętli):
    printf("%d%d%d%d%d%d%d\n",bin[0][0],bin[0][1],bin[0][2],bin[0][3],bin[0][4],bin[0][5],bin[0][6],bin[0][7]);
    Zamiast "printf" można też skorzystać z "cout".
  • #6 10438726
    Krzysztof Gustaw
    Poziom 23  
    Posty: 392
    Pomógł: 76
    Ocena: 31
    Witam!
    Do Pawel-jwe
    A dlaczego? Można prościej. Przecież wydobywane w porzednich pętlach i umieszczone w macierzy bin cyferki są juz pięknie zakodowane w ASCII...
    Do tego miejsca program jest OK i działa jak należy
  • REKLAMA
  • #7 10438806
    pawel-jwe
    Poziom 30  
    Posty: 1383
    Pomógł: 123
    Ocena: 272
    Do Krzysztof Gustaw. Też racja , jakoś mi to uciekło :)
    Zamiast macierz można zrobić wektor i wtedy wyświetlać jak string'a.
  • REKLAMA
  • #8 10438817
    dyro_lisz
    Poziom 10  
    Posty: 12
    Nadal jakoś nie wychodzi. Utknołem.


    3.1.13. (10.9, 15) Zabronione jest publikowanie wpisów naruszających zasady pisowni języka polskiego, niedbałych i niezrozumiałych.
    Proszę to poprawić !!! - arnoldziq
  • #9 10438969
    Krzysztof Gustaw
    Poziom 23  
    Posty: 392
    Pomógł: 76
    Ocena: 31
    Witam!
    Musisz inaczej podejść do tego tematu. Potraktuj macierz bin[4][9] jako czteroelementową tablicę wskaźników do elementów typu char.
    A ściślej: do czterech łańcuchów znaków, z których każdy zawiera 8 znaków plus '\0' jako znacznik końca łańcucha.
    W języku "C" tablice i wskaźniki są ściśle ze sobą powiązane, do tego stopnia, że mozna traktować je zamiennie.

    W związku z tym, funkcja nie jako printf("%d", bin[1][1]) tylko stwórz pętelkę for i umieść w niej np:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    Powodzenia!
    P.S.
    Nie kombinuj nic w pozostałej części programu. Działa dobrze!
  • #10 10439764
    dyro_lisz
    Poziom 10  
    Posty: 12
    Czyli tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Jeśli tak to nadal nie działa, nadal nie wyświetla wyniku.
  • #11 10439984
    Krzysztof Gustaw
    Poziom 23  
    Posty: 392
    Pomógł: 76
    Ocena: 31
    Witam!
    Bardzo dobrze. Oto właśnie chodziło. (Mam na myśli Twoje rozwiązanie)
    Popełniłeś tylko "błąd mechaniczny". W pętli for zmienna sterującą jest "j", a w printf indeksujesz "i". Zmień w printf indeks z i na j a zobaczysz co się stanie...

    Pozdrawiam!
    P.S.
    Tylko pamiętaj, że w Twoim przypadku w scanf separatorami są kropki (".") a nie spacje co zostało odzwierciedlone w części formatującej. Wprowadzaj dane np: 128.4.56.26 czyli oddzielaj kropkami a nie spacjami.
  • #12 10440074
    dyro_lisz
    Poziom 10  
    Posty: 12
    Nadal coś jest nie tak. A u ciebie on działa.
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #13 10440109
    Krzysztof Gustaw
    Poziom 23  
    Posty: 392
    Pomógł: 76
    Ocena: 31
    Witam!
    Puszczam swoją wersję, która u mnie działa (Kompilator Pelles-C)
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Wypróbuj.
    A dane wprowadzasz w sposób opisany w moim poprzednim poście?
    (nnn.nnn.nnn.nnn[ENTER] ?)
  • #14 10440230
    dyro_lisz
    Poziom 10  
    Posty: 12
    Wygląda na to, że mój program nie chce działać w moim Dev C++. I to było poważnym kłopotem. Porgram działa dzięki za pomoc. Temat uważam za zamknięty.

Podsumowanie tematu

✨ Użytkownik napotkał problem z programem do konwersji adresu IP na format binarny, który nie wyświetlał wyników. W odpowiedziach zwrócono uwagę na błędy w kodzie, takie jak niewłaściwe indeksowanie tablicy oraz błędne użycie zmiennych w pętli. Sugerowano poprawki, w tym zmianę sposobu wyświetlania zawartości tablicy bin, aby używać wskaźników do łańcuchów znaków. Ostatecznie, po wprowadzeniu poprawek, program zaczął działać poprawnie, a użytkownik zidentyfikował problemy związane z używanym kompilatorem.
Wygenerowane przez model językowy.
REKLAMA