Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
Moriam

Мария Мальцева

Junior
  • 12
    вклад
  • 0
    вопросов
  • 15
    ответов
  • 33%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Вывод чисел с плавающей точкой на жк дисплей?

    Moriam
    Мария Мальцева @Moriam
    Junior
    Насколько я понимаю, проблема в том, что остаток выдается с плюс-минус единицей?
    Это из-за проблем с точностью в числах с плавающей точкой: например, число 7.9 может храниться в памяти компьютера как 7.9000000..., а может как 7.8999999
    Можно вместо простого присвоения округлить до ближайшего целого:
    otvet=round(ostatok*10.0);
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Что должен знать разработчик ПО?

    Moriam
    Мария Мальцева @Moriam
    Junior
    С (не С++, классы тяжеловаты для микроконтроллеров и по объему кода, и по быстродействию), схемотехника
    Знание ассемблера пригодится
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как изменить ошибку: "Индекс находится вне границы массива"?

    Moriam
    Мария Мальцева @Moriam
    Junior
    MATRIX = new int[j, k];
    MATRIX[j, k] = int.Parse(Console.ReadLine());

    В цикле Вы каждый раз выделяете в памяти новый массив [j, k] - соответственно, от 0 до (j - 1) и от 0 до (k - 1), а потом обращаетесь к ячейке [j, k].
    Нужно вынести создание массива за циклы
    Console.Write("Enter the numbers of matrix columns: ");
    COLUMN = int.Parse(Console.ReadLine());
    Console.Write("Enter the numbers of matrix rows: ");
    ROW = int.Parse(Console.ReadLine());
    MATRIX = new int[COLUMN, ROW];
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • Как остановить выполнение кода в pic16?

    Moriam
    Мария Мальцева @Moriam
    Junior
    В прерываниях нужно взводить флаги, а уже в основной программе их анализировать и делать задержку
    В самом простом случае:
    uint8_t FlagTextChanged;
    
    void interrupt isr(){
      if(INTF){
            ...
            Lcd_Write_String("Hello");
            FlagTextChanged = 1;
        }
        if(RBIF){
            if(RB7){
                ...
                Lcd_Write_String("RB7");
                FlagTextChanged = 1;
            }
            RBIF = 0;
        }
    }
    
    void main(){
      FlagTextChanged = 0;
      while (1){
        ...
        if (FlagTextChanged){
    	  FlagTextChanged = 0;
    	  __delay_ms(1000);  	
    	}
      }
    }
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Какой язык учить, чтобы программировать роботов?

    Moriam
    Мария Мальцева @Moriam
    Junior
    С и желательно хотя бы немного ассемблер.
    Классы в С++ требуют слишком много памяти и долго обрабатываются.
    Впрочем, есть среды разработки и для С++, и для Pascal, и для Basic, и для Python
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Сделать единицами четыре старших бита Си?

    Moriam
    Мария Мальцева @Moriam
    Junior
    С помощью побитового ИЛИ:
    если переменная x - char, то
    x = x | 0xF0;
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • Какое время жизни у переменной?

    Moriam
    Мария Мальцева @Moriam
    Junior
    В стеке отдельно резервируется место под возвращаемое функцией значение, и именно туда, а не по адресу переменной out, записывается результат через return. И, соответственно, дальше работа происходит именно по адресу с возращенным значением.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Почему цикл не выводи столбик?

    Moriam
    Мария Мальцева @Moriam
    Junior
    Не очень понятно, зачем при заполнении вообще вложенный цикл
    int main() 
    {
      int num, ar;
      int arr[10];
      for(num = 0; num < 10; num++) 
        arr[num] = num;
      num = 10;     //вроде как после цикла for значение счётчика не гарантируется 
      for(ar = 0; ar < num; ar++) 
        printf("%d\n", arr[ar]);
      return 0;
    }


    Или можно вообще объединить все в один цикл
    int main() 
    {
      int num;
      int arr[10];
      for(num = 0; num < 10; num++) 
      {
        arr[num] = num;
        printf("%d\n", arr[num]);
      }
      return 0;
    }
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как научиться изящно и грамотно программировать МК?

    Moriam
    Мария Мальцева @Moriam
    Junior
    Сначала моделировать структуру кода, продумать взаимодействие обособленных частей - "карандашом на бумажке" в виде блок-схем, независимых "виртуальных машин", и только после того, как будет понятна вся структура будущего устройства, начинать писать код. А дальше только практика; и есть код, написанный несколько месяцев назад, кажется ужасным, значит, вы на верном пути)
    Главное - не торопиться сразу кодить.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Нужен хороший и понятный онлайн/оффлайн симулятор простых электрических схем (аналоговых и цифровых)?

    Moriam
    Мария Мальцева @Moriam
    Junior
    Помимо вышеперечисленного, есть наглядный симулятор everycircuit.com
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Почему в C++ нет оператора "^^"?

    Moriam
    Мария Мальцева @Moriam
    Junior
    Вопрос - а что бы этот оператор означал? "Не равно" - так на это есть "!="
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как зажечь диод на STM32?

    Moriam
    Мария Мальцева @Moriam
    Junior
    В среде iar ваш код работает, и светодиод на C9 зажигается.
    Насчёт кода - напишите всё-таки в конце бесконечный цикл - while(1) {} - чтобы контроллер не завершал свою работу
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Скажите пожалуйста, где ошибка? Задание звучит так: "Получить все простые делители числа"?

    Moriam
    Мария Мальцева @Moriam
    Junior
    Ошибка - что count не очищаете для перед циклом с k; ну и k, как сказали выше, нужно начинать с 2, так как любое число делится на 1.

    Ещё i можно начинать с 2 и до (n/2) - поскольку делителей дальше не будет
    Ну и k, соответственно, с 2 до (i/2)
    var 
    	n,i,k: integer;
    	flagSimple: boolean;
    begin
    	writeln('Введите натуральное число: ');
    	readln(n);
    	for i:=2 to (n/2) do 
    	begin
    		if n mod i = 0 then 
    		begin
    			flagSimple := true;		//считаем пока, что i - простое (ну или count := 0, если использовать число)
    			for k:=2 to (i/2) do
    				if (i mod k = 0) then
    				begin
    					flagSimple := false;
    					break;		//выходим из цикла for для k, так как обнаружили, что i - не простое
    				end;
    			if (flagSimple = true) then
    				writeln(i, ' ');
    		end;
    	end;
    						
    end.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Вопрос не актуален. Как продумать свою программу и наконец начать писать код?

    Moriam
    Мария Мальцева @Moriam
    Junior
    Когда не знаешь, как писать программу, то можно начать с того, чтобы разобраться, что нужно получить в конечном итоге. Представить программу с точки зрения пользователя. Потом попытаться схематично продумать основные части программы (тут пригодятся блок-схемы с первого курса), потом продумать каждую часть подробно и так далее.
    В универе учат кодить, но не везде рассказывают про то, что бОльшая часть работы программиста - это моделирование программы, а не само написание кода и отладка.
    Мне вот сначала казалось, что "зачем тратить время на эти схемы, я все представляю в голове", но со временем выработалась привычка: сначала нарисовать принцип работы, модель, а потом только воплощать.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Можно ли на с++ написать прошивку для микроконтроллера?

    Moriam
    Мария Мальцева @Moriam
    Junior
    Можно, но проблема в том, что фишки С++ отъедают достаточно много памяти - для настольных приложений, например, пара килобайт может быть не критична, а вот на микроконтроллерах ценится каждый байт.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
Оценили как «Нравится»
Самые активные сегодня
  • mayton2019
    • 7 ответов
    • 1 вопрос
  • firedragon
    Владимир Коротенко
    • 7 ответов
    • 0 вопросов
  • freeExec
    freeExec
    • 7 ответов
    • 0 вопросов
  • vabka
    Василий Банников
    • 7 ответов
    • 0 вопросов
  • CityCat4
    CityCat4
    • 5 ответов
    • 0 вопросов
  • Мимокрокодил
    • 5 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации