• Как создать консольный терминал на C++?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    Ладно, @grigorkh, ты меня рассмешил.
    Сначала нужно научиться писать хоть что-то работающее. Вот
    так вы можете создать свою первую программу.
    Далее возьмите книжку по C++, Эккель подойдет. Читайте, напишите хотя бы 5-10 упражнений на строки, ввод-вывод, циклы, if.
    Теперь вы готовы приступить к выполнению вашего задания.
    В цикле (а этому моменту вы уже знаете что это такое) вы считываете команды по одной до тех пор пока не введена команда exit.
    Пусть каждая команда это строка, первое слово в которой - имя действия, остальные - аргументы. Научитесь разбивать строчку на слова. Дальше разбираете какая команда введена и формируете требуемый ответ. В итоге получится что-то такое:
    #include <iostream>
    #include <string>
    
    main ()
    {
    	while (true) 
    	{
    		std::string command;
    		std::getline (std::cin, command); 
    
    		if (command = "exit")
    			break;
    
    		std::vector<std::string> words = разбить_на_слова(command)
    
    		if (words[0] == "help")
    		{
    			std::cout << "plus arg1 arg2\nminus arg1 arg2"
    		}
    
    		if (words[0] == "plus")
    		{
    			std::cout << строка_в_число(words[1]) + строка_в_число(words[2]);
    		}
    
    		// дальше аналогично(или не очень) разобрать остальные команды
    	}
    
      return 0;
    }


    У такого кода будет много недостатков, например новые команды не очень удобно добавлять. Да и 2 + 2 * 2 ему не понять. Но до этого еще очень далеко.

    И научитесь пользоваться гуглом. Там есть ответы на 99.99% вопросов которые у вас возникнут в ближайшее несколько месяцев изучения программирования.
    Ответ написан
    2 комментария
  • Способы решения проблемы indoor навигации в iOS?

    hybridcattt
    @hybridcattt
    Есть еще вариант по вайфай-точкам определять. Но тут сложнее, чем с iBeacon, да и вайфай тоже может быть выключен.
    Ответ написан
    2 комментария
  • Сохранение массива в файл и его чтение

    xanep
    @xanep
    FILE* fd = fopen("filename", "rb");  //ключ должен быть "rb" - чтение бинарных данных
    if (fd == NULL) 
        printf("Error opening file for reading");
    size_t result = fread(region_coordinates, 1, sizeof(region_coordinates), fd);
    if (result != sizeof(region_coordinates)) 
        printf("Error reading file"); //прочитали количество байт не равное размеру массива
    fclose(fd);
    
    FILE* fd = fopen("filename.bin", "wb");
    if (fd == NULL) 
        printf("Error opening file for writing");
    fwrite(region_coordinates, 1, sizeof(region_coordinates), fd);
    fclose(fd);
    
    Ответ написан
    1 комментарий
  • Сохранение массива в файл и его чтение

    @rozhik
    Если файл бинарный — то просто записываете
    fd = fopen( filename, "wb" ); write( fd, i_regions, sizeof( i_regions ) ); fclose( fd );
    , читаем — вместо врайт — рид.
    Если должен быть текстовый, редактируемый руками — тогда json, inifile или как удобнее редактировать (как по мне JSON best ).
    Ответ написан
    7 комментариев
  • Почему исчезли автор и его статья про возврат Windows при покупке компьютера?

    Boomburum
    @Boomburum
    Местный
    Автор был переведён в режим ReadOnly c формулировкой «Хабр — не жалобная книга». Пользователь негодует по поводу навязанной ОС в ноутбке, жалуется на конкретную компанию, но при этом пост заканчивается фразой «Кто знает как это всё составляется и подаётся, прошу помочь», то есть это не статья про success/fail-story решения проблемы, а наглядный пример статьи из расформированного хаба «Я негодую».
    Ответ написан
    3 комментария
  • Доступ к методу c++ объекта из c

    evgeny_eJ
    @evgeny_eJ
    Рекомендую посмотреть на реализацию JNIEnv в jni.h.
    Из Си его методы вызываются так: (*env)->callMethod(env, data)
    Из C++ вот так: env->callMethod(data)
    Ответ написан
    3 комментария
  • Программу не пропускают в AppStore?

    umpako
    @umpako
    Как вариант, можно подгружать значки на лету и кэшировать локально.
    До проверки и утверждения отдавать безопасные значки, после публикации отдавать уже нормальные (при этом предусмотреть возможность сброса кэша).
    Ответ написан
    1 комментарий
  • Программу не пропускают в AppStore?

    nochkin
    @nochkin
    Если приложение существует в App Store, то это не значит что оно прошло бы по всем требованием если бы его запустили туда сегодня. Часто такие приложения не могут обновиться, так как поменялись какие-то правила App Store.
    Думаю, что надо либо заменять значки на что-то другое (например, просто надписи), либо заниматься документами, которые просят в Apple.
    Ответ написан
    1 комментарий
  • Имеется 1000 jpeg-ов, надо в уголок каждого автоматически впечатать растром его имя файла. Как?

    @Eddy_Em
    Вот так, например, я вставлял имя файла на картинку:
    for file in *png; do NM=$(bsnm $file); convert $file -gravity Center -pointsize 40 -annotate +100+200 "$NM" ${NM}l.png; done
    
    Ответ написан
    Комментировать
  • Имеется 1000 jpeg-ов, надо в уголок каждого автоматически впечатать растром его имя файла. Как?

    Mezomish
    @Mezomish
    Сначала поэкспериментируйте с утилитой convert, входящей в состав уже упомянутого пакета ImageMagick. Как раз в соседнем топике с ее помощью впечатывали дату, посмотрите. После этого банальным циклом:

    for img in *.jpg; do convert $img [нужные опции и все такое прочее]; done
    
    Ответ написан
    Комментировать
  • Что делать, товарищи? (фото внутри)

    ArbuzzzzZ
    @ArbuzzzzZ Автор вопроса
    Спасибо всем за ответы!
    Просто не хотелось рисковать, а то у монитора в следующем году десятилетний юбилей :)
    Аккуратно срезал большую часть скотча нитью, потом аккуратно «сдвигающими» движениями пальцами убирал остатки (отлеплять страшно, потому что видно, как выгибается матрица и меняются цвета пикселей).
    Осталось только завтра очистить чем-нибудь от пятен.
    P.S.: Это будет брату уроком :)
    image
    Ответ написан
    2 комментария
  • Что делать, товарищи? (фото внутри)

    olis
    @olis
    Нитку взять капроновую, или леску, обернуть вокруг и тянуть за концы. Нитку можно ещё маслом смазать
    Но это только идея, я не пробовал, у меня нет такого фонарика.
    Ответ написан
    2 комментария
  • Как сделать шаг назад? Случайно сделал в папке проекта rm -rf *

    max_mara
    @max_mara
    Ээээ, вы тогда компьютер особо не мучайте, что-бы ничего лишнего с верху не записать случайно. Если есть возможность, то сделайте dd копию диска с которым работаете на новый носитель. Потом смонтируйте этот образ в read-only и там уже нужно искать какими программами можно восстанавливать нужные вам файлы.

    Можно потом будет открыть сделанную копию в любом адекватно читающем большие файлы редакторе и поискать нужные вам файлы. К примеру если это PHP файлы то искать вхождение <?php (или как у вас там) и восстанавливать их.
    Ответ написан
    5 комментариев
  • Что такое аудио с точки зрения программы

    Teivaz
    @Teivaz
    Если для простого цветного изображения каждая точка может быть представлена сочетанием трёх основных цветов (каждый из которых имеет разрядность от 0 до какого-то числа, 2^8, 2^12, не важно) то для аудио каждая выборка во времени определяется всего лишь одинм значением — амплитудой (которая, грубо говоря, тоже может принимать значения от 0 до какого-то максимального значения, 2^8, 2^16) Так что музыка в конечном счёте может быть представлена как одномерный массив, каждый элемент в котором соответствует определённому времени; в то время как изображение это трёхмерный массив, каждый элемент которого соответствует определённым координатам х, у.
    Можно разложить звук в базис синуса и косинуса применив преобразование Фурье. Тогда звук будет представлен как двумерный массив (амплитуда синуса, амплитуда косинуса) и каждая пара будет соответствовать определённой частоте, а не времени. Или можно разложить в немного другом виде — (амплитуда, фаз).
    Также есть другие представления музыки. Они могут быть разложены на разные звуковые дорожки, инструменты. Например, midi файлы, в которых, грубо говоря, хранится информация о том, в какой момент и как долго должна звучать определённая нота для определённого инструмента.
    Ответ написан
    1 комментарий
  • Что такое аудио с точки зрения программы

    Finesse
    @Finesse
    Согласно условию теоремы Котельникова, у аудиосигнала берётся дискретная выборка мгновенных значений параметра (с частотой дискретизации, наверно ты где-то слышал это словосочетание), которая представляет собой вектор (массив). На выходе по нему восстанавливается исходный неприрывный сигнал. В зависимости от формата этот массив сжимается разными способами.
    Ответ написан
    2 комментария
  • Как подружить Git и Dropbox?

    Более двух лет работаю с такой связкой (Linux). Никаких нареканий.
    Ответ написан
    Комментировать
  • Что почитать для поднятия духа?

    @gromozeka1980
    Понедельник начинается в субботу :)
    Ответ написан
    2 комментария
  • Задача, прошу review решения

    mejedi
    @mejedi
    Есть недочеты как в части знания и применения идиом C++, так и в скиле системного программирования.

    Базовый класс InterthreadObject — фе. В данном случае правильно использовать агрегацию. Вместо Enter/LeaveCriticalSection использовать класс lock a-la boost scoped_lock. Что на счет копирования/присваивания таких объектов?

    StopperCondition — а зачем там вобще синхронизация? (Здесь соискатель может начинать рассказывать про volatile, барьеры и тд).

    InterthreadRequestQueue перевести на умные указатели или обосновать почему они здесь не нужны. Не использовать new[] для выделения буфера под хэндлы. Сами хэндлы сделать объектом для автоматического закрытия в деструкторе.

    Возможно им не понравился printf. Лично у меня вызывает неприятие getc(cin) в конце main. Возможно, ожидается обработка исключений раз уж GetRequest/StopRequest старательно объявлены как no-throw.

    Consumer thread будет находиться в состоянии активного ожидания при исчерпании очереди. Более того несколько консъюмеров будут мешать друг другу и продьюсеру постоянно борясь за одну критическую секцию. Я бы оснастил очередь condition variable, это бы решило данную проблему.
    Ответ написан
    Комментировать