[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    Это относительное смещение позиции в ascii, с которой начинаются цифры. Так как символы располагаются последовательно в таблице, отнимая первый из них от введеного, можно узнать его номер.
     
    1 person likes this.
  2. nijat11

    nijat11 New Member

    Joined:
    17 Jun 2011
    Messages:
    18
    Likes Received:
    0
    Reputations:
    5
    Всем привет. Начал читать книгу Компьютерные сети а там листнинги на языке СИ но как я не пытался бы компилировать их все равно компилятор выдаёт кучу ошибок.Вот код файла protocol.h
    #define MAX_PKT 1024
    typedef enum {false, true} boolean;
    typedef unsigned int seqjir;

    typedef struct {unsigned char data[MAX_PKT];} packet;
    typedef enum {data, ack. nak} frante_kind;
    typedef struct {

    frame_kind kind;
    seqjir seq;
    seqjir ack;
    packet info;
    } frame;

    void wait_for_event(event_type *event);

    void from_network_layer(packet *p) ;

    void to_network_layer(packet *p) ;

    void from_physical_layer(frame *r) ;

    void to_physical_layer(frame *s) ;

    void start_timer(seqjir k);

    void stop_timer(seq_nr k);

    void start_ack_timer(void);

    void stop_ack_timer(void);

    void enable_network_layer(void);

    void disable_network_layer(void);

    fdefine inc(k) if (к < MAX SEQ) к = к + 1; else к = 0


    А вот сама програмка


    [COLOR=DarkRed]typedef enum {frame_arrival} event_type;

    #include "protocol.h"

    void senderl(void)
    {
    frame s;
    packet buffer;
    while(true) {
    from_network_layer(&buffer);

    s.info=buffer;
    to_physical_layer(&s);
    }

    }

    void receiverl(void)
    {
    frame r;

    event_type event;

    while(true)
    {
    wait_for_event(&event);
    from_physical_layer(&r);
    to_network_layer(&r.info);
    }
    [/COLOR]
     
    #6762 nijat11, 9 Oct 2011
    Last edited: 9 Oct 2011
  3. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Аж глаза выедает. Верни белый цвет!
     
  4. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    Да не скомпилится оно.
    Это бутофорные функции. Где файл с реализацией этих функций? Или хотя бы либа!
     
  5. nijat11

    nijat11 New Member

    Joined:
    17 Jun 2011
    Messages:
    18
    Likes Received:
    0
    Reputations:
    5
    В книге не было написано про какой-то другой файл лишь эти листнинги. Книга Компьютерные сети 4-е издание автор Э.Таненбаум страница 244
     
  6. Apathy

    Apathy New Member

    Joined:
    25 Aug 2011
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0
    как найти по процессу путь к файлу,
    и через реестр например к опере или квипу
     
  7. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    http://msdn.microsoft.com/en-us/library/windows/desktop/ms684839%28v=vs.85%29.aspx

     
    _________________________
  8. Apathy

    Apathy New Member

    Joined:
    25 Aug 2011
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0
    как лучше находить путь к файлам программ?
    1-по процессам
    2-по реестру
    3-по поиску файлов по маске%programfiles% и тд
     
    #6768 Apathy, 10 Oct 2011
    Last edited: 10 Oct 2011
  9. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Текст по ссылке не читал видимо?

    CreateToolhelp32Snapshot, Process32First, Process32Next

    Или GetProcessImageFileName, QueryFullProcessImageName
     
    _________________________
  10. Apathy

    Apathy New Member

    Joined:
    25 Aug 2011
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0
    читал, не понял, изввиняюсь, щас пытаюсь но не знаю как хендл процесса добыть или я опять не то понимаю
    и будет ли эта функция работать на 32 разрядных машинах
     
    #6770 Apathy, 10 Oct 2011
    Last edited: 10 Oct 2011
  11. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    OpenProcess
    http://msdn.microsoft.com/en-us/library/windows/desktop/ms684320%28v=vs.85%29.aspx

    В описании функций написаны все необходимые сведения.


    Тебе уже выше написали, что приведенный тобой код не скомпилится, т.к. отсутствует реализация методов.
     
    _________________________
    1 person likes this.
  12. Deani

    Deani New Member

    Joined:
    9 Nov 2009
    Messages:
    49
    Likes Received:
    1
    Reputations:
    0
    Такая задачка:
    Есть PHP скрипт на сервере (http://127.0.0.1/base.php), и нужно ему передать POST запрос, name i lastname, через curl. Как это написать на C++ ?
     
  13. C@T

    C@T Member

    Joined:
    7 Sep 2011
    Messages:
    12
    Likes Received:
    6
    Reputations:
    10
    зачем курл, не проще ли сокеты заюзать

    string SendPOST(string host, string path, const string &postdata)
    {
    SOCKET Sock = socket(AF_INET,SOCK_STREAM,IPPROTO_IP);

    sockaddr_in Addr;
    Addr.sin_family = AF_INET;
    Addr.sin_port = htons(80);

    hostent* h;
    in_addr Buf;
    h = gethostbyname(host.c_str());
    Buf.S_un.S_addr = *((unsigned long*)(*((*h).h_addr_list)));
    Addr.sin_addr = Buf;

    if(connect(Sock,(sockaddr*)&Addr,sizeof(Addr)) == -1) return "";

    string req = "POST " + path + " HTTP/1.1\r\n" +
    "Host: "+ host+"\r\n" +
    "User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)\r\n"+
    "Connection: close\r\n" +
    "Content-Type: application/x-www-form-urlencoded\r\n";// +
    req += "Content-Length:" + IntToStr(postdata.length()) + "\r\n\r\n" +
    postdata;

    if (send(Sock, req.c_str(), req.length(), 0) == SOCKET_ERROR)
    {
    closesocket(Sock);
    return "";
    }

    string response = "";
    while (true)
    {
    char buf[2*1024] = "";
    int rv = recv (Sock, buf, sizeof(buf), 0);
    if (rv <= 0) break;

    response.insert(response.end(), buf, buf + rv);
    }

    closesocket(Sock);
    return response;
    }


    Пример

    string text = SendPOST("127.0.0.1", "/base.php", "test0=12345&test1=54321");
     
  14. Deani

    Deani New Member

    Joined:
    9 Nov 2009
    Messages:
    49
    Likes Received:
    1
    Reputations:
    0
    можно ещё , если не сложно, обяснить код программы ? ) Если не затруднит, то ещё какий библиотеки нужно для этого подключать ?
     
    #6774 Deani, 11 Oct 2011
    Last edited: 11 Oct 2011
  15. =Zeus=

    =Zeus= Member

    Joined:
    10 Aug 2009
    Messages:
    213
    Likes Received:
    54
    Reputations:
    5
    Зачем ты пишешь программы, если не понимаешь даже элементарного? Начни с азов, так будет легче, а постепенно переходи к более сложному. Толку от того, что тебе кто-то разжует и положит в рот - 0.
     
  16. Apathy

    Apathy New Member

    Joined:
    25 Aug 2011
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0
    HKEY hKey;
    char Path[200];
    if(RegOpenKey(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Unistall\\DX10",&hKey)==ERROR_SUCCESS){
    RegQueryValue(hKey,"UnistallSttring",Path,PLONG(Path));
    MessageBox(0,Path,0,0);
    }
    как правильно считать понять не могу
     
    #6776 Apathy, 12 Oct 2011
    Last edited: 12 Oct 2011
  17. LASS0

    LASS0 Member

    Joined:
    3 Jan 2009
    Messages:
    0
    Likes Received:
    17
    Reputations:
    1
    Подскажите, почему не происходит вывода значения Х, когда он равен 2?

    PHP:
    # include <iostream.h>
    int main() {
        
    float x=1;
        while (
    3) {
           if (
    == 2)
               
    cout <<"\nx="<<x;
           
    += 0.1;
        }
    }
     
  18. bad_boy

    bad_boy Elder - Старейшина

    Joined:
    30 Dec 2004
    Messages:
    187
    Likes Received:
    33
    Reputations:
    3
    LASS0, числа с плавающей запятой лучше писать как 1.0f иначе там в десятых/сотых/тысячных могут появиться лишние значения., т.е.:
    Code:
    int main() { 
        float x=1.0f; 
        while (x < 3.0f) { 
           if (x == 2.0f) 
               cout <<"\nx="<<x; 
           x += 0.1f; 
        } 
    } 
    
    я не знаю, решит ли это проблему, это навскидку.
     
  19. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    Не выведет из-за ошибок округления. Так как сам формат ограничен, ты никогда не получишь точного числа.

    Пример выше также может не сработать.
     
  20. LASS0

    LASS0 Member

    Joined:
    3 Jan 2009
    Messages:
    0
    Likes Received:
    17
    Reputations:
    1
    А как тогда можно переделать, что бы выполнялось условие x==2 и цикл с шагом 0.1?
     
Thread Status:
Not open for further replies.