• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Задача на побитовые операции (Си)

  • Автор темы Oleg306
  • Дата начала
O

Oleg306

Всех форумчан с новым годом!

Помогите решить задачу в Си:
Перемножить элементы массива целых чисел, коды которых содержат в 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;
}
 
L

lazybiz

Oleg306
Ты извращенец? Если нет напиши код понятным языком.
Хочу помочь, но на код смотреть противно.
 
O

Oleg306

Прошу прощения, я только начинаю познавать программирование;
что значит "Понятным языком" и что не так в моем коде ?
 
S

StudyMen

Email: administrator@studymen.ru
Skype: studymen
ICQ: 639151387

Обращайтесь, задача будет готова в течение 4 часов, с момента начала сотрудничества!
 
R

Rififi

Oleg306

примерно как-то так...

C++:
#include <locale>
#include <stdio.h>
#include <ctype.h>

int main()
{
setlocale(LC_ALL, "");

int arr[] = {1,2,3,4,5,6,7,8,9,10};
const size_t N = sizeof(arr) / sizeof(arr[0]);

const size_t mask = 1 << 6;

for (size_t i=0; i<N; i++)
for (size_t j=i+1; j<N; j++)
{
if (!(arr[i] & mask) && !(arr[j] & mask))
{
const int mul = arr[i] * arr[j];
const bool isChar = isalpha(mul & ~1);

printf("%d - %s\n", mul, (isChar ? "char" : "not char"));
}
}

return 0;
}
 
L

lazybiz

Oleg306
Вот как то так он тебе помог перевести программу на "понятный язык". Я имел в виду элементарные пробелы (или табуляцию) и переносы строк. К тому же ты (или кто-то из модераторов) поправил тэг.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!