Results 1 to 5 of 5

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Registered User
    Join Date: Jun:2020
    Location: Bulgaria
    Posts: 3

    Çàäà÷à íà àñåìáëåð

    Çäðàâåéòå! Ìîæå ëè äà ìè ïîìîãíåòå ñ åäíà çàäà÷à íà àñåìáëåð, êîÿòî ìè å çà êóðñîâà? Èìàì ÷àñò îò çàäà÷àòà, íî íå çíàì êàê äà ÿ äîïèøà. Ùå ñúì Âè áëàãîäàðíà! Åòî óñëîâèåòî: Write a function void print_letter_of_my_strdup(char* s, unsigned short n), which prints "my_strdup[n] = L" where L is the letter or ASCII number of the letter at position n. For making a duplicate of the string use a function char *my_strdup(char *s) and for printing use function printf. Tip: Create a string to be duplicated in main() using char *s = (char *)malloc(5 * sizeof(char)); s[0] = 'a'; s[1] = 'b'; s[2] = 'c'; s[3] = 'd'; s[4] = 'e'; s[5] = 0;

    À åòî è ðåøåíèåòî, äîêúäåòî ñòèãíàõ:

    #include <iostream>
    using namespace std;

    char *my_strdup(char *s){
    _asm{
    push s
    call strlen
    add esp,4
    push eax
    call malloc;
    pop ecx
    mov ebx, s
    for:
    mov dl, [ebx + ecx]
    mov [eax+ecx], dl
    dec ecx
    cmp ecx, 0
    jge for
    }
    return s;
    }

    void print_letter_of_my_strdup(char* s, unsigned short n){

    }

    int main()
    {
    cout<<"Hello World";
    char *s=(char *)malloc(5 *sizeof(char));
    s[0]='a';
    s[1]='b';
    s[2]='c';
    s[3]='d';
    s[4]='e';
    s[5]=0;
    cout<<my_strdup(s)<<endl;
    return 0;
    }

    Òàçè ÷àñò îò óñëîâèåòî " which prints "my_strdup[n] = L" where L is the letter or ASCII number of the letter at position n" íå ÿ ðàçáèðàì è çàòîâà íå çíàì êàê äà ÿ íàïðàâÿ. Ãëåäàõ îíëàéí óðîöèòå íà ïðåïîäàâàòåëÿ, íî òîé íå å ðåøàâàë çàäà÷è ñ òàêèâà ASCII ÷èñëà è çàòîâà íå çíàì êàê äà ÿ ðåøà öÿëàòà.
    Ìíîãî ùå ñúì Âè áëàãîäàðíà, àêî ìè ïîìîãíåòå!!!

  2. #2
    ɐ-əpoɔᴉu⋂ ɐí íəÔ anrieff's Avatar
    Join Date: Apr:2004
    Location: Sofia
    Posts: 8,448
    Èäåÿòà íà óñëîâèåòî å ïðè èçâèêâàíå íà

    print_letter_of_my_strdup(s, 0) äà îòïå÷àòâà "my_strdup[0] = a"
    print_letter_of_my_strdup(s, 1) äà îòïå÷àòâà "my_strdup[1] = b"
    ...
    print_letter_of_my_strdup(s, 3) äà îòïå÷àòâà "my_strdup[3] = d"
    ...

    Ðàçáèðà ñå çàâèñè êàêúâ å ñòðèíãà s. Åäèí âèä ôóíêöèÿòà êëîíèðà ñòðèíãà è îòïå÷àòâà n-òèÿ ìó ñèìâîë (çàäàäåí êàòî ïàðàìåòúð).
    Last edited by anrieff; 3rd June 2020 at 23:55.
    Åòî òàêà ñå ïëîäÿò òå, êàçâàì ñè àç. Ïîä íîñà òè.
    "640K îught to be enough for anybody" - Bill Gates, 1981
    Òåñòîâå íà áàòåðèè::Machine specs::Fract::AGG::ÍåÑåÑúðäè×îâå÷å::Baileys::blog::YouTube channel

  3. #3
    Registered User
    Join Date: Jun:2020
    Location: Bulgaria
    Posts: 3
    Ìíîãî áëàãîäàðÿ! Ñåãà ðàçáðàõ. À êàê áè ñòàíàëî òîâà ñ êîä?

  4. #4
    ɐ-əpoɔᴉu⋂ ɐí íəÔ anrieff's Avatar
    Join Date: Apr:2004
    Location: Sofia
    Posts: 8,448
    Íà C áè áèëî íåùî îò âèäà íà

    Code:
    char* duplicate = my_strdup(s);
    printf("my_strdup[%d] = %c\n", n, duplicate[n]);
    íî ïðåäïîëàãàì öåëòà íà äîìàøíîòî å òîçè êîä äà áúäå íàïèñàí íà àñåìáëåð - ïîäîáíî êàêòî å íàïðàâåíî âå÷å çà my_strdup.
    Åòî òàêà ñå ïëîäÿò òå, êàçâàì ñè àç. Ïîä íîñà òè.
    "640K îught to be enough for anybody" - Bill Gates, 1981
    Òåñòîâå íà áàòåðèè::Machine specs::Fract::AGG::ÍåÑåÑúðäè×îâå÷å::Baileys::blog::YouTube channel

  5. #5
    Registered User
    Join Date: Jun:2020
    Location: Bulgaria
    Posts: 3
    Íàèñòèíà ìíîãî áëàãîäàðÿ!

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Copyright © 1999-2011 Õàðäóåð ÁÃ. Âúçìîæíî å ñúäúðæàíèåòî íà òàçè ñòðàíèöà äà å îáåêò íà àâòîðñêè ïðàâà.
iskamPC.com | mobility.BG | Bloody's Techblog | Êðèïòîâàëóòè è ìàéíèíã | 3D Vision Blog | Ìàãàçèí çà åëåêòðîííè öèãàðè