Перемножить элементы массива целых чисел (побитовые операции) - C (СИ)

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

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

Всех форумчан с новым годом!)) Помогите решить задачу в Си: Перемножить элементы массива целых чисел, коды которых содержат в 6-м бите 0. Из результата выделить младший байт и определить символ, которому он соответствует(если он существует). То, что я пытался написать :
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int funk(int a[])
{int i,temp=0,l=0,d;
   unsigned long k=1;
clrscr();
    for(i=0;i<10;i++)
    {temp=a[i];
     d=temp>>5;
     k=k*temp;}
printf("%u\n",k);
     l=(a[i]>>8);
return l;}
      int main()
{int a[10]={1,2,3,4,5,6,7,8,9,10};
       int i=0,j;
 
i=funk(a);
printf("%c",i);

getch();
    return 0;
}
Заранее спасибо за помощь.

Решение задачи: «Перемножить элементы массива целых чисел (побитовые операции)»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
 
int main()
{
    const int MAX = 10;
    int arr[MAX] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
        sum = 0;
 
    for (int i = 0; i < MAX; i++) {
        if (arr[i] | 0xffffffdf & 0x20 == 0) sum += arr[i];
    }
    sum &= 0xff;
    
    printf("%c", sum);
 
    getch();
    return 0;
}

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

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

  1. Объявление и инициализация массива arr[10] значениями от 1 до 10.
  2. Объявление переменной sum и инициализация её значением 0.
  3. Цикл for перебирает элементы массива arr от 0 до 9 (так как массив имеет размер 10).
  4. Внутри цикла проверяется условие if, которое проверяет побитовую операцию И (|) между arr[i] и 0xffffffdf (значение 0x20 в побитовой форме). Результат этой операции сохраняется в переменной sum, если условие if истинно.
  5. После выполнения цикла for, переменная sum содержит сумму элементов массива, удовлетворяющих условию if.
  6. Затем выполняется побитовая операция И (&) между sum и 0xff, чтобы получить только последний байт (8 бит) от значения sum.
  7. Полученное значение выводится на экран с помощью функции printf.
  8. Затем вызывается функция getch(), чтобы приостановить выполнение программы до нажатия клавиши.
  9. Программа возвращает 0, что означает успешное завершение работы.

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


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

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

9   голосов , оценка 4.111 из 5
Похожие ответы