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

Analiza funkcji C++: unsigned qq i x(a,b) - co realizują?

Kamilos54 15 Wrz 2010 17:26 1750 15
REKLAMA
  • #1 8513804
    Kamilos54
    Poziom 10  
    Posty: 15
    Witam
    Mam problem z rozszyfrowaniem programów napisanych w C++. Proszę o pomoc.
    Treści zadań:

    1.
    unsigned qq (unsigned x, int p, int n)
    {
    return (x>>(p+1-n)) & ~(~0<<n);
    }


    2.
    x(a,b)
    {
    char *a,*b;
    while (*a++=*b++);
    }
    

    Z góry dziękuje:D

    Proszę pamiętać o używaniu znaczników code. - arnoldziq
  • REKLAMA
  • #2 8513842
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    << - przesunięcie bitowe w lewo (na polski - pomnożenie razy 2)
    >> - przesunięcie bitowe w prawo (na polski - podzielenie przez dwa do części całkowitej)
    ~ - negacja logiczna (NOT)
    & - iloczyn logiczny (AND)

    *x - wskaźnik na element (podczas definiowania; podczas użycia - jest to wartość elementu wskazana przez wskaźnik)
  • REKLAMA
  • #3 8513956
    Kamilos54
    Poziom 10  
    Posty: 15
    A w praktyce? Co konkretnie będą robiły?
  • REKLAMA
  • Pomocny post
    #4 8514003
    szelus
    Poziom 34  
    Posty: 1508
    Pomógł: 315
    Ocena: 53
    W praktyce, te fragmenty są w czystym C, nie C++.
    Podpowiem, że pierwszy wycina pole bitowe.
    Drugi przykład nawet się nie skompiluje (pewnie źle przepisany).
  • #5 8514025
    Kamilos54
    Poziom 10  
    Posty: 15
    Przykład dobrze przepisany, Ktoś musiał go źle napisać. Nie znam się na programowaniu, a zależy mi bardzo na tym, żeby dowiedzieć się co robią te dwa programiki.. Wielkie dzięki za podpowiedzi.
  • #6 8514047
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    To po prostu odpal i się przekonaj. Debugger i kartka papieru się przydadzą ;) Podpowiedzi już masz, że w przypadku pierwszej funkcji najlepiej operować sobie na kodzie binarnym.
  • #7 8514073
    Kamilos54
    Poziom 10  
    Posty: 15
    Używam dev c++ wklejam tam te kody, ale faktycznie pokazują się błędy. :|
  • #8 8514154
    szelus
    Poziom 34  
    Posty: 1508
    Pomógł: 315
    Ocena: 53
    Bo, na dodatku, to nie są gotowe programy, tylko pojedyncze funkcje. Trzeba je obudować jeszcze w jakiś main() itp.
    Wiesz, zgodnie z regulaminem p.16 nie odrabiamy tutaj za nikogo zadań domowych. Jeżeli potrafisz uzasadnić, do czego Ci to potrzebne skoro nie znasz się na programowaniu (i nie powinieneś się znać), to może ktoś się zlituje i poda rozwiązanie.
  • #9 8514194
    Kamilos54
    Poziom 10  
    Posty: 15
    Student w potrzebie.. Sesja itp. Nie żadne zadanie tylko potrzebuje to po prostu zrozumieć, a nie znając się raczej mi to nie pójdzie. Pomoc nie gryzie, jeśli ktoś niema ochoty lub ma opory to przecież nie zmuszam. Dziękuje wszystkim. Pozdrawiam
  • Pomocny post
    #10 8514276
    szelus
    Poziom 34  
    Posty: 1508
    Pomógł: 315
    Ocena: 53
    Z pierwszą funkcją już Ci podpowiedziałem. Weź ołówek, narysuj sobie zmienną x jako ciąg bitów (binarnie) i zobacz co się dzieje w trakcie operacji przesuwania i maskowania (bitowy operator &). Tak się najwięcej nauczysz.

    W drugim przypadku powinno być chyba (składnia C "K&R"):
    
    x( a, b )
    char *a, *b;
    {
        while ( *a++ = *b++ );
    }
    

    Oczywiście głowy nie dam, że autor nie miał czegoś innego na myśli, ale taki przykład jest funkcjonalny. Zwróć uwagę, że operacja wewnątrz nawiasu while jest podstawieniem, a podstawienie w C zwraca jako wynik wartość podstawianą. Z kolei pętla while jest kontynuowana dopóki wynik jest różny od zera (warunek jest sprawdzany na początku). Zwróć uwagę na priorytety operatorów!
  • #11 8514545
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    Mogę jedno pytanie zadać poza tematem? Jakie jest uzasadnienie zaliczania przedmiotu o którym się nie ma pojęcia? Za przeproszeniem, ale gdyby np miał mnie leczyć lekarz, który potrafi tylko pytać się innych, co ma robić, a sam się nie znał na rzeczy, to... chyba nie trzeba wyjaśniać. Z resztą patrząc na to, co rząd nasz chce zrobić, to chyba też jego członkowie na studiach podobnie postępowali.

    Jeśli nie znasz się nic na programowaniu, a jest to elementem zaliczenia przedmiotu - zacznij od nauki podstaw. Wówczas będziesz potrafił utworzyć program z podanych funkcji i przynajmniej sprawdzić, czy Twoje własne domniemania są poprawne. Bo zwróć uwagę, że przy obecnej sytuacji ktoś mógłby Ci powiedzieć, że pierwszy kod oblicza całkę nieoznaczoną drugiego stopnia z funkcji przekazanej w parametrach, a Ty uwierzysz i z radością pobiegniesz do egzaminatora?
  • #12 8514604
    Kamilos54
    Poziom 10  
    Posty: 15
    Aż tak głupi nie jestem aby uwierzyć w coś takiego. To fakt, z tym niedouczonym lekarzem. Ale nawet lekarze się ze sobą konsultują, bo przecież zawsze jest ktoś lepszy. Po prostu każdy ma swoje mocne i słabe strony. Coś lepiej idzie, coś gorzej. Nie studiuje informatyki wiec nikt się nie musi martwic o przyszłość narodu. Pan studiując też na pewno nie raz miał problemy z jakimś przedmiotem.

    Pozdrawiam i dziękuje za pomoc
  • #13 8515976
    MiL999
    Poziom 26  
    Posty: 1173
    Pomógł: 59
    Ocena: 75
    Ktoś pyta jak coś działa a w odpowiedzi dostaje wykład że powinien najpierw przeczytać kilka książek i się nauczyć podstaw. To po co jest to forum? Czy gdybym zapytał jak w skrócie paracetamol wpływa na inhibicję cyklooksygenazy w mózgu to też musiałbym przeczytać książkę i pójść na korepetycje do farmaceuty? Czy jednak mógłbym tu zapytać?
  • REKLAMA
  • #14 8516044
    tymon_x
    Poziom 30  
    Posty: 1021
    Pomógł: 171
    Ocena: 15
    MiL999 napisał:
    Czy gdybym zapytał jak w skrócie paracetamol wpływa na inhibicję cyklooksygenazy w mózgu to też musiałbym przeczytać książkę i pójść na korepetycje do farmaceuty? Czy jednak mógłbym tu zapytać?

    Prędzej odpowiedź byś gdzie indziej dostał (; No i dobrze, że coś stara się zrozumieć. Ze względu na słabe gimnazjum (ble, inf) oraz LO, miałem kłopoty, trudności z programowaniem na I roku (elektronika jakby co). A teraz, assembler(AVR, ARM), C/C++, HDL (VHDL/Verilog), teraz podbijam pod C#, plus jakieś tam drobne podstawy Java (ble, nienawidzę) oraz Matlab'a, skryptów *.m. A wcześniej z programowania nie rozumiałem nic w ząb, mimo że kosiłem inne przedmioty, że aż miło spojrzeć w indeks. Więc nie ma co się powoływać na słynne p.16 regulaminu (;
  • #15 8516113
    szelus
    Poziom 34  
    Posty: 1508
    Pomógł: 315
    Ocena: 53
    @MiL999
    Nie wydaje mi się, aby to forum było odpowiednie do pytania o paracetamol. :twisted:
    Jeżeli zadałbyś takie pytanie na forum medycznym, to myślę, że szansa na podobną odpowiedź (doczytaj w książkach) byłaby całkiem spora. Żeby zrozumieć odpowiedź na pewne szczegółowe pytania techniczne, potrzebna jest pewna podstawowa wiedza "w temacie". Laikowi będzie ciężko zrozumieć odpowiedź w rodzaju:
    Cytat:

    Obwodowym N-końcem EGFD łączy się z niewielką, położoną brzeżnie prawoskrętną a-spiralą MBD, która otacza hydrofobowy kanał prowadzący do centrum aktywnego enzymu.

    W tym przypadku od razy widać, że kod, o który było pytanie jest z zakresu "pytań studenckich". Nie ma sprawy, jeżeli ktoś ma problem ze zrozumieniem jakiegoś elementu i oczekuje wskazówek. Ale jeżeli kogoś interesuje tylko "gotowiec", to kłania się regulamin p. 16. Tutaj przecież autor pytania otrzymał użyteczne wskazówki, a nie tylko lakoniczne "odesłanie do książek", jak sugerujesz. "Gotowiec" nie jest rozwiązaniem dla kogoś, kto chce się nauczyć.

    P.S. Wiem, że zdarza się, iż kryterium doboru przedmiotów w programie studiów czasem bywa bardziej dostępność wykładowców, niż przydatność tych przedmiotów absolwentowi kierunku, ale taki przypadek też trzeba umieć uzasadnić.
  • #16 8521892
    Kamilos54
    Poziom 10  
    Posty: 15
    Jakbyś konał i miał przed sobą niepodpisaną trutkę i lekarstwo to też oczekiwałbyś wskazówek np. składników? Ja myślę ze zadanie domowe polega na czymś innym jak to co tu było rozważane. Ja porostu przygotowywałem się do zaliczenia. Być może jedni maja dużo czasu żeby siedzieć przy książkach. Ja oczekiwałem konkretnej odpowiedzi ze wskazówkami bo wszedłem specjalnie na dział programowanie a nie inny z tym nie związany. Szukałem tam gdzie są od tego specjaliści. Jakbym chciał takiej odpowiedzi to zapytałbym gdziekolwiek.

Podsumowanie tematu

LABEL_AI_GENERATED
W dyskusji poruszono dwa fragmenty kodu w języku C++, które użytkownik chciał zrozumieć. Pierwsza funkcja `unsigned qq(unsigned x, int p, int n)` wykonuje operacje bitowe, w tym przesunięcia w lewo i prawo oraz maskowanie, co pozwala na wycinanie pól bitowych. Druga funkcja `x(a, b)` jest przykładem kopiowania zawartości jednego wskaźnika do drugiego, jednak nie skompiluje się w obecnej formie. Uczestnicy dyskusji podkreślili, że kod wymaga dodatkowego kontekstu, jak np. funkcji `main()`, oraz że zrozumienie działania kodu wymaga znajomości podstaw programowania. Użytkownik wyraził chęć nauki i zrozumienia, a także otrzymał sugestie dotyczące użycia debuggera oraz analizy kodu w formie binarnej.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA