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