[ C / C++ ] — начинающим: задаем вопросы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by begin_end, 28 Apr 2015.

  1. Evan

    Evan Banned

    Joined:
    19 Aug 2016
    Messages:
    78
    Likes Received:
    203
    Reputations:
    0
    На чистый Си нету new же
     
  2. LEX23

    LEX23 Member

    Joined:
    8 Aug 2010
    Messages:
    9
    Likes Received:
    6
    Reputations:
    0
    Согласен. Только malloc/calloc
     
  3. Verx

    Verx New Member

    Joined:
    30 Sep 2018
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте, возник вопрос с делением полиномов, кто нибудь сталкивался с таким, если да, покиньте идей пожалуйста)
     
  4. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    634
    Likes Received:
    246
    Reputations:
    42
  5. Verx

    Verx New Member

    Joined:
    30 Sep 2018
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
  6. Verx

    Verx New Member

    Joined:
    30 Sep 2018
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Подскажите пожалуйста тип данных для хранения только 0 и 1. С++
     
  7. binarymaster

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

    Joined:
    11 Dec 2010
    Messages:
    4,717
    Likes Received:
    10,195
    Reputations:
    126
    bool

    Только троллей нам здесь не хватало...
     
    rudi likes this.
  8. terszki

    terszki New Member

    Joined:
    1 Aug 2017
    Messages:
    9
    Likes Received:
    2
    Reputations:
    0
    like that
    Code:
    #include<iostream>
    
    bool is_prime(int a)
    {
        int c = 0;
        for (int i = 2; i <= a / 2; ++i) if (a % i == 0) ++c;
        return !c;
    }
    
    int main()
    {
        int count = 0;
        for (int i = 2; i <= 100000; ++i) if (is_prime(i) && is_prime(2 * i + 1)) ++count;
        std::cout << count << endl;
    }
     
  9. skibidi

    skibidi Banned

    Joined:
    31 Oct 2018
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Код на С. Объявил динамический массив структур. В структуре 2 поля имеют типа char*. Как правильно записать строчку для очистки этого массива. Кажется, просто записав free(<название массива>) будет утечка памяти, тогда как правильно, пердварительно написать free(<"название массива"."название поля">)? Или нужно это как-то с индексацией еще объединить?
     
  10. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    492
    Likes Received:
    186
    Reputations:
    5
    Смотря как для char* выделяешь память.
    Если через malloc то примерно так (и да... тогда нужно в эти переменные помещать строки через ф-цию strncpy)
    Code:
    Struct User {
        char* name;
        char* surname;
    };
    int n=10;
    struct User* list = (struct User*)malloc(sizeof(struct User) * n);
    // init
    for(int i=0; i<n; ++i) {
        list[i].name = malloc(20);
        list[i].surname = malloc(20);
    };
    // free
    for(int i=0; i<n; ++i) {
        free(list[i].name);
        free(list[i].surname);
    };
    free(list);
    Если через строковые литералы то так
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    #define USERS 10
    
    struct User {
        char* name;
        char* surname;
    };
    
    int main()
    {
        struct User* list = (struct User*)malloc(USERS * sizeof(struct User));
        // init
        for (int i=0; i<USERS; ++i) {
            list[i].name = "hello";
            list[i].surname = "world";
        };
        // print
        for (int i=0; i<USERS; ++i) {
            printf("%s - %s\n", list[i].name, list[i].surname);
        };
        // free
        free(list);
    
        return 0;
    }
    
     
    #130 rudi, 5 Nov 2018
    Last edited: 6 Nov 2018
    #colorblind likes this.
  11. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    492
    Likes Received:
    186
    Reputations:
    5
    А вот пример трехмерного массива
    Выделение памяти, инициализация, вывод информации, и освобождение памяти
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    #define ROW 10
    #define COL 20
    #define ITEM 30
    
    int main()
    {
        int ***p = (int***)malloc(ROW * sizeof(int**));
        // malloc
        for (int i=0; i<ROW; ++i) {
            p[i] = (int**)malloc (COL * sizeof(int*));
            for (int j=0; j<COL; ++j) {
                p[i][j] = (int*)malloc (ITEM * sizeof(int));
                for (int z=0; z<ITEM; ++z) {
                    p[i][j][z] = z+1;
                }
            }
        }
    
        // print
        for (int i=0; i<ROW; ++i) {
            for (int j=0; j<COL; ++j) {
                for (int z=0; z<ITEM; ++z) {
                    printf("%d\n", p[i][j][z]);
                }
                printf("-----\n");
            }
        }
    
        // free
        for (int i=0; i<ROW; ++i) {
            for (int j=0; j<COL; ++j) {
                free(p[i][j]);
            }
            free(p[i]);
        }
        free(p);
    
        return 0;
    }
    
     
    #colorblind likes this.
  12. skibidi

    skibidi Banned

    Joined:
    31 Oct 2018
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Спасибо) Первый вариант именно тот, что нужен был)
     
  13. Verx

    Verx New Member

    Joined:
    30 Sep 2018
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте, подскажите пожалуйста норм книгу для изучения визуального программирования в с ++ билдере
     
  14. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    492
    Likes Received:
    186
    Reputations:
    5
    Бросай ты этот c++ Builder, лучше копай в сторону QT
     
  15. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    634
    Likes Received:
    246
    Reputations:
    42
    да, да, копай в эту сторону. а потом таскай за собой 20мб библиотек, при программе в 5 строчек.
     
    binarymaster likes this.
  16. besfamilnyi

    besfamilnyi Member

    Joined:
    5 Jun 2012
    Messages:
    45
    Likes Received:
    10
    Reputations:
    0
    Всем привет.
    В общем такое дело, для кодирования в base64 в RadStudio есть компонент, на форме работает файл картинки например нормально кодирует, но при динамичном создании TIdEncoderMIME * me1=new TIdEncoderMIME(NULL); (все нужные hpp подключены) в потоке не кодирует, в codeguard куча ошибок указывающих туда куда я не полезу никогда, куда то в глубины этого компонента, полез в гугл, случайно наткнулся на подобную проблему на форуме radstudio, forums.embarcadero.com/message.jspa?messageID=664770
    Code:
    Это не ошибка в Indy, это ошибка в самом C ++ Builder.
    ошибка устранена 3 года назад в Indy 10.5.8 SVN rev 4652 с введением
    WORKAROUND_INLINE_CONSTRUCTORS определить в IdCompilerDefines.inc, который
    комментируется следующим образом:
    {$IFDEF CBUILDER}
    // When generating a C++ HPP file, if a class has no explicit constructor
    // defined and contains compiler-managed members (xxxString, TDateTime,
    // Variant, DelphiInterface, etc), the HPP will contain a forwarding
    // inline constructor that implicitally initializes those managed members,
    // which will overwrite any non-default initializations performed inside
    // of InitComponent() overrides! In this situation, the workaround is to
    // define an explicit constructor that forwards to the base class constructor
    // manually.
    {$DEFINE WORKAROUND_INLINE_CONSTRUCTORS}
    {$ENDIF}
    //перевод
    {$ IFDEF CBUILDER}
    // При создании файла C ++ HPP, если у класса нет явного конструктора
    // определено и содержит управляемые компилятором члены (xxxString, TDateTime,
    // Вариант, DelphiInterface и т. Д.), ГЭС будет содержать пересылку
    // встроенный конструктор, который неявно инициализирует эти управляемые элементы,
    // который перезапишет любые инициализации не по умолчанию, выполненные внутри
    // of InitComponent () переопределяет! В этой ситуации обходным путем является
    // определяем явный конструктор, который перенаправляет в конструктор базового класса
    // вручную.
    {$ DEFINE WORKAROUND_INLINE_CONSTRUCTORS}
    {$ ENDIF}
    
    Но мне эта инфа как мартышке очки... Эти умники лучше бы пример блин привели как правильно делать.
    Кто нибудь может подсказать, вообще не понимаю что нужно сделать, как определить этот явный конструктор который перенаправляет в конструктор базового класса?

    версия моего инди 10.6.2.5263 если что.
     
  17. BabaDook

    BabaDook Well-Known Member

    Joined:
    9 May 2015
    Messages:
    1,063
    Likes Received:
    1,559
    Reputations:
    40
    Есть ли нормальная IDE или расширение к VS для с++ Что бы ошибки и всякие проёбы подсвечивала, или подсказывала где искать. Что что в VS я разочарован пока что. мб под # норм но ++ пока что не нрав.
     
  18. h3xp1017

    h3xp1017 Member

    Joined:
    28 Oct 2015
    Messages:
    84
    Likes Received:
    25
    Reputations:
    1
    я более привередливой иде чем студия не видел. но если тебе хочется чтоб прям вообще тебя по рукам пиздили даже за то что ты переменные некрасиво называешь, то тут очевидно джетбрейнс - Clion.
     
    BabaDook likes this.
  19. BabaDook

    BabaDook Well-Known Member

    Joined:
    9 May 2015
    Messages:
    1,063
    Likes Received:
    1,559
    Reputations:
    40
    Да мне просто что бы подсвечивала где не поставил ; или не поставил ( скобку итд. Я типа только учусь, поэтому рука не набита
     
  20. h3xp1017

    h3xp1017 Member

    Joined:
    28 Oct 2015
    Messages:
    84
    Likes Received:
    25
    Reputations:
    1
    студия подсвечивает. сбрось настройки, мб чето поломал там