Каждый элемент массива А сдвинуть побитово с помощью функции coder - C (СИ)
Формулировка задачи:
Программа должна каждый элемент массива А, с помощью функции coder побитово сдвинуть, а результат записать в массив В и распечатать. Но она выдаёт начальную строку, с добавлением каких-то лишних символов. Функцию coder я проверял, она точно работает, что-то не так я делаю в цикле. Помогите пожалуйста.
#include <stdio.h> #include <conio.h> unsigned char coder (unsigned char); struct BT { unsigned b0:1; unsigned b2_6:6; unsigned b7:1; }; void main() { unsigned char ch, ch1; unsigned char A[6]="Г*ГЎГўГЈГ¤",B[6]; int i; printf ("%s",A); A[6]='\0'; for (i=0;i='\0';i++) { A[i]=ch; //ch равняется i-тому элементу массива А ch1=coder(ch); //ch1 равняется функции coder с параметром ch ch1=B[i]; //получившийся в ch1 результат записывается в i-тый элемент массива B } printf ("%s\n",B); } unsigned char coder (unsigned char x) { union { BT byte; unsigned char y; }z; z.y=x; if (z.byte.b7==0) z.y<<=1; else {z.y<<=1; z.byte.b0=1;} return z.y; }
Решение задачи: «Каждый элемент массива А сдвинуть побитово с помощью функции coder»
textual
Листинг программы
A[i]=ch; //ch равняется i-тому элементу массива А ch1=coder(ch); //ch1 равняется функции coder с параметром ch ch1=B[i]; //получившийся в ch1 результат записывается в i-тый элемент массива B }
Объяснение кода листинга программы
В данном коде происходит сдвиг каждого элемента массива А с помощью функции coder. Список действий можно описать следующим образом:
- A[i] = ch; // элемент массива A с индексом i копируется в переменную ch
- ch1 = coder(ch); // переменная ch1 принимает значение, полученное от функции coder, с параметром ch
- ch1 = B[i]; // элемент массива B с индексом i копируется в переменную ch1 Таким образом, каждый элемент массива A сдвигается вправо на одну позицию, а результат записывается в соответствующий элемент массива B.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д