Перовод побитовой строчки матрицы в десятичное число - C (СИ)

Узнай цену своей работы

Формулировка задачи:

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

Матрица B(a,b) состоит с нулей и едениц. Считая каждую строку матрицы побитовой записью двоичного числа, подсчитать и вывести десятичное число для всех строчек матрицы.

Единственный мой вопрос, это как строчку матрицы перевести в десятичное число? Вот половина кода:
Листинг программы
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <conio.h>
  4. int main()
  5. {
  6. int i,j,a;
  7. scanf("%i", &a);
  8. int mx[a][8];
  9. for(i=0;i<a;i++)
  10. for(j=0;j<8;j++)
  11. scanf("%i", &mx[i][j]);
  12. for(i=0;i<a;i++)
  13. {
  14. for(j=0;j<8;j++)
  15. {
  16. printf("%2.0i", mx[i][j]);
  17. }
  18. printf("\n");
  19. }
  20. //чудо-код который двоичные числа переводит в десятичные...
  21. }

Решение задачи: «Перовод побитовой строчки матрицы в десятичное число»

textual
Листинг программы
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <math.h>
  4. int main()
  5. {
  6.     int i,j;
  7.     int mx[3][8];    
  8.     for(i=0;i<3;i++)
  9.         for(j=0;j<8;j++)
  10.             mx[i][j] = rand()%2;
  11.    
  12.     for(i=0;i<3;i++)
  13.         {
  14.             int n = 0, k = 0;
  15.             for(j=7;j>=0;j--)
  16.                 {
  17.                     printf("%i", mx[i][7-j]);
  18.                     n += pow(2, k) * mx[i][j];
  19.                     k++;
  20.                 }
  21.             printf(" %i \n", n);
  22.         }    
  23. }

Объяснение кода листинга программы

В этом коде выполняется следующие действия:

  1. Включаются необходимые заголовочные файлы:
    • stdlib.h - для работы с функцией rand() и оператором rand();
    • stdio.h - для работы с функциями ввода-вывода;
    • math.h - для работы с функцией pow().
  2. Создается матрица mx размером 3x8, заполненная случайными значениями от 0 до 1 с помощью функции rand() и оператора %.
  3. Выполняется цикл по каждому элементу матрицы.
  4. Для каждого элемента матрицы создаются две переменные:
    • n - для хранения результата преобразования битовой строки в десятичное число;
    • k - для подсчета количества битов в текущей битовой строке.
  5. Выполняется внутренний цикл по каждому биту в текущей битовой строке.
  6. Внутренний цикл начинается с самого старшего бита (7-й позиции) и заканчивается самым младшим битом (0-й позиции).
  7. Каждый бит матрицы преобразуется в десятичное число с помощью функции printf() и оператора %i.
  8. **К текущему результату n добавляется текущий бит, умноженный на 2 в степени k с помощью функции pow().
  9. **После внутреннего цикла выводится текущий результат n и значение переменной k.
  10. После завершения внешнего цикла выводится результат.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.818 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы