М.Двач / Программирование

Этого треда уже нет.
Это копия, сохраненная 14 марта 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

78 Кб, 792x1023

C Programming Language #16 # OP 21 Дек, 18:19 #898241 В конец треда | Веб

Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Что читать:

- Классика от Отцов: http://www.cypress.com/file/56651/download
- Годное пособие для гуманитариев: http://c.learncodethehardway.org/book/
- Немного примеров хорошего стиля: http://www.oualline.com/books.free/style/index.html
- ООП, например: http://www.cs.rit.edu/~ats/books/ooc.pdf
- Стандарт ISO/IEC 9899:1999 (он же C99): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (драфт) не драфт ищем на торрентах
- Стандарт ISO/IEC 9899:2011 (он же C11): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf (драфт)
- man/Dash/zealdocs

Чем конпелировать:

- Очевидный GCC.
- clang: оче годно, батя рекомендует.
- Intel C++ Compiler: оптимизации, тысячи их.
- Visual Studio 20152017 RC Community Edition: внезапно этим стало можно пользоваться, особенно с тулсетом clang/C2. Поддержка C11 на уровне "есть все, что тебе понадобится в реальном проекте плюс кривая библиотека". Анализатор кода в комплекте.
- Pelles C (шиндоуз онли): поучиться, вкатиться в C11 (стандарт полностью реализован, имеются в том числе threads.h и прочие stdatomic.h), но количество багов в оптимизаторе и редкие апдейты напрочь отбивают желание собирать этим что-то сколько-нибудь серьезное.
- TCC: очень маленький компилятор с багами и неполной поддержкой C99. С ключом -run умеет компилировать код в память и запускать его, что позволяет писать скрипты прямо на сишечке.

Что еще почитать:

http://c-faq.com/
FAQ из comp.lang.c. Древний, но все еще актуален.

Stephen Prata "C Primer Plus, 6th Edition" (2014)
Свежая знает про C89, C99, C11, описывает различия, объемная около тысячи страниц, годная хотя есть некоторые шероховатости, с вопросами, упражнениями и ответами. Читать после K&R или до.

Samuel P. Harbison, Guy L. Steele Jr. "C: A Reference Manual, 5th Edition" (2002)
Ебаный пересказ стандартов C89 и C99 (включая стандартную библиотеку). Для не осиливающих стандарт в оригинале. Читать в качестве подготовки к собеседованиям (есть задачник с ответами) и для ознакомления с масштабами пиздеца перед написанием своего парсера/компилера.

Peter Van Der Linden "Expert C Programming. Deep C Secrets" (1994)
"Си: грязные истории". Смехуечки, немного объяснений, чем обусловлены особенности языка, всем известные подводные камни кто там ругал косяки в JS? у нас в сишечке их гораздо больше, просто они лучше спрятаны, немного байтоебли и непонятно откуда взявшаяся глава про старинные плюсы. Читать в качестве сказки на ночь (на пару вечеров хватит).

Ben Klemens "21st Century C: C Tips from the New School" (2012)

Stephen G. Kochan "Programming in C (3rd Edition или 4th Edition, если найдется)" (2014)

MISRA Ltd. "Guidelines for the Use of the C Language in Critical Systems" (2013)
Набор рекомендаций по написанию надежного кода на C (промышленный стандарт). Читать - однозначно, следовать - вдумчиво и без фанатизма. Также можно посмотреть https://www.securecoding.cert.org/confluence/display/c/SEI+CERT+C+Coding+Standard

Еще более длинный список: http://www.iso-9899.info/wiki/Books#Learning_C

Прошлые треды:

- https://arhivach.org/thread/106153/
- https://arhivach.org/thread/131949/
- https://arhivach.org/thread/140570/
- https://arhivach.org/thread/153698/
- https://arhivach.org/thread/155908/
- https://arhivach.org/thread/173837/
- https://arhivach.org/thread/180461/
- https://arhivach.org/thread/182958/
- https://arhivach.org/thread/188294/
- https://arhivach.org/thread/193780/
- https://arhivach.org/thread/198868/
- https://arhivach.org/thread/206632/
- https://arhivach.org/thread/211714/
- https://arhivach.org/thread/217128/
- https://arhivach.org/thread/223224/

Шапка: http://piratepad.net/bJ1SdmkZyu

Ответы899924906423914948

21 Дек, 18:22 #2 #898246

Первыйнах.

21 Дек, 18:26 #3 #898249

Сап, цэшники. Кто-нибудь умеет в опенгл хотя б на уровне хелловорлда?

Ответы898250898257898258898259

21 Дек, 18:27 #4 #898250

>>898249
При чём тут цэшники?

Ответы898253

21 Дек, 18:29 #5 #898253

>>898250
> C Programming Language

Ответы898255

21 Дек, 18:29 #6 #898255

>>898253
so what

Ответы898257

21 Дек, 18:30 #7 #898257

>>898255
so >>898249

21 Дек, 18:31 #8 #898258

>>898249
Ну я умею. А так, в /gd/ есть OpenGL-тред.

Ответы898262

21 Дек, 18:32 #9 #898259

>>898249
Я рисовал треугольники и даже прямоугольники! Но не спрашивай меня ничего, все равно нихуя не помню, кроме того что современный опенгл сложнее старого.

Ответы898268

21 Дек, 18:34 #10 #898262

>>898258
О, про /gd/ не знал, пойду и туда продублирую.

Суть в чем, я пытаюсь припердолить матрицу перспективы и... нихуя не работает! А должно, но в итоге черный прямоугольник.
И через функцию делал, и вручную константой матрицу забивал - хуй. При том что если подставить единичную, но с единичной все норм (ясен хуй потому что она не на что не влияет).

https://bitbucket.org/pinkierton/dgl/src/41e0d5fb8eca4f2431d0bbeb55280e43c07d644c/app02/source/app.d
167:0 ну там по коментам понятна суть драмы

Ответы898346

21 Дек, 18:40 #11 #898268

>>898259
Ну, у меня на прямоугольник (на самом деле это два треугольника лол) натянута текстура (ну то есть две, они там смешиваются).

И я пытаюсь вращать эту хуйню. Собсно вращение (матрица модели) работает, матрица вьюхи работает (камера направлена на эту хуйню), а вот матрица проекции - хуй. По идее надо заебенить перспективу но с ней нихуя не работает, а без нее как камеру не удаляй от объекта - он всегда одинакового размера.

21 Дек, 20:24 #12 #898346

>>898262
Ну стандартно же. Вью отодвигать взад (в минуса) не пробовал?

Ответы898361

369 Кб, 1920x1080

235 Кб, 1920x1080

21 Дек, 20:33 #13 #898361

>>898346
Зачем? У меня со вью все нормально (без перспективы).
В простейшем случае есть квадрат размером единица на единица, и прямо над ним висит камера на удалении 1.2 и палит в центр. С этим все норм - нету только перспективы.

А в перспективе в матрице из параметров только:
- угол fov (я его дрочил от 45 до чуть ли не 360), ваще каким бы он не был - должен был показать хоть что либо, потому как камера палит в центр и не захватить объект вообще не может.

- аспект ратио - влияет только на пропорции, если не совпадает с размером окна то будет искажение, но опять же оно не видит вообще нихуя.

- передняя и задняя плоскость отсечения. 1..10 (камера на удалении 1.2), но я диапазон дрочил и на 0..+inf, все блять без толку.

Блять. Чего я уже только не делал.

21 Дек, 20:40 #14 #898370

В цикле часто вызывается несколько функций, которые обрабатывают нажатия клавиш. Как можно оптимизировать по скорости работу такого кода? Компилировать с оптимизацией? Определять функции __fastcall?

Ответы898402898616

21 Дек, 21:25 #15 #898402

>>898370
> цикле часто вызывается несколько функций, которые обрабатывают нажатия клавиш. Как можно оптимизировать по скорости
Выкинуть опрос, обрабатывать события.

Ответы898421

21 Дек, 22:05 #16 #898421

>>898402
>обрабатывать события
Тогда придется таскать с собой ДЛЛку с хуком.
Пока буфер сбрасывался в сокет, задержка была допустимой, только иногда пропадал один символ. Когда я стал сбрасывать буфер в файл, стало пропадать больше символов. Наверно, лучше оставить сброс в сокет и сделать свой бинарный протокол для связи с админкой, а конечный автомат на моей стороне будет либо сбрасывать данные пакета в файл, либо обрабатывать их как-то иначе.

Ответы898533898736

22 Дек, 05:31 #17 #898533

>>898421
>только иногда пропадал один символ
Ты там на голом железе пишешь что-ли? Хуле не подцепишься к системным обработчикам?

sage 22 Дек, 10:47 #18 #898616

>>898370
Еще один с нарушениями речи и дебильными идеями.

22 Дек, 13:18 #19 #898736

>>898421
Как так получилось, что у тебя функции обработки нажатия клавиш работают медленнее, чем запись на диск?

Ответы898740

22 Дек, 13:20 #20 #898740

>>898736
Просто я настолько гениален, что в этих функциях вычисляю пи с точностью до 5 миллионов знаков после запятой, при каждом нажатии.

22 Дек, 17:55 #21 #898889

Сап, есть кто?

Ответы898893

22 Дек, 18:03 #22 #898893

>>898889
PSHHH PSHHH NICHEGO NE SLYSHNO

41 Кб, 256x256

22 Дек, 18:41 #23 #898917

Есть довольно сложная задачка
Сначала решил написать программу, которая вычисляет минимальный элемент каждого из трех массивов
Но даже это у меня получилось как то криво ( но все работает)

Возможно ли оформить покрасивее, что бы меньше текста было в main?
Просто желательно для всего использовать подпрограммы, а в main только вызывать эти подпрограммы.

code: http://pastebin.com/r62ZPTe3

Ответы898922898924899024

22 Дек, 18:47 #24 #898922

>>898917
>Есть довольно сложная задачка
>Сначала решил написать программу, которая вычисляет минимальный элемент каждого из трех массивов
> довольно сложная задачка
Нееее, парень, ты еще не знаешь что такое "сложная задачка". Я не совсем понял нахуя ты для каждого пишешь одну и ту же функцию, с одинаковым кодом? Напиши одну функцию, которая на вход принимает массив, на выходе возвращает минимальный его элемент и просто передавай в нее свои массивы по очереди.

Ответы898926

22 Дек, 18:51 #25 #898924

>>898917
А еще можешь написать отдельную функцию для отображения массивов, чтобы тоже не повторять их вывод, а просто передал массив на вход, а функция все отобразит и если что-то нужно поменять, то в одном месте а не в трех копиях.

Ответы898929

22 Кб, 256x256

22 Дек, 18:54 #26 #898926

>>898922
>Нееее, парень, ты еще не знаешь что такое "сложная задачка".
Ну, это ещё только начало задачки просто.
Да и сложная относительно меня, в универе нихуя не дают, приходится самому учить по возможности

>Я не совсем понял нахуя ты для каждого пишешь одну и ту же функцию, с одинаковым кодом?
Ахахах, я про это и спросил

Я не совсем понимаю как сделать такую функцию
>Напиши одну функцию, которая на вход принимает массив, на выходе возвращает минимальный его элемент и просто передавай в нее свои массивы по очереди.

Ответы898931898932

61 Кб, 256x256

22 Дек, 18:55 #27 #898929

>>898924
Как? Дай какой нибудь пример пожалуйста

22 Дек, 19:00 #28 #898931

>>898926
>Я не совсем понимаю как сделать такую функцию
Ты их три уже сделал. Сделай ещё три - может, поймёшь.

22 Дек, 19:00 #29 #898932

>>898926
Да ты же их сделал, лол, просто они у тебя повторяются, оставь одну. А потом вызывай
Xmin = minValue(X, k);
Ymin = minValue(Y, k);
Zmin = minValue(Z, k);
Присмотрись, они у тебя все одинаковые.

> Я не совсем понимаю как сделать такую функцию
void printArray(сюда передаешь массив) {
for (i = 0; i<k; i++) {
printf("X[%d] = ", i);
scanf("%d", &Z);
}
}

Ответы898941898942

2 Кб, 317x78

22 Дек, 19:13 #30 #898941

>>898932
Хз, чет студия видимо совсем наебнулась от моего кода

Ответы899026

22 Дек, 19:13 #31 #898942

>>898932
Но я все таки понял, что ты имеешь ввиду
Ну да, уебищно я сделал с этими a b c, можно же было с одним a например все сделать, да?

Ответы898947

22 Дек, 19:16 #32 #898947

>>898942
Да.

Ответы898949

3 Кб, 491x84

22 Дек, 19:19 #33 #898949

>>898947
void printArray(??? *(звездочка)a, int k) {
float minX = a[0];
for (size_t i = 1; i < k; ++i)
if (a < minX) minX = a;
}

Но какой тут тип данных использовать?
void не хочет преобразовываться в int float или double

Ответы898951898953898954

22 Дек, 19:21 #34 #898951

>>898949
Подумай, что ты хочешь сделать. Потом внимательно посмотри на код, ни о чём не думая. Потом встань и походи по комнате кругами минут двадцать, думая. Вот только после этого приходи снова задавать вопросы.

sage 22 Дек, 19:22 #35 #898953

>>898949
войд меняй на флоут

Ответы898960

22 Дек, 19:23 #36 #898954

>>898949
Ты все напутал. void функции ничего не возвращают, я предлагал тебе вынести код который печатает массив в отдельную функцию printArray. A функцию нахождения минимального числа просто оставь одну вместо трех.

Ответы898960

5 Кб, 334x250

22 Дек, 19:35 #37 #898960

>>898953
>>898954
Сорян, не так тебя понял

Вроде пофиксил все ошибки (теперь нет несоответствия типов)

Но в консоли теперь одни нули, где я обосрался?

http://pastebin.com/WKwvkaxG

Ответы898970

22 Дек, 19:43 #38 #898970

>>898960
У тебя массив флоатов, а scanf и printf ты делаешь с %d.
http://ideone.com/XWxaqC

Ответы898973

22 Дек, 19:46 #39 #898973

>>898970
Ахахха, пиздец
Это было первое о чем я подумал, когда искал ошибку
В принтф заменил, а в сканф нет cykaaa

Кстати, зачем ты убрал <конио.h> и _getch()?

Ответы898984

22 Дек, 19:46 #40 #898974

>Есть довольно сложная задачка
>минимальный элемент массива
Бро, программирование - это не твое.

Ответы898976

22 Дек, 19:47 #41 #898976

>>898974
аххахахах, да сука
я же писал выше, это только 0.00000001 самой задачи

Ответы899005

22 Дек, 19:57 #42 #898984

>>898973
Потому что на идеоне они не нужны. А коня там вообще нет. Сделай себе батник с
%1
pause
и запускай свои файлы через него.

Ответы899002

22 Дек, 20:21 #43 #899002

>>898984
> батник
getchar() или system("pause"), зачем батники-то?

sage 22 Дек, 20:25 #44 #899005

>>898976
Да кому ты пиздишь, школота ебаная? Пиздуй уже в армию, не еби людям мозг.

Ответы899006

22 Дек, 20:25 #45 #899006

>>899005
Нахуй ты это высрал, мусор?
Какая я тебе школота, поехавший?

22 Дек, 20:47 #46 #899024

>>898917
Чувак тебе лет то сколько?
Ты просто эпичный код выдал. Надо нашим показать - они даже не знали, что так можно.

Ответы899078

22 Дек, 20:50 #47 #899026

>>898941
Звездочку переставь. Синтаксис си не знаю, но походу ты передаешь указатель не на массив, а на тип.

Ответы899055899078

22 Дек, 21:41 #48 #899055

>>899026
> указатель на тип
Один долбоёб пытается помочь другому долбоёбу. Цирк да и только.

Ответы899078899083

22 Дек, 22:02 #49 #899078

>>899024
Ааххаха, да бляя
Я хочу выучить, но из за бешенной нагрузки совсем нет времени, поэтому пока так

>>899026
>>899055
аАХАХАХХ, пиздоооооооооооос, как я не заметил, что звездочка перед интом стоит

22 Дек, 22:11 #50 #899083

>>899055
А третий долбоеб ворчит "ходют тут, ходют"

Ответы899086899087

22 Дек, 22:13 #51 #899086

>>899083
Да это местный дурачок. Его на приличную работу не берут, вот он и вахтерит тут все свободное время.

22 Дек, 22:13 #52 #899087

>>899083
Ну так заткнись, долбоёб.

23 Дек, 10:50 #53 #899366

В чём отличия Вектора от Линкед Листа или это одно и то же?

Рубрика: вопросы от нуфага

Ответы899383899454899455921857

23 Дек, 11:58 #54 #899383

>>899366
Хуи-то хоть сосешь?

23 Дек, 14:14 #55 #899454

>>899366
Вектор - это абстрактная последовательность значений. Какие значения, как именно они хранятся, какие у них преимущества и недостатки - детали реализации. Линкед-лист - это как раз такая деталь реализации, в связанных списках физическое расположение элемента не имеет значения, вставки и удаления дешевые, а доступ по индексу дорогой.

Ответы899486

23 Дек, 14:19 #56 #899455

>>899366
Вектор - это динамический массив, а связанный список - набор структур, каждая из которых содержит указатель на следующую.

Ответы899461

23 Дек, 14:30 #57 #899461

>>899455
> Вектор - это динамический массив
float vec[3] = { 1.0f, 0.0f, 0.0f };

> набор структур
> указатель
#define GET_NEXT(a) (a>>16)
#define GET_VALUE(a) (a & 0xffff)
unsigned int linked_list[10];

Современное образование такое образовангие.

Ответы899462

23 Дек, 14:36 #58 #899462

>>899461
Хуезование, блядь. Откуда вы лезете? Сама структура содержит, а не твои говномакросы.

typedef struct item item;
struct item {
float val;
item звёздочка next;
};

Ответы899465

23 Дек, 14:38 #59 #899465

>>899462
Ну вот у меня связанный список есть, а указателей нет. И структур нет. Как же так?

Ответы899467899473

23 Дек, 14:42 #60 #899467

>>899465
Потому что у тебя не связанный список, а массив, притом даже не динамический.

23 Дек, 14:49 #61 #899473

>>899465
Вектор реализуется, как массив с указанием фактического размера и количества элементов. Можно убавлять, добавлять, переставлять и легко обращаться по индексу. Когда требуется больше элементов, чем фактический размер - переаллоцируется весь массив и копируются данные, получается новая верхняя граница.

В связанном списке добавлять можно сколько угодно, там маллок вызывается для создания каждого ебаного элемента. И удалять тоже можно сколько угодно, но для этого лучше использовать двойной связанный список, где указатель не только на следующий, но и на предыдущий элемент.

typedef struct item item;
struct item {
float val;
item зв. next, зв. prev;
};

Тогда удаление элемента - это в предыдущем менять указатель next на следующий за данным, а в следующем менять указатель prev на предыдущий.

А в векторе для удаления или вставки надо копировать (сдвигать) весь хвост.

23 Дек, 15:02 #62 #899486

>>899454
Вставка/удаление только с начала/конца же дешёвые в линкедлисте, поскольку удаление влечёт собой изменение всех нужных указателей на след. элемент. Скорее так?

Ответы899489899493

23 Дек, 15:06 #63 #899489

>>899486
Вставка и удаление любого элемента - константа в линкед лите, если известен предыдущий или следующий. В векторе не константа. Если у тебя в векторе сто тыщ элементов и тебе захочется удалить второй, ты охуеешь.

Ответы899523

23 Дек, 15:12 #64 #899493

>>899486
Зато в векторе константа - рандомный доступ к любому элементу по индексу. А в связанном списке не константа. Если у тебя в списке 100 тыс. элементов, и тебе захочется прочитать 99999-ый, ты точно так же охуеешь, потому что будешь пробираться через весь список.

Отсюда мораль: со списками можно работать, если часто известны соседние элементы, и надо постоянно что-то добавлять-убавлять. А с векторами - если нужен доступ по индексу, а добавление-убавление обычно в хвосте вектора.

Ответы899523

23 Дек, 16:18 #65 #899523

>>899489
>>899493
И чо, бисера дохуя, да?
Дебил блядь.

Ответы899537

23 Дек, 16:56 #66 #899537

>>899523
Да мне не жалко.

23 Дек, 21:32 #67 #899700

4 года хочу вкатиться в си, но постоянно лень
мимо джава-господин

Ответы900016

16 Кб, 647x177

4 Кб, 212x205

24 Дек, 07:38 #68 #899924

>>898241 (OP)
Аноны, как заполнить матрицу по треугольной спирали начиная с центра? Я уже неделю делаю это задание и все мои циклы ,работая вместе, идут по пизде. Мне всего то нужен код циклов, дальше я сам, эта последняя лаба для зачета

Ответы900013900659

24 Дек, 13:38 #69 #900013

>>899924
1. x + 1, y + 1
2. x - 1, y
3. x + 1, y - 1

Ответы900083

24 Дек, 13:41 #70 #900016

>>899700
>джава-пидор

поправил тебя, не благодари

24 Дек, 15:57 #71 #900083

>>900013
Можешь в виде циклов записать с выводом в элементы массива?

Ответы900089

sage 24 Дек, 16:18 #72 #900089

>>900083
Мы твоего кода еще в прошлые разы не увидели.

Ответы900110

28 Кб, 1435x552

24 Дек, 16:55 #73 #900110

>>900089
Ну вот, только у меня нормальное работает начиная с А[0][0], если ставлю n/2 то все идет в пизду, да и еще нужно треугольную спираль, как в задании

Ответы900127900145

24 Дек, 17:32 #74 #900127

>>900110
Ты же просто спиздил код из интернета и не понимаешь, что в нём написано, да?

Ответы900146

24 Дек, 18:26 #75 #900145

>>900110
ди нах отсюда.

24 Дек, 18:29 #76 #900146

>>900127
> спиздил
Да, частично, я просто не могу понять самой логики
> не понимаешь
Ну понять пришлось, все равно препод не примет лабу, пока не объяснишь ему все строчки
Да и к чему расспросы? Не хочешь помочь, просто не отвечай, или тебе в каеф хуесосить нюфага?

Ответы900160900265

24 Дек, 18:51 #77 #900160

>>900146
>или тебе в каеф хуесосить нюфага?
Да, очень.

105 Кб, 960x720

24 Дек, 22:33 #78 #900265

>>900146
>частично спиздил
>невероятный алгоритм занимает ~10 строк кода
Да ты охуел.

25 Дек, 00:47 #79 #900318

Пишу несложный сетевой протокол. Мне нужно, чтобы приходящие пакеты в зависимости от некоторого поля выводились либо в консоль, либо добавлялись в конец файла, который может создаваться с рандомным именем каждый раз, когда происходит соединение. Какой паттерн проектирования для этого использовать? Пытаюсь прикрутить шаблон стейтмашин, но получается неоптимально: когда нужно сбрасывать нагрузку пакета в конец файла, приходится этот файл открывать каждый раз, когда приходит пакет данного типа. Поток пакетов может быть неоднородным, т.е. друг за другом приходят пакеты, содержимое которых надо записывать в разные места.

http://paste.ofcode.org/VtQBV7q8kpzapWJBU5ryPH

Сейчас работает запись в консоль или в файл в зависимости от пакетов, но проблем нет только когда пакеты приходят одного типа. Если приходят пакеты разного типа, но файл перезаписывается, например, когда происходит смена состояния. Это не то, что я хочу.

Ответы900430900992

sage 25 Дек, 07:59 #80 #900430

>>900318
>class
Значение знаешь?

Ответы900652

25 Кб, 649x230

недокодер 25 Дек, 16:08 #81 #900575

Кароч, аноны нужна ваша помощь в лабе

Не могу понять как записать условие
Вот что я уже сделал:

#include <stdio.h>
#include <math.h>
int main(void)
{
int i, imax = 0, lmin = 0, lmax, a[10];

for(;;) {
printf("\nEnter length of array (imax): ");
scanf("%d", &imax);
if (imax<1||imax>10)
printf("Error");
else break;
};
for (i = 0; i < imax; i++) {
printf("Enter the value of a[%d]: ", i+1);
scanf("%d", &a);
};
int b[10];
for (i = 0; i < imax; i++) {
if (a == i)
{
b[10]=1;
printf("\nb = %d", b[10]);
}
else
{
b[10]=0;
printf("\nb = %d", b[10]);
}
}
printf("\nb = %d", b[10]);
getchar();
getchar();
return 0;
}

Хелпаните плез, как записать условие:
если значения каких-либо двух или более элементов массива a равны друг другу, на их месте в массиве b выводится 1, в противном случае 0.

25 Кб, 649x230

недокодер 25 Дек, 16:08 #81 #900575

Кароч, аноны нужна ваша помощь в лабе

Не могу понять как записать условие
Вот что я уже сделал:

#include <stdio.h>
#include <math.h>
int main(void)
{
int i, imax = 0, lmin = 0, lmax, a[10];

for(;;) {
printf("\nEnter length of array (imax): ");
scanf("%d", &imax);
if (imax<1||imax>10)
printf("Error");
else break;
};
for (i = 0; i < imax; i++) {
printf("Enter the value of a[%d]: ", i+1);
scanf("%d", &a);
};
int b[10];
for (i = 0; i < imax; i++) {
if (a == i)
{
b[10]=1;
printf("\nb = %d", b[10]);
}
else
{
b[10]=0;
printf("\nb = %d", b[10]);
}
}
printf("\nb = %d", b[10]);
getchar();
getchar();
return 0;
}

Хелпаните плез, как записать условие:
если значения каких-либо двух или более элементов массива a равны друг другу, на их месте в массиве b выводится 1, в противном случае 0.

Показать весь текст
Ответы900681

25 Дек, 17:20 #82 #900652

>>900430
CL Ass

25 Дек, 17:28 #83 #900659

>>899924
http://ideone.com/iJuSQ0

Вот сделал похожую хуйню на перле. Что бы ты заебался.

25 Дек, 18:00 #84 #900681

>>900575
Исходя из того, что imax может быть большим, например, 10, то осмелюсь посоветовать написать свою хэш-таблицу или двоичное дерево и сделать 1 (один!) проход по массиву A, проверяя каждый элемент на наличие в выбранной тобой структуре данных и, если истина, записывай в массив B небо, иначе добавляй элемент в структуру, а Аллаха в массив B. Преподы будут течь, телки бояться.

Ответы900706

25 Дек, 18:32 #85 #900706

>>900681
>(один!) проход
Внимательней прочитал условие и понял, что я обосрался. Тебе придется два раза пройтись. первый: инкрементируя значение пары в хэш-таблице c индексом hash(A). Второй проход по массиву: если значение пары в хэш-таблице с индексом hash(A) равно еденице, B = 0, иначе B = 1.

Ответы900709900717

25 Дек, 18:38 #86 #900709

>>900706
>еденице
Не бейте.

25 Дек, 18:54 #87 #900717

>>900706
сяб

25 Дек, 19:03 #88 #900725

Аноны, подскажите что можно скачать вместо вижуал студио, что бы запускать программы

Накрылся ноут, остался только очень старый ПК, на нем вижуалка не встанет
Срочно нужно программу дописать, дедлайн

Ответы900738900740

25 Дек, 19:06 #89 #900729

vim, notepad++

Ответы900731

25 Дек, 19:08 #90 #900731

>>900729
В нотпаде для компеляции ничего накатывать не нужно?

Ответы900734

25 Дек, 19:11 #91 #900734

>>900731
конечно нужно или ты нихуя в этом не шаришь, а лаба горит?

Ответы900735

25 Дек, 19:13 #92 #900735

>>900734
Именно в компеляции нет, прям вообще
В самом начале в универе сказали вижалку поставить и в ней всегда все запускал
2 дня пытался вытащить ноут но нихуя, такой треш, из за этого еще и
>лаба горит
Но там не лаба, поважнее, тип зачетная хуйня

Подскажи пожалуйста как компилировать в нпп

Ответы900739900742

25 Дек, 19:15 #93 #900738

>>900725
QtCreator.

Ответы900745

25 Дек, 19:17 #94 #900739

>>900735
ставь вижуал студиию ранних версий, например vs2005

Ответы900745

sage 25 Дек, 19:18 #95 #900740

>>900725
Pelles C.

Ответы900754

25 Дек, 19:19 #96 #900742

>>900735
Пиздец, попытался поставить clang
Даже он не установился

25 Дек, 19:20 #97 #900745

>>900739
Я буду ждать 30 лет пока она хотя бы устанавливаться начнет, смысла нет
>>900738
Скачал с гитхаба, щас попробую

З 25 Дек, 19:37 #98 #900754

>>900740
Пиздец, как он работает?
Выдает ошибки вообще на каждый знак

Ответы900899

25 Дек, 20:06 #99 #900773

Ребят, кто может компелировать
попробуйте пожалуйста http://pastebin.com/jmySkHkR
писал в нотпаде даже без синтакса, скорее всего где то ошибся

сама задача:
Дана последовательность слов. Найти те слова, которые отличаются от последнего слова и каждая буква входит в слово не менее двух раз.

Ответы900777900780900848900930901077

25 Дек, 20:13 #100 #900777

>>900773

sage 25 Дек, 20:15 #101 #900780

>>900773
> кто может компелировать
http://ideone.com/

Ответы900842

25 Дек, 21:00 #102 #900842

>>900780
О да, вот это охуенно

Ответы900848

sage 25 Дек, 21:03 #103 #900848

>>900773
>>900842
А лучше http://melpon.org/wandbox/, он ссылок сразу не генерирует.

25 Дек, 21:53 #104 #900899

>>900754
> Выдает ошибки вообще на каждый знак
Теперь ты знаешь все о своем коде.

25 Дек, 22:51 #105 #900930

>>900773
лол, ньюфаги настолько обленились что уже даже сцомеплировать не могут

26 Дек, 00:13 #106 #900992

>>900318
Бамп вопросу. С паттерном, вроде, разобрался. Как лучше реализовать пакетную передачу данных? Сейчас у меня при отправке любых данных отправляется сначала заголовок, а потом данные. Не будет ли лучше сделать пакет фиксированного размера и отсылать, например, по 128 байт? То есть в начало буфера записывается заголовок, потом данные и все это отправляется.

26 Дек, 04:14 #107 #901070

Заебала меня наука нищетой и бесперспективностью, хочется перекатиться в программирование.
Знаю хорошо синтаксис языка, на Си приходилось писать программки для численных расчётов, есть так же небольшой опыт работы с stm32 без операционной системы сперва по незнанию с еблей с регистрами с даташита, потом перешёл на spl . Как бы лучше развивать эти умения до чего-то профитоносного, есть ли перспективы в написании драйверов или системном программировании, или лучше сруливать в сторону крестов/шарпа и ООП? И если первое, что для этого дела нужно обязательно знать, кроме собственно языка перед тем как пытаться в поиск работы?

Ответы901083907176

26 Дек, 07:22 #108 #901077

>>900773

А форматировать код кто будет?

И вообще иди сюда: https://codeanywhere.com/

26 Дек, 07:33 #109 #901083

>>901070
у нас щас хайп на импортозамещении, вот и подумай. я сейчас пилю проджект в этом направлении, как будет альфа, пойду искать господдержку, а если хочешь быдь макакой, учи то, что востребованно на рынке в твоих ебенях.

287 Кб, 1200x900

26 Дек, 18:03 #110 #901377

Господа, а как без ООП писать менеджерские функции, не используя глобальные переменные, чтобы количество их параметров не возрастало?
Например:

float F1(int x, int y)
{ … }

float F2(string a)
{ … }

float F3(int f1_x, int f1_y, string f2_a, float q)
{
return( F1(f1_x, f1_y) + F2(f2_a) + q );
}

Как видно, F3 имеет кучу параметров, не относящихся к ней непосредственно. А должна была бы иметь только q.

Ответы901378901387

26 Дек, 18:05 #111 #901378

>>901377
fix
return( F1(f1_x, f1_y) + F2(f2_a) + q );

26 Дек, 18:22 #112 #901387

>>901377
У тебя и ооп будет так же. Используй структуры, если лень набивать. Или напиши себе на препроцессоре лямбды с каррированием.

Ответы901405

26 Дек, 18:45 #113 #901405

>>901387
>У тебя и ооп будет так же
Не совсем. Там можно заранее передать аргументы в конструктор или свойства.
А про каррирование не знал. Спасибо.

Ответы901415

26 Дек, 18:56 #114 #901415

>>901405
Вбрось потом сюда. Я хочу на это посмотреть.

Ответы901504

26 Дек, 21:09 #115 #901504

>>901415
Если ты про каррирование - то пока изучаю его.
Если про пример ООПного кода, то вот:

Допустим хотим узнать, хватает ли в корпорации денег на 9000 столов с амазона. При наличии скидки по партнёрке.

ООП style (C#)
Main()
{
var dbShell = new DataBaseShell(); // Он будет подсчитывать бабки на счету
dbShell.PathToDB = «xxx.xxx.xxx»;
dbShell.User = «OverLord»;
dbShell.Password = «»;

var cashBack = new CashBackCard(); // Класс, получающий скидку
cashBack.Id = «007»;

var parser = new InternetStoreParser(cashBack); // Он будет парсить интернет-магазин
parser.Site = “Amazon”;
parser.Proxy = “127.0.0.1”;

var purchaseDetector = new PurchaseDetector(dbShell, parser); // Тут формула подсчёта

// А теперь просто спрашиваем что хотели
bool response = purchaseDetector.CanIBuy(“yobaTable”, 9000);

Console.WriteLine(response);
}

Функциональный стиль. (Если не быть хаскеле-боярином)
Main()
{
bool response = CanIBuy( «xxx.xxx.xxx», «OverLord», «»,
«007»,
“Amazon”, “127.0.0.1”,
“yobaTable”, 9000);

Console.WriteLine(response);
}

Минусы:
Не возможно изменить поведение CanIBuy, не влезая в её код.
CanIBuy имеет кучу параметров, не относящихся к ней.
Бороду параметров просто не приятно писать.

Или если с функциями, но ближе к ООП то так:
Main()
{
struct DataBaseShell_Data dbShell_data;
dbShell_data.pathToDB = «xxx.xxx.xxx»;
dbShell_data.user = «OverLord»;
dbShell_data.password = «*»;

struct CashBackCard_Data cashBack_data;
cashBack_data.Id = «007»;

struct InternetStoreParser_Data parser_data;
parser_data.Site = “Amazon”;
parser_data.Proxy = “127.0.0.1”;

bool response = CanIBuy( Func_DBShell_CalcIncome, dbShell_data,
Func_CashBackCard_GetBonus, cashBack_data,
Func_InternetStoreParser_GetPriceProduct, parser_data
“yobaTable”, 9000);

Console.WriteLine(response);
}

Последние 2 минуса из прошлого примера остались.

26 Дек, 21:09 #115 #901504

>>901415
Если ты про каррирование - то пока изучаю его.
Если про пример ООПного кода, то вот:

Допустим хотим узнать, хватает ли в корпорации денег на 9000 столов с амазона. При наличии скидки по партнёрке.

ООП style (C#)
Main()
{
var dbShell = new DataBaseShell(); // Он будет подсчитывать бабки на счету
dbShell.PathToDB = «xxx.xxx.xxx»;
dbShell.User = «OverLord»;
dbShell.Password = «»;

var cashBack = new CashBackCard(); // Класс, получающий скидку
cashBack.Id = «007»;

var parser = new InternetStoreParser(cashBack); // Он будет парсить интернет-магазин
parser.Site = “Amazon”;
parser.Proxy = “127.0.0.1”;

var purchaseDetector = new PurchaseDetector(dbShell, parser); // Тут формула подсчёта

// А теперь просто спрашиваем что хотели
bool response = purchaseDetector.CanIBuy(“yobaTable”, 9000);

Console.WriteLine(response);
}

Функциональный стиль. (Если не быть хаскеле-боярином)
Main()
{
bool response = CanIBuy( «xxx.xxx.xxx», «OverLord», «»,
«007»,
“Amazon”, “127.0.0.1”,
“yobaTable”, 9000);

Console.WriteLine(response);
}

Минусы:
Не возможно изменить поведение CanIBuy, не влезая в её код.
CanIBuy имеет кучу параметров, не относящихся к ней.
Бороду параметров просто не приятно писать.

Или если с функциями, но ближе к ООП то так:
Main()
{
struct DataBaseShell_Data dbShell_data;
dbShell_data.pathToDB = «xxx.xxx.xxx»;
dbShell_data.user = «OverLord»;
dbShell_data.password = «*»;

struct CashBackCard_Data cashBack_data;
cashBack_data.Id = «007»;

struct InternetStoreParser_Data parser_data;
parser_data.Site = “Amazon”;
parser_data.Proxy = “127.0.0.1”;

bool response = CanIBuy( Func_DBShell_CalcIncome, dbShell_data,
Func_CashBackCard_GetBonus, cashBack_data,
Func_InternetStoreParser_GetPriceProduct, parser_data
“yobaTable”, 9000);

Console.WriteLine(response);
}

Последние 2 минуса из прошлого примера остались.

Показать весь текст

26 Дек, 21:22 #116 #901513

Здарова пацаны помогите плиз переделать
Нужно чтобы вместо удаления имени изменялось значение зарплаты.
А если вводимое имя не найдено, задать запрос на новое значение зарплаты

в файл i.txt нужно вписать рандомные имена

#include <stdio.h>
#include <string.h>
#include <ctype.h>

void read(FILEfile){
char tmp[100];
rewind(file);
while ((fgets(tmp,100,file)))
puts(tmp);
printf("\n------\n");
rewind(file);
}
int main(void){
FILE i,o;
i = fopen("i.txt","r+");
o = fopen("o.txt","w");
read(i);
char name[20];
char dname[20];
int salary;
char dn[250];
char tmp[50];
while(1){
printf("enter name to change: ");
scanf("%s",dname);
if(strcmp(dname,"") == 0)
break;
sprintf(tmp,"%s ",dname);
strcat(dn,tmp);
}
while(!feof(i)){
fscanf(i,"%s %d\n",name,&salary);
strcat(name," ");
if(!strstr(dn,name))
fprintf(o,"%s %d\n",name,salary);
}
fclose(i);
fclose(o);
o = fopen("o.txt","r");
read(o);
getchar();
getchar();
return 0;
}

26 Дек, 21:22 #116 #901513

Здарова пацаны помогите плиз переделать
Нужно чтобы вместо удаления имени изменялось значение зарплаты.
А если вводимое имя не найдено, задать запрос на новое значение зарплаты

в файл i.txt нужно вписать рандомные имена

#include <stdio.h>
#include <string.h>
#include <ctype.h>

void read(FILEfile){
char tmp[100];
rewind(file);
while ((fgets(tmp,100,file)))
puts(tmp);
printf("\n------\n");
rewind(file);
}
int main(void){
FILE i,o;
i = fopen("i.txt","r+");
o = fopen("o.txt","w");
read(i);
char name[20];
char dname[20];
int salary;
char dn[250];
char tmp[50];
while(1){
printf("enter name to change: ");
scanf("%s",dname);
if(strcmp(dname,"") == 0)
break;
sprintf(tmp,"%s ",dname);
strcat(dn,tmp);
}
while(!feof(i)){
fscanf(i,"%s %d\n",name,&salary);
strcat(name," ");
if(!strstr(dn,name))
fprintf(o,"%s %d\n",name,salary);
}
fclose(i);
fclose(o);
o = fopen("o.txt","r");
read(o);
getchar();
getchar();
return 0;
}

Показать весь текст
Ответы901514901515

sage 26 Дек, 21:24 #117 #901514

>>901513
Хуи-то, как, сосешь, Мань?

Ответы901517

26 Дек, 21:25 #118 #901515

>>901513
http://pastebin.com/a8drhPDr

26 Дек, 21:26 #119 #901517

>>901514
чего?

Ответы901520

sage 26 Дек, 21:29 #120 #901520

>>901517
Хуи, Мань, хуи.

Ответы901521

26 Дек, 21:32 #121 #901521

>>901520

ты не быкуй, я тут нормально помощь попросил, увидев что код хуево отображается скинул ссыль на пастебин

Ответы901522

sage 26 Дек, 21:35 #122 #901522

>>901521
Ты не помощь попросил, а выполнить за тебя твою домашку. Так что насчет хуев-то, Маня?

Ответы901526

26 Дек, 21:40 #123 #901526

>>901522
большую часть я уже сделал, осталось заменить пару команд, не хочешь помогать так иди на хуй

28 Дек, 16:27 #124 #902643

Анон, у меня есть такой хедер для древней ассемблерной либы: http://ideone.com/GFpYqa
Я указываю ее линоквщику в main.c при помощи прагмы. Когда я выкинул сишное CRT-говно, вызывающее дедлоки в PE-лоадере, возникла куча ошибок типа такой: unresolved external symbol __BigCreate@4 referenced in function _InitRSA

К имени _BigCreate добавилась еще одно подчеркивание. Почему возникла эта ошибка и как ее исправить?

Ответы902656902720

28 Дек, 16:52 #125 #902656

>>902643
Алсо, в самой biglib.lib символы с двумя подчеркиваниями. Что это значит? Автор называл свои функции как _BigCreate, а не BigCreate, а при сборке либы из-за выбранного соглашения о вызовах добавилась еще одна черта?

Ответы902667902720

28 Дек, 17:18 #126 #902667

>>902656
>добавилась еще одна черта
ага,
https://en.m.wikipedia.org/wiki/Name_mangling

28 Дек, 19:25 #127 #902720

>>902643
>>902656

Собираю ДЛЛку для двух архитектур. Для x86 ДЛЛ собралась нормально, а для x64 не собирается: линкер не находит символы типа _BigCreate. В настройках проекта biglib.lib подключил. Библиотека, видимо, 32-битная. Что делать?

Ответы902723902755

28 Дек, 19:32 #128 #902723

>>902720
Есть хотя бы способ заинжектить 32-битную ДЛЛку в 64-битный процесс? Ебаная либа, нахуй я ее взял.
Анон, посоветуй сишную имплементацию RSA с достаточно длинными числами. Нужно минимальное количество кода и отсутствие зависимостей от других библиотек.

Ответы903111

28 Дек, 21:00 #129 #902755

>>902720
>Что делать?
готовься в армию

Ответы902839

28 Дек, 23:13 #130 #902811

Пацаны снова выхожу на связь. Пытаюсь конпелировать с помощью mingw-w64, который под msys2. Создал файл temp.c, создал CMakeLists.txt:
[CODE]project(temp)
set(CMAKE_GENERATOR "MinGW Makefiles")
set(MINGW True)
set(CMAKE_C_FLAGS -g)
set(SOURCE temp.c)
add_executable(temp ${SOURCE})[/CODE]
Создаю директорию build, захожу в неё, выполняю cmake:
[CODE]$ env PATH=/mingw32/bin cmake -G "MinGW Makefiles" ..
-- The C compiler identification is GNU 6.2.0
-- The CXX compiler identification is GNU 6.2.0
-- Check for working C compiler: C:/msys32/mingw32/bin/gcc.exe
-- Check for working C compiler: C:/msys32/mingw32/bin/gcc.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/msys32/mingw32/bin/g++.exe
-- Check for working CXX compiler: C:/msys32/mingw32/bin/g++.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: E:/Temporary/code/build[/CODE]
Далее:
[CODE]$ make
Microsoft Windows [Version 6.1.7601]
(c) ௮ (Microsoft Corp.), 2009. ࠢ 饭.[/CODE]
Какого хуя? Он походу пытается запустить command shell от visual studio. Еще странно, что когда я пишу напаример
[CODE]$ which gcc
/mingw32/bin/gcc[/CODE]
А на which make он говорит
[CODE]$ which make
/usr/bin/make[/CODE]
Пакет установлен, но в /mingw32 он его почему-то не видит. Что я делаю не так?

28 Дек, 23:13 #130 #902811

Пацаны снова выхожу на связь. Пытаюсь конпелировать с помощью mingw-w64, который под msys2. Создал файл temp.c, создал CMakeLists.txt:
[CODE]project(temp)
set(CMAKE_GENERATOR "MinGW Makefiles")
set(MINGW True)
set(CMAKE_C_FLAGS -g)
set(SOURCE temp.c)
add_executable(temp ${SOURCE})[/CODE]
Создаю директорию build, захожу в неё, выполняю cmake:
[CODE]$ env PATH=/mingw32/bin cmake -G "MinGW Makefiles" ..
-- The C compiler identification is GNU 6.2.0
-- The CXX compiler identification is GNU 6.2.0
-- Check for working C compiler: C:/msys32/mingw32/bin/gcc.exe
-- Check for working C compiler: C:/msys32/mingw32/bin/gcc.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/msys32/mingw32/bin/g++.exe
-- Check for working CXX compiler: C:/msys32/mingw32/bin/g++.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: E:/Temporary/code/build[/CODE]
Далее:
[CODE]$ make
Microsoft Windows [Version 6.1.7601]
(c) ௮ (Microsoft Corp.), 2009. ࠢ 饭.[/CODE]
Какого хуя? Он походу пытается запустить command shell от visual studio. Еще странно, что когда я пишу напаример
[CODE]$ which gcc
/mingw32/bin/gcc[/CODE]
А на which make он говорит
[CODE]$ which make
/usr/bin/make[/CODE]
Пакет установлен, но в /mingw32 он его почему-то не видит. Что я делаю не так?

Показать весь текст

29 Дек, 00:38 #131 #902839

>>902755
Сам готовься, у меня желтый военник)))
Какую библиотеку длинной арифметики можно взять, чтобы реализовать RSA, и чтобы эта библиотека не требовала CRT, динамические либы и какое-нибудь еще говно?

Ответы902890

sage 29 Дек, 03:48 #132 #902890

>>902839
Сам нарисуй, чего как маленький.

З 29 Дек, 06:29 #133 #902909

АЛЛОУ, есть кто?
Хотя врядли офк

Ответы902912

29 Дек, 06:36 #134 #902912

>>902909
Чё хочешь, тварь?

Ответы902915902919

1647 Кб, 3264x2448

З 29 Дек, 06:50 #135 #902915

>>902912
Вот задача, я написал через цикл фор и
If (( i%2) == 0)
И так сравнивал
Но преподша подошла сказала что то про красное и зеленое
Как сделать лучше?
Мимо пишу зачет на бумаге

Ответы902973903054

910 Кб, 3264x2448

З 29 Дек, 06:58 #136 #902919

>>902912
Крч такая хуйня получилась, но она говорит можно легче решить

Ответы902951902973

29 Дек, 09:07 #137 #902951

>>902919
Нахуй посылай. Легче на олимпиаде будешь решать.

29 Дек, 11:06 #138 #902973

>>902919
>>902915

Во-первых:
Иди на хуй.
Во-вторых:
Младший бит говорит о том, чётное ли число или нет (младший бит это 2 в степени 0, т.е. единица, остальные степени всегда дают чётное число)
т.е.
if( i & 1) / если элемент нечётный /

Ответы903123

29 Дек, 13:07 #139 #903026

Хочу попробовать сделать из 32-битной скомпиленной либы 64-битную. Либа написана на асме, скорее всего масм. Если я ее дизассемблирую, а потом снова ассемблирую 64-битным ассемблером, она будет работать правильно? Эта либа хотя бы соберется обратно?

Ответы903035903115903138

29 Дек, 13:15 #140 #903035

>>903026
Зачем тебе переделывать либу под х64? Твоя х64 программа может использовать х32 либу.

Если у тебя есть исходники ты можешь пересобрать либу под х64.

29 Дек, 13:37 #141 #903054

>>902915
Потому что чётное число идёт сразу за нечётным и перед другим нечётным, а первый элемент массива имеет индекс 0.

29 Дек, 14:27 #142 #903111

>>902723
очевидная OpenSSL очевидна.

Ответы903124

29 Дек, 14:32 #143 #903115

Блять, ну что за объебосное поколение. >>903026
Возьми да проверь, дебила кусок. Давно бы уже ответ узнал.

29 Дек, 14:38 #144 #903123

>>902973
>Младший бит говорит о том, чётное ли число или нет (младший бит это 2 в степени 0, т.е. единица, остальные степени всегда дают чётное число)
>т.е.
>if( i & 1) / если элемент нечётный /
Нахрен такой хуйнёй маяться, если ассемблерный выхлоп будет один и тот же?

Ответы903348

29 Дек, 14:39 #145 #903124

>>903111
Дырявая OpenSSL дырява.

sage 29 Дек, 15:08 #146 #903138

>>903026
1) Не сможешь дизассемблировать до надлежащего уровня, не соберется.
2) Работать будет, но заебешься с конвенциями вызова (аргументы функций останутся 32-битными).

sage 29 Дек, 23:08 #147 #903348

>>903123
>Нахрен такой хуйнёй маяться
— Ко-ко-ко, посаны, ко-ко-ко, смотрите как я ебу биты в рот! if(i&1) Кудах.

30 Дек, 18:19 #148 #903691

ебать я только что охуел, юзаю я такой sqrt(N) и решил переименовать макрос: sqrt(MAX)

