Рейтинг:
16
OriginalGriff
Если вы имеете в виду, что читаете символы непосредственно от пользователя, то есть имеете дело с массивом символов, то нет, вы не можете использовать операторы сдвига для поворота чего-либо.
У вас есть варианты:
1) преобразуйте пользовательский ввод в число и поверните его с помощью операторов сдвига.
2) вручную поверните байты.
Первый тривиален, и вы должны быть в состоянии справиться с этим довольно легко.
Второй тоже прост, если вдуматься. Но... это звучит как домашнее задание, так что никакого кода!
Чтобы повернуть массив символов вправо, начните с правого конца.
Удалите последнюю цифру и сохраните ее во временном регистре.
Перебирайте оставшиеся байты, копируя каждый в индекс массива на один больший.
Когда вы переместите их все, поместите символ, который вы сохранили, в первую позицию.Поворот влево-это почти та же операция, но с обратными направлениями.
JaxTeller61
Ладно, во-первых, спасибо за помощь. У меня есть один маленький вопрос. Когда я беру символы чтения непосредственно от пользователя. Пользователь должен быть введен как это 1 0 1 0 0 1 но учитель не может принять как это у меня есть проблемы с ho can I get like 101001 into char array.
«_Superman_»
Считывайте его как строку (массив символов), а не символ за символом - scanf("%s", arr);
JaxTeller61
Я просто пытаюсь спросить / / прочитать двоичное число в массив, но не могу определить свою проблему, но я могу понять ее np.
Рейтинг:
12
JaxTeller61
printf("\nEnter 8 bit binary number to perform shift and rotate operations: ");
scanf_s("%d",&bin3);
b=bin3;
//read binary number to an array
//from lsb to msb
while(m<8)
{
shift_array[m]=bin3%10;
bin3=bin3/10;
m=m+1;
}
printf("\nHow many times you want to shift/rotate ");
scanf_s("%d",&j);
n=j;
//circular shift right
printf("\n\nCircular Shift/rotation (Right)\n");
while(j>0)
{
printf("%d",shift_array[j-1]);
j=j-1;;
}
bin3=b/pow(10.0,n);
if(bin3!=0){
printf("%d ",bin3);
}
//circular shift left
j=n;
printf("\n\nCircular Shift/rotation ( Left)\n");
while(j<8)
{
printf("%d",shift_array[7-j]);
j=j+1;
}
j=n;
while(j>0)
{
printf("%d",shift_array[7-k]);
k=k+1;
j=j-1;;
}
Patrice T
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.