[ 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. Fertility

    Fertility New Member

    Joined:
    5 Nov 2008
    Messages:
    5
    Likes Received:
    1
    Reputations:
    0
    Сшка язык более низкого уровня чем Питон. В этом есть свои плюсы, но и есть свои минусы. Если тебе надо какую-то особую защиту в твоем приложении - тебе придется написать ее самому) Защиты от дурака не существует, зато есть быстродействие, более простой доступ к памяти и предположение что программист не дурак и знает что пишет :D
    Питон ориентирован на то чтоб тебе было максимально легко и комфортно писать программу, С ориентированна на то чтоб компьютеру было максимально легко и комфортно ее исполнять.
    На счет Инт и Хеллоу то это синтаксическая ошибка, такой код просто не скомпилируется. В отличии от Питона в С надо явно задавать тип переменных.
    На счет массивов - если ты не знаешь сколько элементов у тебя будет просто создай масив на количество элементво точно больше чем тебе может протребоватся(если не хочешь особо мучать свою голову), либо динамический масив, указатели, выделение памяти....
    А вообще если ты в книге дочитал до структур, ЧИТАЙ ДАЛЬШЕ, там все это будет....
    ------
    Апаю свой вопрос
    на этапе линка Сшка(VC++ 2008 как и пробовал в 2005) выдает ошибки:
    Code:
    1>Process.obj : error LNK2028: unresolved token (0A000009) "extern "C" struct HWND__ * __stdcall FindWindowW(wchar_t const *,wchar_t const *)" (?FindWindowW@@$$J18YGPAUHWND__@@PB_W0@Z) referenced in function "public: void * __clrcall CProcess::CreateGEProcess(void)" (?CreateGEProcess@CProcess@@$$FQ$AAMPAXXZ)
    
    1>Process.obj : error LNK2019: unresolved external symbol "extern "C" struct HWND__ * __stdcall FindWindowW(wchar_t const *,wchar_t const *)" (?FindWindowW@@$$J18YGPAUHWND__@@PB_W0@Z) referenced in function "public: void * __clrcall CProcess::CreateGEProcess(void)" (?CreateGEProcess@CProcess@@$$FQ$AAMPAXXZ)
    Что ей так не нравится в моей програме, учитывая что по сути там всего одна гореинструкция hWindow=FindWindow(LPCWSTR("TForm"),0); ???
    Пробовал создать консольное приложение, успешно линкует и запускается..... А в ВиндовсФормАпликейшн получается ошибка :(
     
    #1781 Fertility, 7 Nov 2008
    Last edited: 7 Nov 2008
  2. GlOFF

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

    Joined:
    8 May 2006
    Messages:
    689
    Likes Received:
    484
    Reputations:
    4
    Есть наверняка проверки дополнительные на ввод данных и создана система обработки ошибок try catch - поэтому не каждая вылетет. :)
     
    1 person likes this.
  3. GlOFF

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

    Joined:
    8 May 2006
    Messages:
    689
    Likes Received:
    484
    Reputations:
    4
    Fertility Вот так попробуй - hWindow=FindWindowW(LPCWSTR("TForm"),0); :)
     
  4. Fertility

    Fertility New Member

    Joined:
    5 Nov 2008
    Messages:
    5
    Likes Received:
    1
    Reputations:
    0
    Нету такой проверки, более того быть НЕ должно принципиально =) Если програма не вылетает или не появляется сыстем эррор это просто не тру Си программа :D
    Если програмеру такая проверка нужна - он должен написать ее сам! Тоесть считать текстовую переменную, переобразовать ее в число, если это не число сообщить об этом пользователю, а если число то ТОЛЬКО ТОГДА передавать это число на переменную Int :)

    Попробовал, не работает. ошибку выдает туже :( Подобные функции типа GetForegroundWindow тоже линкование не проходят.... Хэлп :confused:
     
    1 person likes this.
  5. VIP

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

    Joined:
    29 Dec 2004
    Messages:
    104
    Likes Received:
    3
    Reputations:
    0
    А сортировать массивы в C можно? Я имею ввиду не методом прохождения в массиве и перекидыванием большего значения в конец, а просто какой-либо функцией?
     
    #1785 VIP, 7 Nov 2008
    Last edited: 7 Nov 2008
  6. iv.

    iv. Elder - Старейшина

    Joined:
    21 Mar 2007
    Messages:
    1,183
    Likes Received:
    438
    Reputations:
    107
    Можно.
     
    1 person likes this.
  7. vikseriq

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

    Joined:
    31 Jul 2008
    Messages:
    118
    Likes Received:
    44
    Reputations:
    2
    в любом языке можно, если есть соответствующая либа. даже если кто напишет ее для асма, то и на асме можно будет - инклудь и ранай )
     
  8. VIP

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

    Joined:
    29 Dec 2004
    Messages:
    104
    Likes Received:
    3
    Reputations:
    0
    Почему этот код не даёт мне 10 случайных чисел?

    Code:
    # include <stdio.h>
    # include <stdlib.h>
    
    int main() {
        int a, i;
        i=0;
        while (i!=10) {
        int rand(a);
        i=i+1;
        printf("%g\n", a);
        }
    }
    
     
  9. iv.

    iv. Elder - Старейшина

    Joined:
    21 Mar 2007
    Messages:
    1,183
    Likes Received:
    438
    Reputations:
    107
    Потому что не использовал srand
     
    1 person likes this.
  10. vikseriq

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

    Joined:
    31 Jul 2008
    Messages:
    118
    Likes Received:
    44
    Reputations:
    2
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    int main(void)
    {
        int nStartValue = time(NULL);
        int i = 0;
        for (i = 0; i<10; i++){
          srand(nStartValue);
          printf("%d\n",rand() % 100);
        }
        return 0;
    }
    
    Странно, srand не спасает.
     
  11. vikseriq

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

    Joined:
    31 Jul 2008
    Messages:
    118
    Likes Received:
    44
    Reputations:
    2
    Ой, ступил ))
    Вот рабочий код:
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    int main()
          {
            int i;
            srand(9);
            for (i=0; i<20; i++)
                 printf("%d\n", rand());
          }
    
     
    1 person likes this.
  12. iv.

    iv. Elder - Старейшина

    Joined:
    21 Mar 2007
    Messages:
    1,183
    Likes Received:
    438
    Reputations:
    107
    Его в цикл не надо пихать..
     
  13. vikseriq

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

    Joined:
    31 Jul 2008
    Messages:
    118
    Likes Received:
    44
    Reputations:
    2
    Ну и финальная версия :)
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    int main(void)
    {
        int nStartValue = time(NULL);
        int i = 0;
        srand(nStartValue);
        for (i = 0; i<10; i++){
          printf("%d\n",rand() % 100);
        }
        return 0;
    }
    
     
    1 person likes this.
  14. Fertility

    Fertility New Member

    Joined:
    5 Nov 2008
    Messages:
    5
    Likes Received:
    1
    Reputations:
    0
    ппц... на нубские вопросы, на которые в любом учебнике по С дают обширное описание, а Гугл выдает целую стопку ответов, ответ появляется сразу, даж находятся люди готовые код писать....
    А чтоб отписать чето на реальную проблему, так все восновном молчат....
     
  15. n4e/\@

    n4e/\@ Elder - Старейшина

    Joined:
    6 May 2008
    Messages:
    138
    Likes Received:
    17
    Reputations:
    0
    Как можно заменить двумерный динамический массив структурой?
    Понятно что как то так:
    Code:
    struct list{int element;
                     list *sled, *vniz;};
    А как ей пользоваться? Всмысли объявлять и записывать туда числа. У меня получается записать только один элемент, и от sled и vniz он почему то вобще не как не зависит
     
  16. Lee_fx

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

    Joined:
    27 Sep 2008
    Messages:
    90
    Likes Received:
    14
    Reputations:
    0
    Доброго времени суток, возник такой вопросец: как можно удалить все пробелы из строки?
    ("5 3 1 2" = "5312")
     
  17. Sinay

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

    Joined:
    1 Sep 2007
    Messages:
    356
    Likes Received:
    365
    Reputations:
    20
    проверять каждый символ строки,если он "равен" пробелу-удалять
     
  18. jawbreaker

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

    Joined:
    7 Jul 2008
    Messages:
    156
    Likes Received:
    76
    Reputations:
    3
    n4e/\@
    Code:
    #include<stdlib.h>
    #include<stdio.h>
    
    struct list_el {
       int val;
       struct list_el * next;
    };
    
    typedef struct list_el item;
    
    void main() {
       item * curr, * head;
       int i;
    
       head = NULL;
    
       for(i=1;i<=10;i++) {
          curr = (item *)malloc(sizeof(item));
          curr->val = i;
          curr->next  = head;
          head = curr;
       }
    
       curr = head;
    
       while(curr) {
          printf("%d\n", curr->val);
          curr = curr->next ;
       }
    }
    
    
    ну это линейный список, как сделать то что тебе надо я думаю ты и сам сможешь теперь догадаться =)
     
    1 person likes this.
  19. n4e/\@

    n4e/\@ Elder - Старейшина

    Joined:
    6 May 2008
    Messages:
    138
    Likes Received:
    17
    Reputations:
    0
    Спасибо получилось. Только есть один вопрос.
    Code:
    curr->next  = head;   
    head = curr; 
    Что происходит в этой части? т.е сначала мы присваиваем curr->next значение NULL
    Потом head = размеру выделенной памяти?
     
  20. FrMn

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

    Joined:
    8 Aug 2008
    Messages:
    51
    Likes Received:
    16
    Reputations:
    7
    не размеру, а адресу
     
Thread Status:
Not open for further replies.