test.c:134: undefined reference to `sqrt'

чёт охуел. какие идеи?

20 Кб, 766x157

30 Дек, 18:25 #149 #903693

30 Дек, 18:27 #150 #903696

блять, да оно и без макроса не работает, только константы.

30 Дек, 18:31 #151 #903699

говорят надо линковать библиотеку - а я и забыл. но странно, почему с константами работает - наверно дополнение гцц.

35 Кб, 479x346

01 Янв, 10:08 #152 #904302

Из пикчи всё понятно: Нужно замаллочить var в сторонней функции а оно нихуя не работает. Где я обосрался?

Ответы904307904308

01 Янв, 10:45 #153 #904307

>>904302
func(myint pp_var)
{
var = malloc()
}
myint p_var;
func(&p_var)

Понял?

01 Янв, 10:50 #154 #904308

>>904302
Бля, движок сожрал звёзды.
http://ideone.com/yLPpWm

Ответы904428

01 Янв, 20:24 #155 #904428

>>904308
Понял, спасибо.

03 Янв, 14:35 #156 #905117

Суть такова, нужно написать шифровальщик текста. Он собственно написан, но читает и пишет только первую строку, остальное удаляет.

Функции чтения и записи ДОЛЖНЫ выглядеть так:
[CODE]char* readFromFile(char fileName[])
и
void writeToFile(char fileName[], char text[])
[/CODE]
соответственно. Как скопировать текст целиком в буфер (независимо от кол-ва строк), а потом записать обратно в текстовый файл без потерь?

Ответы905143

sage 03 Янв, 15:33 #157 #905143

>>905117
Руками, Мань.

112 Кб, 1720x643

33 Кб, 678x785

1 Кб, 350x33

03 Янв, 16:44 #158 #905191

Сап двач-программач. Хочу написать свой собственный хекс эдитор и тут же столкнулся с проблемой. Я скачал для проверки winhex и у результата моей программы и винхекса есть различия. Во первых 163-й байты различаются. Я не понимаю откуда там взялся 0D. Вовторых через некоторое кол-во байтов у меня пишется просто 19 19 19 19 19 19 19 19 19 19 19 19...
В чём проблема?

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

typedef uint8_t byte;

int main(int argc, char argv[]) {
if (argc != 5) {
printf("ne 5 argumentov\n");
return 1;
}
int propusk = atoi(argv[1]);
int bayti = atoi(argv[2]);
FILE in = fopen(argv[3], "r");
if (in == NULL) {
printf("ne udalos' otkrit' infayl\n");
return 2;
}
FILE* out = fopen(argv[4], "w");
if (out == NULL) {
printf("ne udaloa' otkrit' autfayl\n");
return 3;
}
byte sch;
int i = 0;
fseek(in, propusk, SEEK_CUR);
int i2 = 0;
while (i < bayti) {
fread(&sch, sizeof(byte), 1, in);
if (sch < 0x10) {
fprintf(out, "0%x", sch);
}
else {
fprintf(out, "%x", sch);
}
i++;
i2++;
if (i2 % 8 == 0 && i2 != 64) {
fprintf(out, " ");
}
if (i2 == 64) {
fprintf(out, "\n");
i2 = 0;
}
else {
fprintf(out, " ");
}
}
fclose(in); fclose(out);
return 0;
}

112 Кб, 1720x643

33 Кб, 678x785

1 Кб, 350x33

03 Янв, 16:44 #158 #905191

Сап двач-программач. Хочу написать свой собственный хекс эдитор и тут же столкнулся с проблемой. Я скачал для проверки winhex и у результата моей программы и винхекса есть различия. Во первых 163-й байты различаются. Я не понимаю откуда там взялся 0D. Вовторых через некоторое кол-во байтов у меня пишется просто 19 19 19 19 19 19 19 19 19 19 19 19...
В чём проблема?

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

typedef uint8_t byte;

int main(int argc, char argv[]) {
if (argc != 5) {
printf("ne 5 argumentov\n");
return 1;
}
int propusk = atoi(argv[1]);
int bayti = atoi(argv[2]);
FILE in = fopen(argv[3], "r");
if (in == NULL) {
printf("ne udalos' otkrit' infayl\n");
return 2;
}
FILE* out = fopen(argv[4], "w");
if (out == NULL) {
printf("ne udaloa' otkrit' autfayl\n");
return 3;
}
byte sch;
int i = 0;
fseek(in, propusk, SEEK_CUR);
int i2 = 0;
while (i < bayti) {
fread(&sch, sizeof(byte), 1, in);
if (sch < 0x10) {
fprintf(out, "0%x", sch);
}
else {
fprintf(out, "%x", sch);
}
i++;
i2++;
if (i2 % 8 == 0 && i2 != 64) {
fprintf(out, " ");
}
if (i2 == 64) {
fprintf(out, "\n");
i2 = 0;
}
else {
fprintf(out, " ");
}
}
fclose(in); fclose(out);
return 0;
}

Показать весь текст
Ответы905223905230905232905233905252

03 Янв, 17:22 #159 #905223

>>905191
>ne 5 argumentov
You know, my English is poor too. But if I don't know how to spell the word in English, I use the Google-Translate. You can try to use it.
>fopen(argv[3], "r")
Первое, что в глаза бросается. Попробуй "rb".

Ответы905279

03 Янв, 17:25 #160 #905230

>>905191
>0D
В текстовом режиме небось читаешь?
>19191919
скорее всего мусор в памяти. Файл-то весь читаешь?
Исходник не читал.

03 Янв, 17:27 #161 #905232

>>905191
Я не закапывался, но у тебя определённо есть косяки с i2. Номера байт - 0..63, а не 0..64. И ифы неправильно расставлены, для любого байта с номером не кратным 64 у тебя печатается лишний пробел.

Ответы905244

03 Янв, 17:27 #162 #905233

>>905191
блять, мои глаза! Ты что за хуйню сюда вывалил?!

Ответы905252

03 Янв, 17:35 #163 #905244

>>905232
А, у тебя 1..64. Но пробел всё равно лишний перед \n.

03 Янв, 17:57 #164 #905252

>>905233
Да ладно тебе, все с чего-то начинали.
>>905191
>fprintf(out, "0%x", sch);
>fprintf(out, "%x", sch);
А напомнит мне кто-нибудь синтаксис, чтобы одной строкой записать? Вроде как fprintf(out, "%.02x", sch)? Или просто два нуля или двойка без нулей?

Ответы905263

03 Янв, 18:05 #165 #905263

>>905252
LMGIFY: http://www.cplusplus.com/reference/cstdio/fprintf/

03 Янв, 18:24 #166 #905279

>>905223
>Попробуй "rb"
О! Помогло. Спасибо, анончик. Я не знал что есть другие параметры, кроме как "r", "w" и "a", а их оказывается дофига.

03 Янв, 19:21 #167 #905333

Хочу кофискрипт для сишки. Только чтобы с модулями, строгой типизацией, паттерн-матчингом и тайпклассами. Зделойте.

Ответы905357905361

03 Янв, 19:47 #168 #905357

>>905333
>кофискрипт для сишки.
Перл

03 Янв, 19:53 #169 #905361

>>905333
Руст. Еще есть ним, правда это больше петон.

Ответы905371

sage 03 Янв, 20:20 #170 #905371

>>905361
Руст настолько же похож на сишку, насколько на нее похож C#. Ведь в C# тоже есть unsafe.

Ответы905375905378

03 Янв, 20:26 #171 #905375

>>905371
То же, что и с кофескриптом и жс.
Их всех языков где есть твои хотели руст ближе всех к с.

03 Янв, 20:41 #172 #905378

>>905371
А ты думаешь если запилить в язык эти физике он останется хоть немного подхожим на си?

Ответы905379905383

03 Янв, 20:41 #173 #905379

>>905378
>физике
Фичи

03 Янв, 20:45 #174 #905383

>>905378
Для начала нужно определиьтся, что ты имеешь в виду под "похож на с".

Ответы905403

03 Янв, 21:01 #175 #905403

>>905383
Это как раз тебе нужно определится. Что по синтаксису (внешнему виду), что по семантике — это все потянет за собой еще кучу всего (за паттернматчингом придется тянуть адт, убрав текстовую подстановку хидеров и запилив строгую типизацию захочется нормальные (типобезопасные, не лишповые) макросы и тд) — чем это будет отличатся от того же раста?

Ответы905420

03 Янв, 21:26 #176 #905420

>>905403
>за паттернматчингом придется тянуть адт
Не придётся. Да и уж на сишке-то они делаются за две минуты.
>захочется нормальные (типобезопасные, не лишповые) макросы
Во-первых, не факт. Во-вторых, даже если и захочется - это будет потом.

Ответы905458

03 Янв, 21:43 #177 #905458

>>905420
>Не придётся. Да и уж на сишке-то они делаются за две минуты.
И ты про строгую типизацию только недавно рот открывал, лол.
Алсо, без адт и кортежей пм в сишке довольно бесполезная хуита — что ты там матчить собрался-то? Полтора примитива и структуры? Причём последнее по-человечески на си не сделать.
>Во-первых, не факт. Во-вторых, даже если и захочется - это будет потом.
Во-первых, ты очевидно никогда не задумывался о дизайне языков и не пробывал делать свое говнишко. Вот ты обмазываешься строгой типизацией, пм пилишь (правда непонятно нахуя без нормальной системы типов), модули там, чтобы избавится от текстовой подстановки — в общем, пилишь фичи которые позволяют писать корректный код без дебагинга а тут макросы, блядь, текстовые.
Во-вторых, языки нужно сначала до конца продумать и только потом делать, так же как и любой проект либо начинается с тз, либо никогда не выходит в свет (или выходит по кусочкам какая-то невнятная костыльная ебота вроде жаваскрипта и плюсов, где сначала сделали, а потом подумали).

Ответы905472

03 Янв, 22:12 #178 #905472

>>905458
>строгую типизацию
И как они противоречат строгой типизации?
>что ты там матчить собрался-то
Матчить можно много всякого разного. Например, я могу матчить структуры. Или массивы, которые там будут. Или таплы, которые там будут. Или ещё что-нибудь. Можно даже дикшинарей напилить и их матчить.
>Причём последнее по-человечески на си не сделать.
А как тот же руст это делает? Ты же догадываешься, что паттерн-матчинг можно компилировать в цепочку ифов и свитчей, я надеюсь?
>макросы, блядь, текстовые
Ты с чем споришь-то? Ты там себе надумал что-то и теперь мне доказываешь, что так нельзя. Я и хочу эту хуйню как раз для того, чтобы никаких макросов текстовых не было нужно.
>языки нужно сначала до конца продумать и только потом делать
Продумай. Зделой.

Ответы905482

03 Янв, 23:01 #179 #905482

>>905472
>А как тот же руст это делает? Ты же догадываешься, что паттерн-матчинг можно компилировать в цепочку ифов и свитчей, я надеюсь?
/0
Я честно не подозревал что разговариваю с долбоебом. Сорян.

Ответы905483

03 Янв, 23:04 #180 #905483

>>905482
Ок, Сорян, просвети долбоёба, как делается паттерн-матчинг.

03 Янв, 23:58 #181 #905504

Суп, анон. Короче, тут такое дело, я решил захуярить этот ваш pipe/конвеер. Написал код, который должен рекурсивно создавать процесс и выдавать дескрипторы ввода/вывода следующему потоку. На вход первого процесса я поставил stdin, на вывод последнего я поставил stdout.
http://pastebin.com/XFgHYLGH
Суть такова, что ничего не работаетна вход первого потока из ожидаемого stdin ничего не идёт (соответственно, выхлоп последнего я не могу проверить, т.к. он ждёт входа с предыдущего).
Пробовал запускать процессы в таком порядке (execvp):
cat | bc который gnuкалькулятор
ЧЯДНТ? Анон, спасай-помогай.

Ответы905505905634905643

04 Янв, 00:01 #182 #905505

>>905504
Пытался гонять переменные с дескрипторами и менять их местами, ничего не вышло.
Ну, вернее, вышло: в cat поступает ввод, но никуда не идёт.

04 Янв, 05:32 #183 #905634

>>905504
Сука, блядь, выложи код, который можно собрать и протестировать, а не только огрызок из одной функции. И детально опиши сценарий, как можно воспроизвести проблему, что ты ожидаешь, что получаешь на самом деле.

Ответы905665

04 Янв, 07:06 #184 #905643

>>905504
https://www.gnu.org/software/libc/manual/html_node/Implementing-a-Shell.html , а конкретно https://www.gnu.org/software/libc/manual/html_node/Launching-Jobs.html

Ответы905673

17 Кб, 427x185

04 Янв, 11:11 #185 #905665

>>905634
http://pastebin.com/qdaVAAkR
Вот main, из которого всё запускается.

ll_create(), ll_append() и ll_dispose() опустил, ибо их имплементация проверена и там ошибок быть не может.

Скриншот рилейтед (cat | bc).

2 Кб, 127x83

04 Янв, 11:26 #186 #905673

>>905643
Бляяя, анон, спасибо за годный ман. Перепилил всё без рекурсии и взлетело.

35 Кб, 914x451

04 Янв, 20:58 #187 #906013

Пытаюсь сделать в виндовс окно с диалог боксом. Но не получается. В чём проблема?

#include <windows.h>

char buf[256]="";
HINSTANCE h;

LRESULT CALLBACK MainWinProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp);
#define ID_MYBUTTON 1

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hpi, LPSTR cmdline, int ss) {
WNDCLASS wc;
wc.style=0;
wc.lpfnWndProc=MainWinProc;
wc.cbClsExtra=wc.cbWndExtra=0;
wc.hInstance=hInst;
wc.hIcon=LoadIcon(hInst, "icon1");
wc.hCursor=NULL;
wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName="menu1";
wc.lpszClassName="class";

h = wc.hInstance;

if (!RegisterClass(&wc)) return FALSE;
HWND hMainWnd=CreateWindow("class", "test programm", WS_OVERLAPPEDWINDOW,
20, 20, 400, 400, NULL, NULL, hInst, NULL);
if (!hMainWnd) { return FALSE; }
ShowWindow(hMainWnd, ss);
UpdateWindow(hMainWnd);

MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

BOOL CALLBACK DlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) {
switch (msg) {
case WM_INITDIALOG:
SetDlgItemText(hw, 1, buf);
return TRUE;
break;
case WM_COMMAND:
if (LOWORD(wp)==2) EndDialog(hw, 0);
}
return FALSE;
}

LRESULT CALLBACK MainWinProc(HWND hw,UINT msg,WPARAM wp,LPARAM lp) {
switch (msg) {
case WM_CREATE:
CreateWindow("button","Button",WS_CHILD|BS_PUSHBUTTON|WS_VISIBLE,
5,5,100,20,hw,(HMENU)ID_MYBUTTON,NULL,NULL);
return 0;
case WM_COMMAND:
if (HIWORD(wp)==0) {
char buf[256];
switch (LOWORD(wp)) {
case 6:
PostQuitMessage(0);
break;
default:
wsprintf(buf,"Command code: %d",LOWORD(wp));
DialogBox(h, "dialog1", hw, DlgProc);
}
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hw, msg, wp, lp);
}

35 Кб, 914x451

04 Янв, 20:58 #187 #906013

Пытаюсь сделать в виндовс окно с диалог боксом. Но не получается. В чём проблема?

#include <windows.h>

char buf[256]="";
HINSTANCE h;

LRESULT CALLBACK MainWinProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp);
#define ID_MYBUTTON 1

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hpi, LPSTR cmdline, int ss) {
WNDCLASS wc;
wc.style=0;
wc.lpfnWndProc=MainWinProc;
wc.cbClsExtra=wc.cbWndExtra=0;
wc.hInstance=hInst;
wc.hIcon=LoadIcon(hInst, "icon1");
wc.hCursor=NULL;
wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName="menu1";
wc.lpszClassName="class";

h = wc.hInstance;

if (!RegisterClass(&wc)) return FALSE;
HWND hMainWnd=CreateWindow("class", "test programm", WS_OVERLAPPEDWINDOW,
20, 20, 400, 400, NULL, NULL, hInst, NULL);
if (!hMainWnd) { return FALSE; }
ShowWindow(hMainWnd, ss);
UpdateWindow(hMainWnd);

MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

BOOL CALLBACK DlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) {
switch (msg) {
case WM_INITDIALOG:
SetDlgItemText(hw, 1, buf);
return TRUE;
break;
case WM_COMMAND:
if (LOWORD(wp)==2) EndDialog(hw, 0);
}
return FALSE;
}

LRESULT CALLBACK MainWinProc(HWND hw,UINT msg,WPARAM wp,LPARAM lp) {
switch (msg) {
case WM_CREATE:
CreateWindow("button","Button",WS_CHILD|BS_PUSHBUTTON|WS_VISIBLE,
5,5,100,20,hw,(HMENU)ID_MYBUTTON,NULL,NULL);
return 0;
case WM_COMMAND:
if (HIWORD(wp)==0) {
char buf[256];
switch (LOWORD(wp)) {
case 6:
PostQuitMessage(0);
break;
default:
wsprintf(buf,"Command code: %d",LOWORD(wp));
DialogBox(h, "dialog1", hw, DlgProc);
}
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hw, msg, wp, lp);
}

Показать весь текст
Ответы906072906280

04 Янв, 21:56 #188 #906072

>>906013
Хуй его знает, я из выживача пришел по ссылке. Ну ебани комп ногой, у меня вроде помогает.

Ответы906263

04 Янв, 23:50 #189 #906186

VS 2017 научилась в С11?

Ответы906280

05 Янв, 02:29 #190 #906263

>>906072
Когда приходишь по ссылке-надо ссылку обратно оставлять, а то не уйдешь.

Ответы906271

05 Янв, 03:30 #191 #906271

>>906263
Ебать крипота поперла на ночном

sage 05 Янв, 06:09 #192 #906280

>>906186
Привет. Уже три года как никаких проблем не замечаю.

>>906013
Ну дело не варнинге же. На вкладке Ресурси посмотри, у тебя там windres обосрался.

05 Янв, 09:14 #193 #906310

Как заставить мингвшный линкер прилинковать либу? Есть одна библиотека, которая, по мнению линкера, не используется, поэтому он её старательно отфильтровывает. А мне надо, чтобы в таблице импорта на неё ссылка осталась. Можно это как-то сделать?

Ответы906342

05 Янв, 11:38 #194 #906342

>>906310
void *foo = &library_func;
Если LTO не включать, все будет норм.

Ответы906343

05 Янв, 11:51 #195 #906343

>>906342
Я так не могу сделать. У меня только к командной строке есть доступ.

05 Янв, 14:10 #196 #906389

Программы с GUI легче программировать под виндвос или под линукс?

Ответы906392906410

05 Янв, 14:14 #197 #906392

>>906389
Пад хуиндакс)

05 Янв, 14:41 #198 #906410

>>906389
Один хер.

05 Янв, 15:04 #199 #906423

>>898241 (OP)
Анон, где купить на торрентах Unix network programming 3rd?

Ответы912494

3 Кб, 939x37

05 Янв, 16:06 #200 #906452

Подскажите, плиз, как сделать пикрил в одну строчку.

Алсо массив будет константным, с большим числом элементов. Сделал из 3 элементов для простоты.

Ответы906458906509

05 Янв, 16:24 #201 #906458

>>906452
Цель какая? Сохранить юникодную строку в массив?

4 Кб, 1041x22

05 Янв, 17:30 #202 #906509

>>906452
Не благодари.

06 Янв, 10:34 #203 #907014

Как программировать роботов на си? Я думаю что надо как то передавать сигналы в USB или HDMI или ещё куда то, а дальше уже дело электроники. Но как передавать эти сигналы?

Ответы907189907344907879

06 Янв, 17:14 #204 #907176

>>901070
>Заебала меня наука нищетой и бесперспективностью
Что за наука-то у тебя? Изучил методы и съебал заниматься этим практически попутно зарабатывая деньги.

06 Янв, 17:30 #205 #907189

>>907014
>надо как то передавать сигналы в USB или HDMI или ещё куда то
да.

Ответы907272

06 Янв, 19:57 #206 #907272

>>907189
Но как это сделать? Что надо написать?

Ответы907545

06 Янв, 21:40 #207 #907344

>>907014
В Linux любое устройство - файл.

07 Янв, 00:50 #208 #907445

http://ideone.com/y8V8Ro
Наваял вот такую программку, а она наотрез отказывается работать. Задача была такая: Написать програму, которая из файла берет слова и записывает их в односвязный список, затем она должна удалить из этого списка элементы, у которых длина слов меньше 3 символов, и получившийся список надо вывести в стандартный поток вывода. Вроде все сделал, но нихуя не выводит (совсем) и что-то я не пойму в чем ошибся.
Само-собой компелировал я не в ideone. За говнокод прошу не обоссывать, я нюфаня.

Ответы907457907467907554

07 Янв, 01:10 #209 #907457

>>907445
> symbol=(getc(open))!=EOF
Ты в symbol записываешь результат операции сравнения. Надо так: (symbol=getc(open))!=EOF

Ответы907492

07 Янв, 01:26 #210 #907467

>>907445
>buff=='\0';
Ты, видимо, хотел делать присваивание?
>Element->text=buff;
Здесь ты присваиваешь указатель, а не копируешь buf в text, если что.

На будущее, не пиши так много кода перед первым запуском. Напиши немного, протестируй как работает. Так куда лучше отлаживать, чем написав дохуя всего, обнаружить, что не заводится. Я подозреваю, у тебя тут ещё много косяков. Алсо, ты не проверяешь, что вернул malloc(), это не есть гуд.

Ответы907492907553907605

07 Янв, 02:37 #211 #907492

>>907457
Спасибо, и впрямь хуйню сделал.
>>907467
>buff=='\0';
>Ты, видимо, хотел делать присваивание?
Да.
>Element->text=buff;
>Здесь ты присваиваешь указатель, а не копируешь buf в text, если что.
Блять, да, надо strcpy использовать.
Спасибо
я у мамы дурак.

07 Янв, 07:38 #212 #907545

>>907272
>Что надо написать?
Код.

Ответы907574

07 Янв, 09:38 #213 #907553

>>907467
>ты не проверяешь, что вернул malloc(), это не есть гуд
Ну вот вернул он NULL, что дальше?

Ответы907581

07 Янв, 09:44 #214 #907554

>>907445
>if(Current->next->next!=NULL)
Нет, тебе не про это писал. Надо вот так
if(Current->next != NULL)
Потому что именно next может быть NULL, а Current последним элементом.
Но в этой функции, как мне кажется, лучше сделать не так, как у тебя. Во-первых, вне цикла в начале проверять количество символов, т.е. найти первый элемент, у которого их больше 3. И, во-вторых, уже убирать элементы, в которых меньше 3 символов.
И всё-равно ты не сделал так, как тебе писал. Тебе нужно запоминать предыдущий элемент, а потом делать prev->next = current->next, таким образом ты исключаешь текущий элемент из списка. И удалить не забудь.

Ответы907568

07 Янв, 11:41 #215 #907568

>>907554
>Нет, тебе не про это писал. Надо вот так
if(Current->next != NULL)
У меня в цикле for чуть выше это условие есть.
Current->next!=NULL;
>Но в этой функции, как мне кажется, лучше сделать не так, как у тебя. Во-первых, вне цикла в начале проверять количество символов, т.е. найти первый элемент, у которого их больше 3. И, во-вторых, уже убирать элементы, в которых меньше 3 символов.
Все это есть %%хотя я посмотрю еще, вдруг криво работает.

Ответы907569

07 Янв, 11:43 #216 #907569

>>907568
Обосрался с разметкой

44 Кб, 469x314

07 Янв, 11:54 #217 #907571

будущая сишница врывается в тренд! Где найти задачки по Си с решениями?

Ответы907575

07 Янв, 11:59 #218 #907574

>>907545
Какой?

07 Янв, 11:59 #219 #907575

>>907571
Кинул тебе парочку за щёку.

07 Янв, 12:00 #220 #907576

кек

07 Янв, 12:36 #221 #907580

Положняк такой http://ideone.com/y8V8Ro, опять компилируется, но не работает.

По поводу функции, многое поменял.
>struct Word to_change_the_node(struct Word First)
>{
>struct Word Current;
>struct Word Buffer;
>for(Current=First; Current!=NULL || strlen(Current->text)>=3; Current=Current->next) (в этом цикле ищем первый элемент списка, с длиной слова не меньше 3, тело цикла отсутствует)
>while(Current->next!=NULL)(в этом цикле убираем из списка элементы с длиной слова меньше трех символов)
>{
>if(strlen(Current->next->text)>=3)(вот тут мы удаляем)
>{
>Buffer=Current->next;
>Current->next=Current->next->next;
>free(Buffer);
>}
>else
>{
> Current=Current->next;(переходим к другому элементу списка)
>}
>}
>return First;(возврат)
>}

Ответы907582907608907610

07 Янв, 12:36 #222 #907581

>>907553
Если ты попробуешь по указателю что-то записать, получишь segfault.

Ответы907605

07 Янв, 12:39 #223 #907582

>>907580
>не работает
Никто твой код не будет отлаживать за тебя. Учись сам разгребать своё дерьмо.

Ответы907586

07 Янв, 12:53 #224 #907586

>>907582
Ок.

07 Янв, 13:51 #225 #907605

>>907581
Гениально, ты открыл мне глаза на это!!1111
Давай вопрос повторю.
Если malloc вернул NULL, что делать дальше? Твоя (или не твоя) фраза >>907467
>ты не проверяешь, что вернул malloc(), это не есть гуд.
Не лучше ли будет, если программа упадёт сразу же, если malloc вернул ноль? Зачем проверять, что вернул malloc? Если он вернул NULL, значит всё настолько плохо, что даже сообщение об ошибке вывести не удастся, даже лог возможно не получится записать.

Ответы907617907838

07 Янв, 14:00 #226 #907608

>>907580
Пройдись пошагово отладчиком и посмотри, где начинается ошибка.
>По поводу функции, многое поменял
Ты опять предыдущий элемент не запоминаешь. Тебе надо удалить текущий, а ты делаешь что-то непонятное.
Разбей на два цикла: в первом найди элемент, длина строки в котором больше 3 символов (возможно, это и будет первый элемент, это будет гарантировать, что предыдущий элемент существует), во втором удаляй те, где меньше 3 символов (то есть, как у тебя задумано было).
Можешь дальше брутфорсить правильный вариант, может чего и получится. Но лучше подумай, а не пытайся угадать правильное решение.
И ещё, твой код не смотрел, может быть, где ещё проблемы есть. Подсказать, что неправильно, мне не сложно, но делать за тебя не буду.

07 Янв, 14:05 #227 #907610

>>907580
Ещё увидел ошибку (to_create_the_element_of_the_node).
>strcpy(Element->text,buff);
Удивительно, как твоя программа не падает на таком (видимо, до этой функции дело не доходит). Ты выделяешь память для структуры и копируешь в нулевой указатель строку. Два варианта здесь возможны:
1. Выделить память для строки.
2. Сделать массив фиксированной длины.

Ответы907614

07 Янв, 14:07 #228 #907614

>>907610
>и копируешь в нулевой указатель строк
А, это не нулевой указатель, там же malloc, а не calloc. Кому-то не повезло, его строкой перезаписали.

07 Янв, 14:15 #229 #907617

>>907605
>Не лучше ли будет, если программа упадёт сразу же, если malloc вернул ноль?
В твоём случае она упадёт не сразу, а только когда ты попытаешься записать данные по гнилому указателю. И потом ты будешь сидеть и чесать репу, откуда у тебя сегфолт. Ты мог бы проверить на NULL и сразу вызвать exit() с определённым кодом ошибки, например.
>Если он вернул NULL, значит всё настолько плохо, что даже сообщение об ошибке вывести не удастся.
Почему? Лол. Твоё приложение, например, может исчерпать лимит памяти, которое оно может аллоцировать, установленный системой. Остальные приложения в это же время будут работать в штатном режиме. Сценариев может быть овердохуя в зависимости от ОС и её конфигурации. Понятно, что для лабы1, которую ты запускаешь на своей пека это не критично.

Алсо, ты почему-то так напрягаешься по поводу проверки того, что возвратит malloc, но в то же время освобождаешь память перед выходом из программы. Вот это как раз бессмысленное действие, т.к. за тебя это сделает ОС.

Ответы907622

07 Янв, 14:28 #230 #907622

>>907617
>И потом ты будешь сидеть и чесать репу, откуда у тебя сегфолт
А вот и нет. Самая замечательная ошибка - обращение к нулевому указателю, отладчик тут же в место ошибки перейдёт.
>Ты мог бы проверить на NULL и сразу вызвать exit() с определённым кодом ошибки, например
А адрес, где ошибка произошла, ты как будешь искать? А тем, кто в библиотеках делает exit, надо клавиатуру отбирать.
>Твоё приложение, например, может исчерпать лимит памяти
Это ошибка в логике приложения. А может быть, что в системе всё плохо, поэтому и NULL от malloc. В первом случае возможно, можно и лог записать, и окошко с ошибкой вывести, если есть зарезервированная память. А во втором уже ничего не получится.
>ты почему-то так напрягаешься по поводу проверки того, что возвратит malloc
Не люблю, когда делаются бесполезные действия. А их за работу программы (проверка указателя от malloc на NULL) миллиарды раз будет.
>но в то же время освобождаешь память перед выходом из программы
Да, можно и не освобождать. Но при условии, что точно знаешь, что нет утечек памяти. Т.е. в debug режиме нужно всё освобождать и проверять в конце работы программы, а вот в release можно и не всё освобождать. Хотя и не назову эту практику хорошей.

Ответы907778907793

07 Янв, 18:38 #231 #907733

Поясните за Intel C Compiler, что это такое?

Ответы907759

07 Янв, 19:28 #232 #907759

>>907733
>что это такое
Компилятор от Intel. Попробуй, вдруг ещё захочешь.

Ответы907781

07 Янв, 19:57 #233 #907778

>>907622
>А вот и нет. Самая замечательная ошибка - обращение к нулевому указателю, отладчик тут же в место ошибки перейдёт.
Если выведешь сообщение или дашь нужный код возврата, даже отладчик не нужен будет, прикинь. Алсо, всем пользователям твоей проги, например, ты тоже будешь говорить, юзайте отладчик, чтобы понять, в чём проблема? Типа собирайте с отладочной инфой и изучайте мой код, где там чё я аллоцировал и делайте выводы? Ты просто своим отношением хуй на пользователей кладёшь.
>А адрес, где ошибка произошла, ты как будешь искать?
Можешь юазть __FILE__, __LINE__. Можешь сделать abort() вместо exit(), чтобы у тебя был кордамп. Суть в том, чтобы дать как можно больше инфы пользователю, а не просто упасть с сегфолтом.
>А тем, кто в библиотеках делает exit, надо клавиатуру отбирать.
Во-первых не о библиотеке речь сейчас. Во-вторых, exit() просто один из сценариев. В библиотеках обычно делается возврат кода ошибки, которому может соответствовать определённое сообщение. И ты так радикален насчёт exit(), но при этом забиваешь хуй на возврат malloc(). Ты очень непоследователен.
>Не люблю, когда делаются бесполезные действия.
Все приложения на C (как правило, open source), которые мне приходилось смотреть (в частности, очень много приходилось читать исходники perf утилиты, одна из юзерспейс программ линукса), пожалуй, в 99.99% случаях, если не в 100%, проверяли возврат malloc(). Я не знаю, либо все, кто этот код пишет, не шарят, либо ты. Мне кажется, второе.
>Хотя и не назову эту практику хорошей.
Пиздец, ты такой непоследовательный. Отсутствие проверки возврата malloc() куда более критична и фатальна, чем не освобождение памяти перед завершением. Это блядь пиздец так очевидно, что я просто тебе поражаюсь.

07 Янв, 20:00 #234 #907781

>>907759
К нему нужна VS и где его бесплатно взять?

07 Янв, 20:15 #235 #907793

>>907622
>>>Твоё приложение, например, может исчерпать лимит памяти
> Это ошибка в логике приложения.
Если лимит памяти со стороны ОС установлен, то при чём тут приложение?
>А может быть, что в системе всё плохо, поэтому и NULL от malloc.
А может быть ты пытаешься аллоцировать овер 9000 ГБ на системе с 256 метрами оперативы. С чего считаешь, что если malloc() вернул NULL, то в системе обязательно всё плохо, я просто не могу понять.

Ответы912497

07 Янв, 20:23 #236 #907804

Так что же за код надо написать чтобы программа могла подавать сигналы на USB, HDMI и другие выходы? Может есть какой то особый участок памяти, с которого считываются байты и подаются через USB и другие выводы?

Ответы907843907939

07 Янв, 21:01 #237 #907838

>>907605
>Не лучше ли будет, если программа упадёт сразу же, если malloc вернул ноль?
Для ленивого программистишки - конечно. Для пользователя твоей поделки - нет.
Но для лаба1 не актуально.
>Зачем проверять, что вернул malloc?
Чтобы не падать как последняя сука хуй знает где и хуй знает когда с проебыванием всех полимеров, а попытаться завершить работу так, чтобы не проебать пользователськие данные. Или хотя бы не закапывать ошибку в долгий ящик и сообшить о ней на месте преступления.
Для лаба1 не актуально.
>Если он вернул NULL, значит всё настолько плохо, что даже сообщение об ошибке вывести не удастся, даже лог возможно не получится записать.
С хуев это, кукаретик ты ебаный?
Опять таки, для лаба1 не актуально.
???
Ты просто тупой студент.

07 Янв, 21:06 #238 #907843

>>907804
>Так что же за код надо написать чтобы программа могла подавать сигналы на USB, HDMI и другие выходы?
Код с использованием OS specific либ/системных вызовов.
>Может есть какой то особый участок памяти, с которого считываются байты и подаются через USB и другие выводы?
Есть. Только им ОС заведует.

07 Янв, 21:46 #239 #907879

>>907014
libusb позволяет работать с USB из юзермода (в Linux и Windows), не тратя время на попытки написать драйвер.

Ответы907934

зайкина 07 Янв, 23:13 #240 #907934

>>907879

>libusb

Обертка говна над Windows API. Не нужна, ты сишник, а не старый программист на коболе.

Ответы908058

зайкина 07 Янв, 23:21 #241 #907939

>>907804
> Может есть какой то особый участок памяти, с которого считываются байты и подаются через USB и другие выводы?

Нет никакой такой памяти. Ты наркоман чтоли?
Но есть WinAPI функция которая позволяет работать с любым USB-портом как с файлом. Открыть его и писать в него байтики, или читать.

https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa363216(v=vs.85).aspx

Ответы907957

07 Янв, 23:49 #242 #907957

>>907939
>Ты наркоман чтоли?
Он имеет в виду порты.

08 Янв, 03:47 #243 #908058

>>907934
Эта обертка и Windows и на Linux работает. Или ты из тех кто майкрософтские типы юзает?

08 Янв, 06:38 #244 #908078

как прочитать имена файлов в указанной директории без фреймворков и прочей хуйни на с/с++? я начинашка есличе.

Ответы908079908091

08 Янв, 06:43 #245 #908079

>>908078
system("ls")

Ответы908081

08 Янв, 06:58 #246 #908081

>>908079
ну что такое ls я не знаю например. system("dir [директория]") печатает имена файлов в консольке, мне нужно эти имена получить и сохранить в массив строк например.

Ответы908090

08 Янв, 07:48 #247 #908090

>>908081
Ну тогда https://linux.die.net/man/3/readdir

Ответы908097

sage 08 Янв, 07:50 #248 #908091

>>908078
https://www.google.com/search?q=get+directory+file+list+c
Но ты долбоеб, тебе не поможет.

08 Янв, 08:53 #249 #908097

>>908090
проблему решил system("dir [директория файлов] > [файл записи имён и прочей хуйни из директории])

Ответы908098908196908307

08 Янв, 09:03 #250 #908098

>>908097
ты странный

08 Янв, 14:04 #251 #908196

>>908097
Эталонный идиот.

08 Янв, 17:58 #252 #908307

>>908097
быдло ебаное, съеби

09 Янв, 01:03 #253 #908552

Анон, вот у вас в шапке ссылка на шапку на пиратской подушке. Чем плоха паста бина, поясни ньюфагу.
мимокрокодил, зашел лишь почитать ту самую шапку да задать ебанутый вопрос

Ответы908562908993

09 Янв, 01:37 #254 #908562

>>908552
Комментариями

Ответы908572

90 Кб, 1351x343

09 Янв, 02:22 #255 #908572

>>908562
This?

09 Янв, 21:36 #256 #908993

>>908552
> Чем плоха паста бина
Тем, что pastebin не редактируется, а в эту ты можешь что-нибудь добавить. Алсо, так исторически сложилось, все вопросы к ОПу первого треда.

09 Янв, 23:06 #257 #909037

Может кто помочь разобраться? Сам в программировании не шарю, лишь недели две знаком с этим.
Нужно было написать программу для работы с базами данных.
Что не так с этим кодом? http://ideone.com/w6D9z2
Он отключается либо рандомно во время заполнения данными, либо после того, как введу последние данные. Программа ничего не пишет и вылетает. Но зато компилируется нормально.

Ответы909055909073

09 Янв, 23:32 #258 #909055

>>909037
>struct chip A[ i ]
На это компилятор не ругается? Нужно динамически выделять память, после того, как n инициализируешь.

Ответы909077

10 Янв, 00:00 #259 #909073

>>909037
>Ошибка компиляции#stdin compilation error#stdout 0s 0KB
>Но зато компилируется нормально.
Блять, пол доски таких долбоебов.

Ответы909077909322

10 Янв, 00:06 #260 #909077

>>909055
Нет, компилятор не ругался на это. Он вообще ни на что не ругался.
Спасибо, помог разобраться в чем проблема
>>909073
Не знаю каким компилятором пользуешься, но мой компилятор (Видимо бесполезный и херовый) не сообщал ни о чем.

Ответы909079

10 Янв, 00:09 #261 #909079

>>909077
Никаким. Я просто открыл твою ссылку http://ideone.com/w6D9z2

10 Янв, 00:10 #262 #909080

Как отключить контроль вызовов, чтобы компилировались инструкции типа __asm call 0x00000000?

sage 10 Янв, 02:03 #263 #909126

Никак. Компилятор и ассемблер не знают, куда линкер поместит твой объектный файл, а адрес call кодируется относительно инструкции, следующей за call. Сделай mov eax, адрес / call eax.

10 Янв, 13:26 #264 #909275

Подскажите либу для tui. Пока нагуглил pdcurses, буду пробовать, но может что-то более интересное есть, под винду в основном надо.

Ответы909482

10 Янв, 14:52 #265 #909322

>>909073
>Ошибка компиляции
Это из-за того, что он выбрал с99strict, который -Wall и -Werror, и проверяет вообще всё, что только можно.
>Блять, пол доски таких долбоебов.
Двачую.

sage 10 Янв, 21:15 #266 #909482

>>909275
Под винду ты можешь сам через WriteConsoleOutput ебать консоль как угодно.

1 Кб, 384x66

11 Янв, 01:09 #267 #909582

ЧЕ ТУТ НАПИСАНО?

Ответы909592

sage 11 Янв, 01:33 #268 #909592

>>909582
int i; i = (1 && 2) + 3
1 && 2 будет равно 1, т.е., значение i будет равно 1 + 3.

Ответы909593920115

11 Янв, 01:34 #269 #909593

>>909592
Спасибо

11 Янв, 20:10 #270 #909991

Ребзя, чому у меня gdb в mingw-w64 при отладке программы пишет
> This application has requested the Runtime to terminate it in an unusual way.
> Please contact the application's support team for more information.
и завершается? Воспроизводится даже на main с одним printf внутри, стоит только поставить брейк на входе в main и по одной строке выполнять, на выходе из main он упадет. Но без брейков процесс завершается нормально. В программе с несколькими файлами падает даже просто на входе в main. Нагуглить ничего не получается.

12 Янв, 16:44 #271 #910521

Где подробнее прочитать про динамическую аллокацию памяти да и вообще про память/стек/кучу? После K&R много вопросов осталось. Или, может, добрый анон сам расскажет, как и для чего нужна динамическая аллокация?

нуфаг

Ответы910525910530910616

sage 12 Янв, 16:57 #272 #910525

>>910521
https://leaksource.files.wordpress.com/2014/08/hacking-the-art-of-exploitation.pdf
0x200

Ответы910744

12 Янв, 17:05 #273 #910530

>>910521
https://lwn.net/Articles/250967/

Ответы910666910744

12 Янв, 18:14 #274 #910616

>>910521
Таненбаум, "Архитектура компьютера" и "Операцiонные системы".

Ответы910744

12 Янв, 18:39 #275 #910666

>>910530
>What every programmer should know about memory, Part 1
>схемы, формулы
да ну нахуй

12 Янв, 19:54 #276 #910744

>>910525
>>910530
>>910616
Всем спасибо, господа!

12 Янв, 23:14 #277 #910890

Прогаю на говноноуте, которые не тянет студию, поэтому использую PellesC. Мне нужно выкинуть CRT из программы. Как это сделать? Добавил прагму /NODEFAULTLIB, но при компиляции ничего не произошло. Обычно линкер ругался на _memcpy и _memst. Поставил в настройках проекта точку входа WinMain, но после этого появилась ошибка Undefined symbol _WinMain. Как решить проблему? Тип приложения Windows.

Ответы910903910907911033

12 Янв, 23:32 #278 #910903

>>910890
Поставь GCС или командную строку от студии.

> /NODEFAULTLIB, но при компиляции ничего не произошло
/Zl

> Undefined symbol _WinMain
Потому что если ты объявил WinMain как обычно, то символ будет _WinMain@16. И имей в виду, что аргументы для тебя в нее никто не передаст, и выход из нее распидорасит стек, поэтому ExitProcess обязателен. Или объяви правильную функцию, без аргументов.

12 Янв, 23:34 #279 #910907

>>910890
>Прогаю на говноноуте, которые не тянет студию
Visual Studio 2005 + Visual Assist.
Пока писал ответ, анон выше ответил уже.

13 Янв, 03:39 #280 #911033

>>910890
Свободное сообщество дало им GCC - качай MinGW, пиши Make файлы, собирай из командой строки! Не хочу, хочу жрать какое-то никому неизвестное говно.

Ответы911210

13 Янв, 13:50 #281 #911210

>>911033
>Свободное сообщество дало им GCC
>GCC

Кривое и глючное гавно. Хотя бы вот: http://www.sql.ru/forum/1233461/kak-ya-lublu-gcc

Ответы911325911465911893

13 Янв, 17:33 #282 #911325

>>911210
спермопроблемы

Хотя я доводил gcc до ICE, да.

13 Янв, 20:24 #283 #911465

>>911210
>Кривое и глючное гавно.
назовешь еще хоть один кросс-платформенный конпелятор, манюня? (кроме ваткома)

Ответы911609

sage 14 Янв, 00:52 #284 #911609

>>911465
> еще хоть один кросс-платформенный конпелятор
Да каждый первый: шланг, интель, tcc, да хоть тот же lcc, из которого сделан pelles c.

Ответы911671911892

14 Янв, 03:24 #285 #911671

>>911609
>Да каждый первый: шланг, интель, tcc, да хоть тот же lcc, из которого сделан pelles c.
хуйтыугадал

14 Янв, 12:44 #286 #911892

>>911609
У гнутых дебилов кроссплатформенный — означает не то, что поддерживающивает 98% процессоров в мире, а то что обязательно поддерживает 2% маргинальной хуиты устанавливающийся в чайниках и микроволновках с утюгами.

Ответы911899911950

14 Янв, 12:45 #287 #911893

>>911210
>__attribute__ ((__packed__))
>-O3
>Windows
У меня такое чувство, автор сам себе проблемы создаёт.

Ответы912505

14 Янв, 12:51 #288 #911899

>>911892
>98% процессоров в мире
Ты имеешь в виду арм и x86? Насколько я знаю, gcc их поддерживает.

Ответы911910

14 Янв, 12:57 #289 #911910

>>911899
Кроме них он еще имеет порты под всевозможные лоукост/древние залупы для мк и прочего, на которые всем остальным похуй.

Ответы911942

14 Янв, 13:42 #290 #911942

>>911910
тебе это мешает?

Ответы911950

14 Янв, 13:51 #291 #911950

>>911942
>>911892

14 Янв, 14:21 #292 #911982

Нужен набор мелких статей чтобы по фасту вкатится в си. Кресты знаю, но как только начал писать хэлоуворд на си так куча ошибок. В инклюдах, в форах, в ссылках и в структурах. Короче надо с нуля изучать, но галопом. Чтобы уже завтра мог писать хэлоуворды. Дайте литературы.

Ответы911989912203

14 Янв, 14:30 #293 #911989

>>911982
я думал, кресты в разы сложнее си, и с них перекатится, как нехуй делать

Ответы912003

14 Янв, 14:50 #294 #912003

>>911989
Там в синтаксисе ошибки.

Ответы912040

sage 14 Янв, 15:43 #295 #912040

>>912003
K&R, Reference Manual

Ответы912046

14 Янв, 15:52 #296 #912046

>>912040
Слишком много. Мне не больше 200 страниц надо. Чтобы по быстрому.

14 Янв, 16:49 #297 #912092

Можно как-то сравнить два указателя с учётом, что указатель — typedef структура с множеством данных? Нужно просто понять, что указатели указывают на одно и тоже.

Ответы912096

14 Янв, 16:51 #298 #912096

>>912092
Ну скастуй к void ptr и сравни, кто тебе запрещает?

Ответы912098

14 Янв, 16:55 #299 #912098

>>912096
Как это сделать? Ньюфаг я.
Это вообще нормальный способ? Не будет внезапных обосрачей?

Ответы912100

14 Янв, 17:01 #300 #912100

>>912098
if ((void ∗)some_ptr == (void ∗)other_ptr) {...}
Обосрачей не будет. К void ∗ можно скастовать любой указатель на данные, указатели на void можно хранить, кастовать обратно и сравнивать через != или ==.

Ответы912103912118

14 Янв, 17:09 #301 #912103

>>912100
Спасибо, вроде работает.

14 Янв, 17:42 #302 #912118

>>912100
Погоди, у меня сравниваемый указатель расположен в другом указателе, я к нему обращаюсь так: ptr->ptr, и если писать (void*)ptr->ptr, то нихуя не работает. Как правильно сделать?

Ответы912187912224

sage 14 Янв, 19:50 #303 #912187

>>912118
Книжки почитать. Ну или хотя бы загуглить.

Ответы912208

14 Янв, 20:04 #304 #912203

>>911982
Бамп.

14 Янв, 20:09 #305 #912208

>>912187
Тебе ответить сложно? Книжек под рукой нет, нагуглить не могу не получается нормально составить запрос, один мусор в выхлопе. Будь же ты человеком.

14 Янв, 20:28 #306 #912224

>>912118
> нихуя не работает
Что не работает-то? Свет в комнате не включается? Выкладывай код. Алсо, что-то подсказывает мне, что ты все еще тот самый анон с из прошлых тредов, которому религия не позволяет открыть K&R.

Ответы912236

14 Янв, 20:45 #307 #912236

>>912224
Ах да, туплю, всё работает, просто я идиотина тупая.

> Алсо, что-то подсказывает мне, что ты все еще тот самый анон с из прошлых тредов, которому религия не позволяет открыть K&R.
Ну не знаю, что-то такое было, но очень и очень давно, так что вряд ли.

15 Янв, 05:43 #308 #912469

Репостну сюда >>912406 т.к в ньюфаг треде все молчат.

15 Янв, 10:23 #309 #912494

>>906423
http://libgen.io/search.php?req=Unix+network+programming&open=0&res=25&view=simple&phrase=1&column=def

Ответы912495

15 Янв, 10:25 #310 #912495

>>912494
или там нету - не знаю. я вообще не моюсь.

15 Янв, 10:35 #311 #912497

>>907793
>9000 ГБ на системе с 256 метрами оперативы
>оперативы

15 Янв, 10:56 #312 #912505

>>911893
ваще охуеть.

ума не приложу зачем эти люди пытаются паковать структуры.

15 Янв, 11:10 #313 #912516

>>912481
хуй его знает. можно заделать аргумент void@ - но это-же пиздец, или обернуть функцию в макрос, который кастует аргумент - всё херня какая-то. я просто каждый раз кастую к void@ на вызове и не парюсь - но тоже дерьмо.

но у меня более несправедливый случай, у меня алгоритм(ы) пробрасывает указатель(void@) в функцию которую ему передают. но на той стороне хочется видеть в аргументах сразу нужный тип указателя - а нельзя, парень.

эх ладно. с новым годом. приятно зайти сюда раз в месяцок, кругом хуесосы и всё благоухает.

15 Янв, 14:40 #314 #912592

Ебать вы тут все поехавшие. Си для тонких вещей вроде используют, а не для "ентер хуй ту дефлорейт" и "бля пасаны я тут с жабаскрипт на си перешел зочем освобождать память".

15 Янв, 18:22 #315 #912711

Есть тут кто?
>int a = 35, b = 35, c = 35;
>printf("%s", a==b==c ? "true" : "false");
Что в данном случае значит a==b==c и почему выводит false??

Ответы912727912728

15 Янв, 18:46 #316 #912727

>>912711
м? Как загуглить хотя бы напишите

Ответы912730

15 Янв, 18:48 #317 #912728

>>912711
>почему выводит false??
a==b==c вычисляется как (a==b)==c

Дальше сам думай.

Ответы912731

15 Янв, 18:50 #318 #912730

>>912727
Про линейную логику и join calculus загугли.

15 Янв, 18:52 #319 #912731

>>912728
Понял, т.е.
(a==b)==c
В итоге a равно таки b поэтому получаем 1 и потом
1==c, 1 уже не равен 35 поэтому false. Так?

Ответы912732

15 Янв, 18:53 #320 #912732

>>912731
Да.

16 Янв, 09:44 #321 #912980

Есть у кого Прата в формате EPUB/FB2 ?

Ответы913743

17 Янв, 13:58 #322 #913702

17 Янв, 15:36 #323 #913743

>>912980
http://gen.lib.rus.ec/search.php?req=C+Primer+Plus,+6th+Edition&lg_topic=libgen&open=0&view=simple&res=25&phrase=1&column=def

Ответы914122

17 Янв, 21:34 #324 #914044

Какие есть годные книги по алгоритмам с примерами на си?

17 Янв, 22:55 #325 #914122

>>913743
Спасибо!

Алсо, если к синтаксису вопросов нет, ничего не упущу перейдя сразу к главе Arrays and Pointers Праты?

Ответы914226

18 Янв, 01:39 #326 #914226

>>914122
Новые фишки из C11 тоже знаешь? Хотя я бы в любом случае порекомендовал повторить лишний раз.

18 Янв, 11:21 #327 #914402

Генерировать посредством препроцессора структуры данных и связанные с ними функции это норма? Пример: http://ideone.com/az8ERh

Ответы914406914589914849915355

18 Янв, 11:24 #328 #914406

>>914402
ну а как ещё завезти шаблоны?

Ответы914411914613

18 Янв, 11:34 #329 #914411

>>914406
Не видел ни одного попенсорса с такими шаблонами. Вот и подумал, мол, нихуя не норма.

Ответы914431914589

18 Янв, 12:31 #330 #914431

>>914411
и даже libc ?

18 Янв, 12:39 #331 #914438

или ты про именно такие. не, я бы делал, и делаю, шаблоны через хедер. или как там, создаю 1 .c (макросы замены + инклюд оригинального.с) для точки компиляции и .h (макросы замены + инклюд оригинального.h + определяю функции и структуры которые сгенеряться) для каждого.

Ответы914441

18 Янв, 12:43 #332 #914441

>>914438
>для каждого.
забыл удалить.

95 Кб, 584x608

203 Кб, 634x1025

18 Янв, 15:37 #333 #914589

>>914402
>это норма
Да.
>>914411
>Не видел ни одного попенсорса с такими шаблонами
https://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/sys/sys/tree.h

Ответы914784

18 Янв, 16:13 #334 #914613

>>914406
Начать писать на языке с ними?

Ответы914616

18 Янв, 16:16 #335 #914616

>>914613
плюсы? я скорее мать свою продам. да, это всё боль, но её можно ловко прятать за хедеры и тогда совесть чиста, так сказать, аллах не увидел.

Ответы914622

18 Янв, 16:29 #336 #914622

>>914616
Ну, дык, и писал бы себе спокойно на сях с шаблонами (в том же гцц именно так и сделали), ничего больше не используя, там в отличие от сей даже модули когда нибудь да появятся.

Ответы914624

18 Янв, 16:31 #337 #914624

>>914622
я своё говно планирую запускать на всяком старом дерьме. это же код для себя.

18 Янв, 20:39 #338 #914784

>>914589
То, что надо. Добра.

18 Янв, 22:13 #339 #914849

>>914402
главный минус - затрудняет использование отладчика

Ответы914890

18 Янв, 23:19 #340 #914890

>>914849
Каким образом?

Ответы914891

18 Янв, 23:24 #341 #914891

>>914890
отладчики не дружат с сильно препроцессированным кодом

19 Янв, 01:33 #342 #914948

>>898241 (OP)
На Си пишут чего еще кроме лаб? Работа есть?

Ответы914957915036915359915837

19 Янв, 02:18 #343 #914957

>>914948
Дрова пишут, и для микроконтрллеров.

19 Янв, 10:09 #344 #915036

>>914948
У меня на работе на Chrome Native Client приложение написано и пара обвязок Сишных либ для Python-а.

19 Янв, 14:25 #345 #915140

блин, как думаете, как организовать авто подцеп точек компиляции? название и приписку N - номер? или, может если есть папка с таким же именем, перейти в ней и там взять точку - и так рекурсивно. только во втором нужно будет повторять структуру папок. у меня тут просто куча программ - тестов, всё думаю как это организовать по нормальному.

19 Янв, 14:28 #346 #915143

или в текстовый файл с тем же именем вписать пути на каждой строчке.

19 Янв, 14:34 #347 #915145

или нахуй оно нужно, если можно просто в мейкфайле прописать. хуй знает, не шарю и вообще, в пизду программирование на сегодня, поду праздничной накачу за путина.

19 Янв, 21:00 #348 #915355

>>914402
разве что тяжело потом будет человеку со стороны всё это говно отлаживать, грепая ht_huinya_init(), не находить её и бугуртить

19 Янв, 21:06 #349 #915359

>>914948
В России только для встраиваемых систем. Не шаришь в этих ваших VHDL, не ходил в радиокружок в детстве, пиздуй нахуй. Если есть, что чуть подальше от железа, там из-за высокого порога вхождения и отсутствия опыта тебе сразу проводят по губам.

6 Кб, 291x156

20 Янв, 12:51 #350 #915655

Как правильно скастить ptr, чтобы в него можно было записать целое число? Тащемта и сейчас всё работает, но компилятор говорит, что я мудак.

Ответы915672915674

20 Янв, 13:18 #351 #915672

>>915655
А разыменовывать указатель кто за тебя будет, мудак?

sage # OP 20 Янв, 13:23 #352 #915674

>>915655
Ты сейчас заменяешь значение указателя. После маллока он у тебя указывает на выделенную область памяти, а после присваивания 25 - на область памяти по адресу 25. Скорее всего, ты хочешь либо:
int ∗ptr = malloc(sizeof(int));
∗ptr = 25;
либо
void ∗ptr = malloc(sizeof(int));
*(int ∗) ptr = 25;
Для второго варианта нужны причины, просто по приколу так писать не стоит.

Ответы915700915883

20 Янв, 14:05 #353 #915700

>>915674
>просто по приколу так писать не стоит
какое, блять, тебе дело до того как кто-то что-то там пишет? ты ещё вот так запрети писать f((a=1, &a)) или (*p).a. и каждый пидорас считает свои долгом заикнутся за goto. развели раковник понимаешь

Ответы915719

20 Янв, 15:20 #354 #915719

>>915700
Двачую. Ещё бы запретили писать i++ + ++i, долбоёбы малолетние. Ишь, развели тут раковник.

20 Янв, 17:21 #355 #915781

аноны, зацените гуи либу
https://github.com/vurtun/nuklear/blob/master/Readme.md
у мення на нее аж встал.

Ответы915787915791915805915813916403

20 Янв, 17:41 #356 #915787

>>915781
гуй не нужен.

20 Янв, 17:47 #357 #915791

>>915781
Говно с крайне узкой областью применения - нарисовать интерфейс по-быстрому, пока не появится время выкинуть нахуй нуклеар и сделать нормально. Ничего выходящего за рамки кнопочек и чекбоксов на этом изобразить нельзя.

Ответы915793

20 Янв, 17:53 #358 #915793

>>915791
а больше и не нужно, перегруженный элементами управления ынтерфейс это плохо

20 Янв, 18:06 #359 #915805

>>915781
а на чём он, Focus on portability - это конечно клёво, но конкретней можно, где будет запускаться и на чём.

Ответы915822

20 Янв, 18:15 #360 #915813

>>915781
Как демка годно, а для использования не катит.

Ответы915822

20 Янв, 18:28 #361 #915822

>>915805
никсы, винда. зачем линковать с монстрами типа кюта или гдк?
>>915813
чому? в том же кюте контролов не так уж и много.

Ответы915830

20 Янв, 18:38 #362 #915830

>>915822
А действительно, чому? Выглядит неплохо. Правда как я на нём буду писать десктопные приложения вроде файлового менеджера? Они же будут выглядит пиздец как плохо. Вот если бы поддерживал темы, скажем, GTK, то было бы заебись, а так хз.

20 Янв, 18:55 #363 #915837

>>914948
>На Си пишут чего еще кроме лаб? Работа есть?
чувак, пройдись по топовым крестовым проектам на том же гитхабе
и окажется, что там тупо приплюснутый си - те вроде и классы, но внутри методов та же самая структурная дрисня, которую деды в 70х годах на pdp11 писали, ну плюсом еще темплейты юзают заместо макросов
редкая библиотека спроектирована с использованием иерархий классов, с использованием полиморфизмов, ну или библиотеки сделанные в функциональном стиле на шаблонах
большинство содержат самый настоящий сишных код, хоть и декларируется что это кресты

6 Кб, 291x156

20 Янв, 20:09 #364 #915883

>>915674
Второе. Причины есть.

Есть ещё вопрос. Пикрел, выделяю память var1->ptr на всю структуру type2, потом пытаюсь записать в var->ptr->i значение, но разумеется ничего не выходит. Кастомагия способна на такое?

Ответы915884

10 Кб, 301x286

20 Янв, 20:10 #365 #915884

>>915883
Понятия не имею почему прикрепилась не та пикча.

Ответы915899915913

20 Янв, 20:42 #366 #915899

>>915884
P-> это сокращение от *(P).
смотри таблицу приоритетов с.

Ответы915904

20 Янв, 20:49 #367 #915904

>>915899
Честно говоря я нихуя не понял. Разжуй ещё немного, пожалуйста.

Ответы915905

20 Янв, 20:49 #368 #915905

>>915904
всё просто: нахуй иди.

Ответы915907

20 Янв, 20:58 #369 #915907

>>915905
Злой ты. Надеюсь на анона с сажей.

Ответы915999

20 Янв, 21:06 #370 #915913

>>915884
Ну тебе все правильно сказали. Приоритет у -> выше, чем у приведения типов. Если хочешь сначала скастить, а потом обратиться - используй скобки. Алсо, у тебя получается лишний дереференс - звездочка берет значение по указателю и -> берет значение по указателю. Выбери что-то одно:
((type2 ∗) var1->ptr)->i = 25;
или
(∗(type2 ∗) var1->ptr).i = 25;
А правильнее вообще не лениться и сделать так:
type2 *something = var1->ptr;
something->i = 25;

Ответы915923915926

20 Янв, 21:16 #371 #915923

>>915913
Да я вообще не предполагал, что решение на столько простое, теперь ясно к чему он про приоритеты говорил.

> А правильнее вообще не лениться и сделать так:
Ну не знаю. Для меня этот код сложночитаем, когда как в первом варианте сразу понятно что к чему.

20 Янв, 21:20 #372 #915926

>>915913
>А правильнее вообще не лениться и сделать так
ну пиздец. в середине кода ещё так сделай.

sage 20 Янв, 23:23 #373 #915999

>>915907
Я тоже в последнее время злой к ньюфагам.

21 Янв, 16:35 #374 #916366

Котаны, такой вопрос. Пишу красивый CLI для своего приложения с богатым функционалом и хочу так как красиво как в git'е. Как этого можно добиться? Пока вижу три опции.

1. Руками на основе argc/argv разбираю строку.
2. Использую POSIX-совместимую getopt()
3. Использую расширенный вариант предыдущего функциионала getopt_long().

Хотелось бы узнать, что является best practicies/как сделать поыбстроми, минимизируя число зависимостей. Буст идёт нахуй. Не интересно.

Продублировал вопроси к тредик по плюсам.
>>916365

Ответы916369

21 Янв, 16:42 #375 #916369

>>916366
Использовать getopt_long нормально, но написать свой парсер, если хочется сделать что-то нестандартное - тоже вполне ок. А вот использовать исключительно однобуквенные ключи для приложения с богатым функционалом - это пиздец.

Ответы916371916419

21 Янв, 16:53 #376 #916371

>>916369
> использовать исключительно однобуквенные ключи для приложения с богатым функционалом - это пиздец.
В точку! В этом весь вопрос. Будет ещё немного конструктива? Попытался расковырять исходники git'а -- не зашло.

28 Кб, 189x418

29 Кб, 189x418

21 Янв, 17:59 #377 #916403

>>915781
Эй, нуклярщик, поясни как в этой либе делать вертикальные контейнеры с чем-либо.

Вот допустим один из его примеров. На сколько я понимаю это просто горизонтальные боксы в которые напиханы элементы. Верно? А как добавить во всё это дело вертикальный бокс? Как на второй пикче.

Алсо, нукляр крут, у меня тоже встал.

Ответы916416

21 Янв, 18:35 #378 #916416

>>916403
хуй знает, я в ней еще не ковырялся

21 Янв, 18:37 #379 #916419

>>916369
>однобуквенные ключи
вот это как раз и заебись
>с богатым функционалом
а вот это хуево

Ответы916432

21 Янв, 19:04 #380 #916432

>>916419
Двачую. Нагородят ключей типа --set_anus_op_huy и ебутся потом в жеппы. Вот топ парсер - http://git.suckless.org/st/tree/arg.h

Ответы916435918450

sage 21 Янв, 19:10 #381 #916435

>>916432
> suckless
Несмотря на название, софт с этого сайта почему-то сосет больше, чем какой бы то ни было другой.

Ответы916436916442

21 Янв, 19:13 #382 #916436

>>916435
ТЫ ОХУЕЛ?

Suckless — боги.

Ответы916498918451

21 Янв, 19:26 #383 #916442

>>916435
Пользуюсь dwm, st, dmenu и чувствую себя прекрасно.
>софт с этого сайта почему-то сосет больше
Аргументы?

Ответы916500

21 Янв, 20:59 #384 #916498

>>916436
кучка реверсивных партизан
тк альтернатива альтернативе

21 Янв, 21:03 #385 #916500

>>916442
>Пользуюсь dwm, st, dmenu
Единственное что более-менее нужно. (И то, dwm не нужен, есть i3)
Остальное ненужно.

Ответы916503

21 Янв, 21:10 #386 #916503

>>916500
> (И то, dwm не нужен, есть i3)
i3 — жирное, уродливое говно.
dwm — няшный, небольшой WM в 2000 строк кода поставляемый одним .c файлом.

мимо

Ответы916515

21 Янв, 21:34 #387 #916515

>>916503
>i3 — жирное, уродливое говно.
Жирное уродливое говно это только ты.

21 Янв, 22:40 #388 #916565

Хочу запилить генератор ассемблерного мусора на си, чтобы этот мусор был похож на реальную программу. То есть если где-то выполняется cmp, то за ним должен быть переход, или если выполняется push, то где-то должен быть pop, при этом надо следить за тем, чтобы исходные значения регистров не нарушились. Как это можно реализовать? Использовать графы? Как именно их использовать? За один раз помещать на граф одну инструкцию, потом делать проход по ветви, и если встретилось где-то, например, push, то на конце ветки вставить pop?

Ответы916690

22 Янв, 01:20 #389 #916690

>>916565
Самый простой способ - создаешь рандомные инструкции куском от 5 до 20 комманд которые делают что угодно но в конце возвращают регистры в исходное состояние.

22 Янв, 02:25 #390 #916714

Сап. Пилю бинарный формат. У меня есть куча ключей, на которые мне нужно впоследствии много раз ссылаться. Подумал, что удобнее всего их будет просто проиндексировать и записать в определенном порядке, а при считывании восстанавливать значения индексов просто по порядку. Но что мне не особо понятно, так это то, в каком виде лучше всего записывать эти самые ссылки, т.е. номера индексов далее по "тексту". Есть идеи? Интересует самый компактный вариант.

Ответы916719

22 Янв, 02:29 #391 #916719

>>916714
> самый компактный вариант
Пожми индексы хаффманом. И вообще уйди от байто-ориентировнаного формата на битовые потоки.

Ответы916722

22 Янв, 02:35 #392 #916722

>>916719
>уйди от байто-ориентировнаного формата на битовые потоки
А чем оно лучше?

Ответы916724

22 Янв, 02:36 #393 #916724

>>916722
Ну тебя же компактность интересует, лол.

Ответы916725

22 Янв, 02:38 #394 #916725

>>916724
Не вижу связи. Это ж просто смена представления данных, ничего кардинально не меняется. Или я чего-то не понимаю?

22 Янв, 11:44 #395 #916820

Если не освобождать память через free(), то она освободится сама при закрытии программы?

Ответы916828

22 Янв, 12:03 #396 #916828

>>916820
Да. Стандарт гарантирует, что память освободится и файлы закроются, если программа будет завершена через return в main или exit (т.е., не свалится по сегфолту, например), а большинство многозадачных ОС гарантируют очистку в остальных случаях.

Ответы916831916854916907

22 Янв, 12:06 #397 #916831

>>916828
чувак
ты серьезно готов отвечать на такие вопросы? зачем тебе это надо

Ответы916851

22 Янв, 12:30 #398 #916851

>>916831
забей, это местный сумасшедший. или молодой залуп не нюхавший.

sage 22 Янв, 12:33 #399 #916854

>>916828
>Стандарт гарантирует, что память освободится и файлы закроются
Ты ебанутый?

Ответы916907

22 Янв, 13:13 #400 #916907

>>916854
>Ты ебанутый?
>>916828
>Стандарт гарантирует, что память освободится и файлы закроются
Зачем ты спрашиваешь-то?

22 Янв, 17:13 #401 #917131

Для чего используют конвенции вызовов __cdecl или __stdcall? Какой толк от их явного выбора и предпочтения одного другому?

Ответы917134917135

22 Янв, 17:22 #402 #917134

>>917131
__stdcall позволяет избежать бесконечных add esp, N после вызова функции - функция сама за собой подчистит. К тому же, если ты случайно вызваал функцию с неверным числом аргументов, вероятность того, что программа свалится сразу, а не в продакшене, с __stdcall гораздо больше. В то же время какой-нибудь printf нельзя сделать __stdcall, потому что число аргументов неизвестно на этапе компиляции, и компилятор не может сгенерить retn XX, не зная заранее, сколько байт нужно вытолкнуть из стека.

Если не знаешь, что выбрать - не выбирай ничего. Если у тебя колбеки для чужой функции, то конвенция должна соответствовать тому, что ожидает функци (например, в колбеках для винды тебе придется прописывать __stdcall). Для кучи мелких функций с 1-2 аргументами на x86 есть смысл задуматься о __fastcall (под контролем профайлера, иначе можно только хуже сделать).

sage 22 Янв, 17:31 #403 #917135

>>917131
Забыл про явный выбор. Если у тебя библиотечный код, имеет смысл прописать конвенцию в прототипах только не напрямую, конечно же, а зафайнить ее как какой-нибудь MYLIBCALL, чтобы при случае было легко поменять или выбросить. Иначе может случиться так, что в использующей библиотеку программе компилятору сказано делать __stdcall по умолчанию, в прототипах твоей либы нухуя, и компилятор вызывает библиотечный код как __stdcall, в то время как ты свою библиотеку собрал с __cdecl. По идее, об этой проблеме тебе расскажет линкер, но возможны и менее приятные варианты.

24 Янв, 00:17 #404 #918394

Аноны, а в sublime text есть какой-нибудь плагин, который бы мог находить и показывать объявление переменной ну хотя бы в пределах функции/файла? Чтоб как в вьюжал студио прям. Максимум нашел пока только те, что повзоляют открыть определение функции, макроса или типа данных. А вот мне б что б переменную...

Ответы918497

24 Янв, 01:49 #405 #918450

>>916432
Ох, я ебал. Это как метапрограммирование на макросах и файлах.

24 Янв, 01:49 #406 #918451

>>916436
Удваеваю, нах!

24 Янв, 09:17 #407 #918497

>>918394
Ctrl+;
Плагины не требуются.
Также есть плагин SublimeIntel, который индексирует файлы и позволяет перемещаться между определениями функций в файлах.
Также есть специальный плагин для clang.

Ответы918811

24 Янв, 20:41 #408 #918811

>>918497
SublimeCodeIntel ты хотел сказать? Он не поддерживает c/c++. Я видел какой-то CTags, если я правильно понял, он то же самое должен делать. Но он только ошибками сыплет с какими-то символами и ничего не делает. Алсо, всякие плагины для автодополнений тоже работает не осне -- ставишь точку, и он предлагает всё, что нашел.
Другие какие-нибудь не менее удобные и настраиваемые редакторы с такой фичей есть или так только полноценные ide умеют?

Ответы918815918818918895

24 Янв, 20:53 #409 #918815

>>918811
>Sublime
для пидоров, нахуй тебе ide на твой хеловорд?

Ответы918816

24 Янв, 20:54 #410 #918816

>>918815
>для пидоров
Что не для пидоров?
>нахуй тебе ide на твой хеловорд?
Чтобы быстро найти в мейне, где объявлена переменная "a" и какой у неё тип.

Ответы918820918821

sage 24 Янв, 20:58 #411 #918818

>>918811
Выбери что-то одно. Или быстрый редактор, или тормозной IDE. В принципе той навигации, которая есть в саблайме, вполне хватает.

Ответы918832

24 Янв, 20:59 #412 #918820

>>918816
>Что не для пидоров?
NotePad++/VIM
>Чтобы быстро найти в мейне, где объявлена переменная "a" и какой у неё тип.
ты правда не можешь запомнить свои переменные и их типы? погромирование явно не для тебя

Ответы918832

sage 24 Янв, 21:00 #413 #918821

>>918816
> Чтобы быстро найти в мейне, где объявлена переменная "a"
Переменная a должа быть объявлена в мейне. Если ты ее не видишь, и глобальных переменных у тебя больше, чем ты можешь запомнить, тебе стоит почитать что-нибудь про правильный подход к говнокодингу.

Ответы918824

24 Янв, 21:01 #414 #918824

>>918821
двачну, анон паходу матанопитух с кучей переменных a, b, j, i

24 Янв, 21:16 #415 #918832

>>918818
>вполне хватает
Когда в чужом коде копаешься, гораздо легче разбираться, когда есть возможность в два клика найти место объявления переменной и т.д.
>>918820
>NotePad++/VIM
С каких пор они так умеют? Алсо, чем они лучше саблайма?

Ответы918833918835

24 Янв, 21:18 #416 #918833

>>918832
>чем они лучше саблайма
сравнивать саблайм с vim это как жопу с пальцем
>Когда в чужом коде копаешься
ясно, laba2.c

Ответы918848918895

sage 24 Янв, 21:22 #417 #918835

>>918832
>Когда в чужом коде копаешься
Никому не рассказывай, но есть такая программа называется Source Insight. Лучше нее еще ничего не придумали. И даже то, что она древняя, как говно мамонта, даже ее откровенно отвратительный интерфейс не умаляет ее достоинств.

Ответы918839918840918848918849918927

24 Янв, 21:30 #418 #918839

>>918835
>Source Insight
всего $239

24 Янв, 21:31 #419 #918840

>>918835
з.ы. где своровать можно?

24 Янв, 21:47 #420 #918848

>>918833
>сравнивать саблайм с vim это как жопу с пальцем
Сказанул как в лужу пёрнул. Давай конкретику.
>>918835
>Source Insight
Не слышал. Спасибо, гляну.

Ответы918849

24 Янв, 21:52 #421 #918849

>>918848
>Давай конкретику
дал, проверяй
>>918835
>Source Insight
своровал и поставил, говно какоето, прыжки по объявлениям аля Eclips CDT не более

24 Янв, 23:08 #422 #918895

>>918811
> SublimeCodeIntel ты хотел сказать? Он не поддерживает c/c++
Ну у меня в проекте смешаны исходники на пдюсах и джаве. Отлично работает, это же просто поиск.
CTags не пробовал, он не нужен.
"Ctrl+;", "Ctrl+R" и Ctrl+F/Ctrl+D достаточно для навигации по одному файлу.
>>918833
>сравнивать саблайм с vim это как жопу с пальцем
Да, причём vim - это жопа, а Саблайм - это твои десять пальцев.

24 Янв, 23:55 #423 #918927

>>918835
угу
правда щас в последней студии можно просто открыть папку в которой исходники (любые, пофиг есть или нет проект там, пофиг чем они компилятся), она их проиндексирует во время открытия, и можно будет сразу осуществлять навигацию по ним
такие дела

Ответы918947

25 Янв, 00:22 #424 #918947

>>918927
Попробуй открыть исходники линукса в студии, запусти на фоне его сборку в виртуалке, и попробуй параллельно "осуществлять навигацию". А потом с этой хуйней сравни. Это - не для хелловорлдов, оно нужно, чтобы в разумное время и без жопной боли разобраться в огромном проекте на C/C++.
Алсо, в студии разве запилили поддержку реальных поддиректорий в проекте? Или оно по-прежнему по умолчанию валит все в одну кучу, а решается это только виртуальными директориями и только вручную?

Ответы918987

25 Янв, 01:49 #425 #918987

>>918949
вымой рот
>>918947
в vs 2017 при открытии папки произойдет парсинг исходников, что там лежат, включая подпапки, причем происходит это относительно быстро, положим исходники mfc/atl меньше минуты индексируются на моей некромашине
в vs 2015 было не очень удобно когда нужно было быстро просмотреть какие-то исходники тк приходилось создавать пустой проект и скармливать ему путь до сорцов, в следующей версии это все автоматом делается

Ответы918995

25 Янв, 02:32 #426 #918995

>>918987
Спидор, я ебака тваей спермохлебнай мамашки.
(Автор этого поста был предупрежден.)

Ответы919029

25 Янв, 05:46 #427 #919029

>>918949
>>918995
irl также общаешься?

25 Янв, 15:10 #428 #919257

Перед прочтением Hacking: The Art of Exploitation что я должен знать и уметь? АСМ нужен?

Ответы919402

25 Янв, 17:51 #429 #919321

сисюны, есть годный редактор под андроидный планшет?

Ответы919405

25 Янв, 20:03 #430 #919402

>>919257
Хассль нужно знать обязательно.

25 Янв, 20:04 #431 #919405

>>919321
Да. Гугли ZalupoEd

Ответы919670

26 Янв, 09:28 #432 #919670

>>919405
нагуглил тебе защеку

26 Янв, 21:30 #433 #920042

Какой последний стандарт и где почитать про изменения?

Ответы920099

26 Янв, 23:54 #434 #920099

>>920042
С11 последний, С2x ожидается. Изменения можно посмотреть в википедии, или в какой-нибудь справке от Pelles C.

Ответы920103

27 Янв, 00:04 #435 #920103

>>920099
>С2x ожидается
там опять добавят что-нибудь никому нахуй ненужное?

Ответы920108

27 Янв, 00:20 #436 #920108

>>920103
stdatomic и stdalign - это никому ненужное? В C2x вон замыкания обещали. А вообще сам посмотри: http://www.open-std.org/jtc1/sc22/wg14/www/docs/?C=M;O=D

Ответы920143

sage sage 27 Янв, 00:22 #437 #920109

Точнее даже так лучше: http://www.open-std.org/jtc1/sc22/wg14/www/wg14_document_log.htm

Аноним 27 Янв, 00:38 #438 #920115

>>909592
1 && 2 будет равно 1
0001
0010
=0

Ну ну блять. А потом такие животины на собеседования приходят.

Ответы920119

27 Янв, 00:42 #439 #920119

>>920115
Толсто.
> А потом такие животины на собеседования приходят.

27 Янв, 01:33 #440 #920143

>>920108
я думал ты скажешь про static_asssert. в прочем и он заменяется почти.

а остальное да, нинужно. треды вообще, отживают своё, удобней пару процессов держать. ну хер его знает.

28 Янв, 09:41 #441 #920707

>>920705
Какой-то скриптун-говнокодер порвался.
Даже не интересно какой именно.

Ответы920810

28 Янв, 14:48 #442 #920810

>>920707
>мне настолько похуй, что я не могу молчать
как сосётся, байтоблядь?

Ответы920817

28 Янв, 14:58 #443 #920817

>>920810
Скриптомакака, вот даже совсем не интересно почему именно ты порвался.

Ответы920820

28 Янв, 15:04 #444 #920820

>>920817
кек найс бубалех байтохуйла

29 Янв, 20:13 #445 #921651

Как на сишечке писать гуй, что для этого надо? Как рисовать графику?

Ответы921844922256

30 Янв, 06:35 #446 #921844

>>921651
Qt например.

Ответы921873

30 Янв, 07:12 #447 #921847

любопытную хуйню прочёл http://demin.ws/blog/russian/2009/03/01/unit-testing-in-c/

но я уже своей хуйни понаписал

30 Янв, 08:32 #448 #921857

>>899366
Основная разница в механизме хранения в памяти. Массивы всегда хранятся последовательно и занимают один несегментированный блок памяти. Оттого и доступ к любому элементу мы имеем по индексу. Связанный список - структура искуственная. Такой нет в спецификации языка.

30 Янв, 09:44 #449 #921873

>>921844
Qt слишком жирная, я бы хотел писать крошечные программулины с простеньким интерфейсом и холстом, на который можно выводить графику. Желательно еще чтоб прогалось попроще.

Ответы921891921894922024

30 Янв, 10:24 #450 #921891

>>921873
Если под Мастдай, то MFC или .NET, хуле ты.

Ответы921933

30 Янв, 10:25 #451 #921894

>>921873
Классические GTK+ и SDL.

30 Янв, 12:42 #452 #921933

>>921891
А gdi + win32 api сейчас уже не в моде?

Ответы922013

30 Янв, 14:52 #453 #922013

>>921933
>win32 api
но вот до сих пор не понимаю, нахуя? зачем пользоваться апи системы, а не писать через библиотеки? с таким же успехом можно заниматься траханьем с линупсом напрямую - но этого никто не делает. потому что: зачем прибивать свой код к полу гвоздями.

не, я раньше писал на винапи, у меня была иллюзия что это будет типо БЫСТРО работать.

30 Янв, 15:09 #454 #922024

>>921873
>Qt слишком жирная
+5 мегабайт к твоему хэлоуворду. наркоман, уходи.

Ответы922051

sage 30 Янв, 16:04 #455 #922051

>>922024
>+5 мегабайт к твоему хэлоуворду

ебанный малолетние дегенераты, я могу написать хелловорлд в 1 кбайт, а полный аналог блокнота в 20 кбайт. А потом приходит школьник с хелловорлдом в 5 мегабайт и что-то там кукарекает

Ответы922105922110

30 Янв, 17:15 #456 #922105

>>922051
вот прикрутишь к ниму кьют, тогда и посмотрим на общий размер, уеба.

30 Янв, 17:18 #457 #922110

>>922051
>аналог блокнота в 20 кбайт.
пруф или пиздабол. только не говори, что для твоей поеботы нужен .нет в плторагига, уебок малолетний.

Ответы922687922691

30 Янв, 18:53 #458 #922256

>>921651
Специально для тебя недавно вышел nuklear

30 Янв, 20:26 #459 #922373

Насколько корректно сравнение типа
double d = 0;
if(d==0)....
и
float f = 0;
if(f==0)....
Именно с нулем. Или нужно и здесь использовать функцию типа fabs() b сравнение с epsilon?

Ответы922410

sage 30 Янв, 20:49 #460 #922410

>>922373
Если это общий случай, то нет, некорректно, и нужно использовать сравнение с эпсилон. Если ты хочешь проверить, осталось ли в переменной какое-то записанное тобой же значение, например:
if (d == 0.0) { // Еще не считали что-то сложное
d = посчитать();
}
или другие подобные случаи с простыми константами и ты знаешь, что эти константы тривиально кодируются, без зависимостей от rounding mode и прочей херни, тогда сравнение с константой допустимо. Но такое бывает редко.

30 Янв, 23:59 #461 #922687

>>922110
https://www.gnu.org/fun/jokes/ed-msg.html

31 Янв, 00:04 #462 #922691

>>922110
Виндовый блокнот в XP весит 70к, написан на сишечке. Примерно половину файла занимают иконки. А простейший блокнот (загрузить, отредактировать, сохранить) будет весить не 20к, а всего 2к, даже если специально не пытаться уменьшать размер файла.

Ответы922724923086

31 Янв, 00:56 #463 #922724

>>922691
> А простейший блокнот (загрузить, отредактировать, сохранить)
Окошко EDIT и меню из 3 пунктов не является полным аналогом.

31 Янв, 16:51 #464 #923086

>>922691
>занимают иконки
и сколько иконок в блокноте?

Ответы923293

16 Кб, 283x622

31 Янв, 18:46 #465 #923217

Погромач, помоги вкатывальщику: пытаюсь освоить хэш-таблицы с линкед листами. Так вот, при создании массива индексов, как я понимаю, память не всем выделяется (пикрил). В чем ошибка? Объявляю как node *hashtable[SIZE] (SIZE = 26). Надеюсь, понятно объяснил.

Ответы923293

31 Янв, 19:12 #466 #923269

Господа, как системнонезависимо программировать сокеты?

Ответы923273923293

31 Янв, 19:17 #467 #923273

>>923269
http://www.dmoz.org/Adult/Recreation/Collecting/

31 Янв, 19:46 #468 #923293

>>923086
> и сколько иконок в блокноте?
Несколько. Пикрелейтед.

>>923217
Ты объявил массив указателей на node. Не инициализировал. В результате у тебя в массиве тот мусор, который был в стеке. В хэш-таблицах на линкед-листах память заранее выделять не нужно (кроме buckets, вот этого твоего массива). Инициализируй указатели в массиве нулями, а выделять node и добавлять его в нужный bucket будешь, когда он тебе понадобится.

>>923269
> как системнонезависимо программировать сокеты?
Никак. Для простых блокирующих сокетов между Winsock и линуксами различия минимальные - WSAStartup/Cleanup, closesocket вместо close, имена .h-файлов другие, ну и в винде еще хэндл unsigned. В сложных приложениях ты все равно будешь по хардкору пользоваться системными механизмами типа IOCP или epoll(). Поэтому пиши себе няшную обертку под задачу и не пытайся совместить несовместимое.

Ответы923295923393

11 Кб, 194x242

sage 31 Янв, 19:47 #469 #923295

>>923293
Картинку забыл.

31 Янв, 21:20 #470 #923393

>>923293
>Инициализируй указатели в массиве нулями
Спасибо, помогло, но я все равно немного не понимаю.
Buckets пустые указатели в самом начале, и при добавлении нового node нужно сделать ведь, чтобы они указывали на первый node. Но доступа к указателю внутри изначального bucket, получается, нет? Или я туплю?
Пока сделал, чтобы последний добавленный нод был в роли первого указателя, но это неправильно, как мне кажется.

Ответы923451

31 Янв, 22:10 #471 #923446

Как скипнуть ровно k символов из stdin? Тупо прочитать из ввода, но не сохранять. Не хочу много раз getchar вызывать.

Ответы923451923534923543

sage 31 Янв, 22:16 #472 #923451

>>923393
Не понял вопроса. Вот твоя вставка:
void insert_node(node ∗node) {
size_t bucket = hash(node->key);
if (buckets[bucket]) {
buckets[bucket]->next = node;
} else {
bucktes[bucket] = node;
}
}

>>923446
fread()?

Ответы923459

31 Янв, 22:22 #473 #923459

>>923451
>fread
Какие параметры ему передавать? Я даже память не хочу выделять для этих символов.

Ответы923471

sage 31 Янв, 22:29 #474 #923471

>>923459
Тебе жалко? Так дохуя скипать нужно? Выдели пару килобайт на стеке, да и все. Ну или можешь scanf выебать на тему чего-то типа %*42с, но динамически количество указать нельзя вроде.

Ответы923483

31 Янв, 22:37 #475 #923483

>>923471
Мне эту функцию по 1000 раз вызывать. Не хочу тратить время на аллокацию. fread хоть быстрее чем в цикле getchar?

31 Янв, 23:50 #476 #923534

>>923446
никак.

31 Янв, 23:53 #477 #923536

Есть два хедера и соответствующие им c-файлы. В первом хедере объявлена структура сетевой ноды, во втором - структура стека. Можно ли одновременно использовать обе этих структуры в каждом c-файле? Что-то у меня пиздец сколько ошибок.

Ответы923538923547

31 Янв, 23:56 #478 #923538

>>923536
ну так инклюдъ оба хедера в каждый .c. структуры не могут быть внешними, только функции и переменные.

Ответы923541

31 Янв, 23:59 #479 #923541

>>923538
Я не понимаю, что здесь не так. Инклужу хедеры друг в друге.

https://paste.ofcode.org/ghJngUUPhsRFLu5zGnVKwR
https://paste.ofcode.org/URnd2e642xgCZ2Fn8tySVP

Ответы923558

31 Янв, 23:59 #480 #923543

>>923446
Поебись с
fread(х, у, й, stdin);

01 Фев, 00:01 #481 #923547

>>923536
В с файлах инклюдишь оба хедера. В хедерах forward declaration нужной хуйни без инклюдов. Может не получится обойтись с помощью forward declaration - тогда нужно что-то думать.

01 Фев, 00:10 #482 #923558

>>923541
щас щас, опохмелюсь. не врубился, зачем во втором инклюдить первый?

Ответы923560

01 Фев, 00:12 #483 #923560

>>923558
>зачем во втором инклюдить первый?

У меня реализован стек, в котором я должен хранить структуры Node, определенные в другом хедере. В этом другом хедере определены функции, в которых используется стек. Такие вот перекрестные зависимости.

Ответы923562923581

01 Фев, 00:15 #484 #923562

>>923560
ну я вижу. может ты перепутал перепутал инклюды местами?

Ответы923566

21 Кб, 916x530

01 Фев, 00:22 #485 #923566

>>923562
Да нет, вроде.

Ответы923570

01 Фев, 00:27 #486 #923570

>>923566
ну, Node не объявлен. харе мне мозги ебать. короче, передаю тебя на попячительство местному добродетелью. а мне нужно трубы залить и посмотреть фильм трамбо. и отписать в /mov/

Ответы923572

01 Фев, 00:29 #487 #923572

>>923570
>ну, Node не объявлен
Аха, но я же подключаю хедер, где он объявлен.

>харе мне мозги ебать
Ну ладно. Но лучше бы ты феном вмазывался.

Ответы923577

01 Фев, 00:45 #488 #923577

>>923572
Зачем ты в хедере где объявлена нода инклюдишь "stack.h"?

Ответы923579

01 Фев, 00:48 #489 #923579

>>923577
В этом хедере объявлены функции, в которых требуется стек.

Ответы923582

sage 01 Фев, 00:51 #490 #923581

>>923560
Где в хедере ты с нодой видишь упоминание стека? Нет стека, нет зависимостей. В реализации будешь инклудить, если нужен.

01 Фев, 00:51 #491 #923582

>>923579
В хедер со стаком инклюдишь ноду. В хедере ноды вместо инкда стека пишешь typedef struct stack; В с файле ноды инклюдишь хедер стака. Если не взлетит то ты соснул (перемещай декларацию ноды в стек).

01 Фев, 15:34 #492 #923884

Аноны, хочется попилить чего-нибудь, использующего gtk3. Посмотрел бегло гномопроекты - они только автотулз используют, а у меня на это не стоит, больше нравится cmake.
Попробовал перевести наутилус (единственно чем я пользуюсь ежедневно из гномостека на C) на него, убив на настройку сборки неделю - всем похуй, послали лесом.
Дайте какой-нибудь совет что ли или направление, кроме как нахуй.

Ответы923901

01 Фев, 15:37 #493 #923887

Когда я удаляю ноду в бинарном дереве при помощи free, надо ли явно обнулять указатель? Вот так:

free(parent->left);
parent->left = NULL;

Ответы923889

01 Фев, 15:39 #494 #923889

>>923887
>надо ли явно обнулять указатель?
Да

01 Фев, 16:02 #495 #923901

>>923884
гтк для особо одаренных, юзай кьют

Ответы923971

Имя 01 Фев, 17:57 #496 #923967

Что означает *&
Встретил такое. Вроде звёздочка относится к указателям, загогулина разыменовывает его. А вот от этой комбинации у меня мозг порвало. И не гуглится никак.

Ответы923969924285

01 Фев, 18:01 #497 #923969

>>923967
Наверно для передачи указателя по ссылке. Чтобы внутри функции его можно было редактировать.

Ответы924007

01 Фев, 18:07 #498 #923971

>>923901
>кьют
Давно туда поддержку C завезли? Нет, и не будет.

Ответы924080

01 Фев, 18:50 #499 #924007

>>923969
Это плюсы, а не си.
В плюсах у тебя может быть два вида сущностей, ссылающихся на объект: указатель или ссылка:
Type ptr = &obj;
Type& ref = obj;

И в сях, и в плюсах указатель на объкт типа принадлежит к своему отдельному типу указателей на тип (не знаю как это объяснить менее тавтологично).
typedef Type TypePtr; // указатели это тоже тип

поэтому штукенцию вида:
Type*& func();
можно понимать и записывать так:
TypePtr& func();

Ответы924008

01 Фев, 18:52 #500 #924008

>>924007
Естественно, звёздочки проебались:
Type＊ ptr = &obj;
Type& ref = obj;
typedef Type＊ TypePtr;

Ответы924035

01 Фев, 19:17 #501 #924035

>>924008
У меня там указывает на поле в структуре (объекте).
В треде по всму выкладывал реверснутые сырцы, у меня там так получилось, вот и не уверен, верно ли это:
http://pastebin.com/exhumh83

43 Кб, 943x623

01 Фев, 20:00 #502 #924080

>>923971
А что это у меня?

Ответы924090

sage 01 Фев, 20:23 #503 #924090

>>924080
А это, как ты можешь сам прочитать, Non-Qt Application. Ты можешь писать ее в QtCreator, но не можешь использовать кутэшный гуй из нее. Вопрос был про гуй.

01 Фев, 20:30 #504 #924100

Где скачать 11ый стандарт?

Ответы924106

01 Фев, 20:35 #505 #924106

>>924100
Бесплатный драфт из шапки ничем, кроме титульника, от стандарта не отличается. Но стандарт на торрентах вроде появился уже.

Ответы924107

01 Фев, 20:36 #506 #924107

>>924106
А какой смысл было его прятать?

ПЕРЕКАТ # OP 01 Фев, 20:50 #507 #924127

>>924123 (OP)
>>924123 (OP)
>>924123 (OP)
>>924123 (OP)
>>924123 (OP)

01 Фев, 23:54 #508 #924285

>>923967
> Вроде звёздочка относится к указателям, загогулина разыменовывает его.
наоборот

08 Фев, 22:33 #509 #929108

Может кто пояснить что это за нотация с двоеточиями внизу класса?
https://paste.ubuntu.com/23956060/

Никогда такого не видел.

Ответы929201

09 Фев, 00:32 #510 #929201

>>929108
Битовые поля (bitfields). Эти члены структуры фактически хранятся в виде 5, 6, 6 и 12 бит (т.е., все вместе влезают в 32-битный инт). Такое делают для экономии памяти за счет раздувания кода битовыми операциями (магически получить биты из памяти нельзя, требуется 2-3 инструкции для маскирования и сдвигов). Еще так делают в embedded для всяких хардварных регистров, чтобы вместо (*(PLL0_REG0) >> FREQ_BIT_START) & FREQ_MASK, делать более читаемое PLL0->freq. Но способ расположения и выравнивание битов в битфилде зависят от компилятора, поэтому такое можно делать только если тебе не важен способ расположения битов (первый случай) или если у тебя одна конкретная платформа с конкретным компилятором, и ты знаешь, как этот компилятор собирает структуру (второй случай).

Тред утонул или удален.
Это копия, сохраненная 14 марта 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion