lix писал(а):UPD: да. поспешил mpz_init_set_str нужна
mpz_init_set_str (mpz_ptr x, const char *str, int base)
трулляля. только вот ошибку все еще выдает, а хочется из ide компилить
lix писал(а):UPD: да. поспешил mpz_init_set_str нужна
Кислый писал(а):в ide выдает эту непонятную ошибку
Кислый писал(а):Code::Blocks IDE
gmp - системная либа.
а вот где ключик -lgmp прописать ?
Код: Выделить всё
mpz_init_set_str (mpz_ptr x, const char *str, int base)Исключение в операции с плавающей точкой
Кислый писал(а):ну дык.. не я это придумал. если в либе есть соответствующие функции (rsa) то почему бы и не воспользоваться ?
Кислый писал(а):ВАЖНО и с ВАФОСОМ : вот давайте не будем спорить..
Код: Выделить всё
#define Ё 14
#define Ж 16
#define И 18
#define К 20
text [4] = {Ё,Ж,И,К}O-LED писал(а):Извините, за "новое слово в языке Си"![]()
![]()
но возможно ли как нибудь, применение русских букв в CИ, в частности в #define
напримерКод: Выделить всё
#define Ё 14
#define Ж 16
#define И 18
#define К 20
text [4] = {Ё,Ж,И,К}
Наверное бред, но нужно закодировать кучу массивов содержащих русский текст, и былобы очень удобно "задефинить" все русские буквы, а потом просто собирать массивы русскими буквами
Код: Выделить всё
char text[] = "ЁЖИК";O-LED писал(а):чему тогда у меня будет равно например text[2] ???
Кстати, если строго, то полным аналогом посимвольной инициаизации со скобками { } будетARV писал(а):Код: Выделить всё
text [4] = {Ё,Ж,И,К}
...
но скажите, зачем вам это?! ведь строка в Си инициализируется самым тривиальным способом:Код: Выделить всё
char text[] = "ЁЖИК";
Код: Выделить всё
char text[4] = "ЁЖИК";Код: Выделить всё
char text1[4] = {Ё,Ж,И,К}; // тут 4 можно было и не указывать, всё равно было бы 4
char text2[] = "ЁЖИК"; // тут в массиве будет ограичитель '\0' и будет 5 элементов массива
char text3[4] = "ЁЖИК"; // а тут ограничителя не будет, массив размером 4 элементаНу как-то так:O-LED писал(а):А скажите, как тогда мне лучше объявить массив в котором используются только элементы с 192 по 223, а остальные не нужны (у знаков А-Я код 192-223) ?
Код: Выделить всё
enum { start_char = 'А', end_char = 'Я', total_chars = end_char - start_char +1 };
const char array[total_chars] = { ... };
inline char get_from_array( char ch)
{
if( ch < start_char || ch > end_char ) return ch; // при уверенности в том, что не передадут «запредельное», эту строку можно и убрать
return array[ ch - start_char ];}И чернила для 8-го класса.O-LED писал(а):зы. какую книгу по Си для микроконтроллеров порекомендуете??
avreal писал(а):Иногда удобно, экономит место.Код: Выделить всё
char text1[4] = {Ё,Ж,И,К}; // тут 4 можно было и не указывать, всё равно было бы 4
char text2[] = "ЁЖИК"; // тут в массиве будет ограичитель '\0' и будет 5 элементов массива
char text3[4] = "ЁЖИК"; // а тут ограничителя не будет, массив размером 4 элемента
avreal писал(а):Кстати, если строго, то полным аналогом посимвольной инициаизации со скобками { } будетКод: Выделить всё
char text[4] = "ЁЖИК";
Ой, ну с одинарными кавычками — это просто среди ночи тупо копипастнул и не поправил, извините уж. В добитых своей рукой коментаиях '\0' в кавычки взял, а там — не исправил.asteroid7 писал(а):А Вы проверяли это? А что за компилятор, который позволяет так делать?
По стандарту Си рабочий, в этом примере, только второй массив. В первом нужно символы заключать в одинарные кавычки, а третий ругнётся на размерность. Во все строки, а строка это двойные кавычки, компилятор должен помещать конец строки '\0'.
А вот в C++ так нельзя и это одно из тонких отличий между языками3.5.7 Initialization
...
Finally, the declaration
char s[] = "abc", t[3] = "abc";
defines ``plain'' char array objects s and t whose members are initialized with character string literals. This declaration is identical to
char s[] = { 'a', 'b', 'c', '\0' }, t[] = { 'a', 'b', 'c' };