Помогите сделать задачу на C++ никак не могу победить

программирование программы С++ задача С++

Исходные данные выбираются из таблицы 3.1 таблица тут http://pixs.ru/showimage/78bmp_6678945_1908620.jpg

Даны три целых числа А, В, С.
Если в числах установлены биты, заданные в первой строке задания (табл. 3.1), то выполнить расчет выражения, записанного в первой строке, иначе, если в числах А, В, С установлены биты, заданные во второй строке задания, то выполнить расчет выражения, записанного во второй строке, иначе очистить А, В, С. Расчеты выполнить для троек чисел А, В, С, вводимых с клавиатуры до тех пор, пока не будут введены нулевые значения всех трех чисел, т.е. организовать ввод исходных данных и расчеты в цикле.
Для операций умножения и деления использовать команды сдвига.
Программа должна вводить и выводить исходные данные, выводить результаты: значение выражения и номер выражения ( 1 или 2) или сообщение о том, что числа А, В, С очищены, и измененные числа А, В, С.
Исходные данные и результаты вывести в шестнадцатеричной системе счисления. Все переменные, используемые в программе должны быть положительными и иметь целочисленный тип, причем переменные А, B должны иметь тип unsigned int, С – тип unsigned char.
В программе должен выполняться контроль значений вводимых параметров. Если введенное число отрицательное, то необходимо выполнить повторный ввод.
Результаты выполнения программы вывести в таблицу, вид которой придумать самостоятельно.


Примечание:
или таблица с данными тут http://xmages.net/show.php/2590670_78-bmp.html
спасибо заранее за помощь

Примечание:
задача на тему Побитовые операции

Примечание:
я то сделал только в условии сказано введите номера разрядов где еденицы стоять должны так вот ввелы я номера например 3 5 7 и как мне например их с числом 0b001001011010 сравнит в какой позиции есть в какой нет :/ я то нашел метод тока он пашет тпочемуто только когда две единицы в двочином числе больше - уже не паша

Примечание:
im314 откуда это?) 0x7

Примечание:
вот чо получилось:0
#include <stdio.h>
#include <string.h>

int main() {

unsigned int A = 0x0;
unsigned int B = 0x0;
unsigned char C = 0x0;

unsigned int a1, a2, a3, b1, b2, b3, c1, c2, c3, s=1, res;

while (s == 1) {
printf("Dlya vyhoda iz programmy vvedite vse nuli\n");
printf("Vvedite razryady dlya chisla A cherez probel:\n");
scanf("%d%d%d", &a1, &a2, &a3);
printf("Vvedite razryady dlya chisla B cherez probel:\n");
scanf("%d%d%d", &b1, &b2, &b3);
printf("Vvedite razryady dlya chisla C cherez probel:\n");
scanf("%d%d%d", &c1, &c2, &c3);

if ((a1==1) && (a2==2) && (a3==3) && (b1==4) && (b2==5) && (b3==6) && (c1==2) && (c2==4) && (c3==6)){
A = B = C = 0;
A |= (1 << (a1));
A |= (1 << (a2));
A |= (1 << (a3));
B |= (1 << (b1));
B |= (1 << (b2));
B |= (1 << (b3));
C |= (1 << (c1));
C |= (1 << (c2));
C |= (1 << (c3));
res = (A&B)-(C<<2);
printf("Vvedennye chisla \n A = %x %x %x \n B = %x %x %x \n C = %x %x %x\n",a1, a2, a3, b1, b2, b3, c1, c2, c3);
printf("Vypolnyaem pervoe uslovie \n");
printf ("Otvet raven %x\n", res);
}
if (((a1<=10) || (a1>=6)) && (a2==13) && (c1==1) && (c2==3) && (c3==5)){
A = B = C = 0;
A |= (1 << (6));
A |= (1 << (7));
A |= (1 << (8));
A |= (1 << (9));
A |= (1 << (10));
A |= (1 << (a2));
C |= (1 << (c1));
C |= (1 << (c2));
C |= (1 << (c3));
res = (A&B)-(C>>1);
printf("Vvedennye chisla \n A = %x %x %x \n B = %x %x %x \n C = %x %x %x\n",a1, a2, a3, b1, b2, b3, c1, c2, c3);
printf("Vypolnyaem vtoroe uslovie \n");
printf ("Otvet raven %x\n", res);
}
if ((a1==0) && (a2==0) && (a3==0) && (b1==0) && (b2==0) && (b3==0) && (c1==0) && (c2==0) && (c3==0)){
s = 0;
} else {
A = B = C = 0;
printf("Vypolnyaem tretie uslovie \n Vse peremennye ochishcheny. \n");
}
}
return 0;
}
Ответы:
А что не получается-то?


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.