Здравствуйте, возник вопрос с делением полиномов, кто нибудь сталкивался с таким, если да, покиньте идей пожалуйста)
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; }
Код на С. Объявил динамический массив структур. В структуре 2 поля имеют типа char*. Как правильно записать строчку для очистки этого массива. Кажется, просто записав free(<название массива>) будет утечка памяти, тогда как правильно, пердварительно написать free(<"название массива"."название поля">)? Или нужно это как-то с индексацией еще объединить?
Смотря как для 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; }
А вот пример трехмерного массива Выделение памяти, инициализация, вывод информации, и освобождение памяти 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; }
Здравствуйте, подскажите пожалуйста норм книгу для изучения визуального программирования в с ++ билдере
Всем привет. В общем такое дело, для кодирования в 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 если что.
Есть ли нормальная IDE или расширение к VS для с++ Что бы ошибки и всякие проёбы подсвечивала, или подсказывала где искать. Что что в VS я разочарован пока что. мб под # норм но ++ пока что не нрав.
я более привередливой иде чем студия не видел. но если тебе хочется чтоб прям вообще тебя по рукам пиздили даже за то что ты переменные некрасиво называешь, то тут очевидно джетбрейнс - Clion.
Да мне просто что бы подсвечивала где не поставил ; или не поставил ( скобку итд. Я типа только учусь, поэтому рука не набита