[ 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 же
     
    1. LEX23

      LEX23 Member

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

        Verx New Member

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

          #colorblind Moderator

          Joined:
          31 Jan 2014
          Messages:
          637
          Likes Received:
          246
          Reputations:
          42
          http://studlab.com/news/operacii_s_polinomami_v_s/2013-07-29-985
           
          1. Verx

            Verx New Member

            Joined:
            30 Sep 2018
            Messages:
            4
            Likes Received:
            0
            Reputations:
            0
            У может быть и вас есть реализация циклических кодов на с ++ ?)
             
            1. Verx

              Verx New Member

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

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

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

                Только троллей нам здесь не хватало...
                 
                rudi likes this.
                1. 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;
                  }
                   
                  1. skibidi

                    skibidi Banned

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

                      rudi Active Member

                      Joined:
                      3 Jun 2010
                      Messages:
                      492
                      Likes Received:
                      187
                      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.
                      1. rudi

                        rudi Active Member

                        Joined:
                        3 Jun 2010
                        Messages:
                        492
                        Likes Received:
                        187
                        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.
                        1. skibidi

                          skibidi Banned

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

                            Verx New Member

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

                              rudi Active Member

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

                                #colorblind Moderator

                                Joined:
                                31 Jan 2014
                                Messages:
                                637
                                Likes Received:
                                246
                                Reputations:
                                42
                                да, да, копай в эту сторону. а потом таскай за собой 20мб библиотек, при программе в 5 строчек.
                                 
                                binarymaster likes this.
                                1. 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 если что.
                                   
                                  1. BabaDook

                                    BabaDook Well-Known Member

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

                                      h3xp1017 Member

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

                                        BabaDook Well-Known Member

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

                                          h3xp1017 Member

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