21.11.2012, 15:44 | #1 (permalink) |
Новичок
Регистрация: 12.11.2012
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Откорректируйте программу С++
якому всі розряди, розташовані лівіше центральної позиції, замінені на симетричні відносно центру розряди з правої частини числа (крайній правий біт вважати нульовим за номером). " Не знаю правильно ли это? Может кто подскажет как составить блок-схему ато не получается что-то. #include <iostream> #include <stdio.h> #include <conio.h> using namespace std; // підключаємо все необхідне для роботи програми void print_bits (unsigned n) { // функція друкує біти, функція з лекії int bit; // змінна, в якій буде знаходитись поточне значення кількості бітів for (bit = sizeof(n)*8-1; bit >= 0; bit--) // початкове значення bit = довжина змінної unsigned { if ((n » bit) & 01) { // тут іде логічне множення... складно пояснити, але спробую... // (n » bit) - здвигає на "bit" розрядів // & 01 - логічне множення - тобто, грубо кажучи кусає правіший біт // тут іде побітове множення(чи просто кажучи побітове "і"), для прикладу: // 10101110001101 // & побітове "і" // 00000000000001 тобто тут насправді (01) // = // 00000000000001 - цей результат позитивний, тобто більше нуля, // а значить, грубо кажучи == TRUE putchar ('1'); } else {// іначе 0 - наприклад: // 011010 // & // 000001 // = // 000000 - == FALSE або нулю - негативний putchar ('0'); } if (bit % 4 == 0) putchar (' '); // якщо біт, на якому стоїть лічильник кратний чотирьом, то ставимо пробіл } cout«endl; // перевод на нову строчку } unsigned replace_bits (unsigned x, unsigned p, unsigned n) { unsigned mnoj=0, z; int bit; // змінна, в якій буде знаходитись поточне значення кількості бітів for (bit = sizeof(n)*8-1; bit >= 0; bit--) { // cout«mnoj«endl; // if ((n » bit) & 01) // cout«((x»bit) & 01); // print_bits(z); if (bit>=p && bit<p+n) { z=((~(x»bit) & 01)); mnoj=(mnoj«1) | z; } else { z=(((x»bit) & 01)); mnoj=(mnoj«1) | z; } } cout«endl; return mnoj; } main () { unsigned num; // створюємо цілу беззнакову 4-байтову змінну cout « "Input X" « endl; // підсказка користувачу cin » num; // зчитуємо число print_bits (num); // друкуємо біти int n,p; do { cout « " Enter P [numeracia s nula]: " ; // підказка користувачу cin » p; // зчитуємо число if (p<0) {cout«" -> ERROR : P must be >=0"«endl;} } while (p<0); do { cout « " Enter N : " ; // підказка користувачу cin » n; // зчитуємо число if (n<=0) {cout«" -> ERROR : N must be >=1"«endl;} } while (n<=0); unsigned result = replace_bits (num,p,n); // виводимо кількість пар бітів print_bits (result); // друкуємо біти system ("PAUSE"); return 0; } |
21.11.2012, 15:44 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
На форуме имеются аналогичные топики, в которых возможно кроется решение вашего вопроса Ищу программу для конвертации из MS SQL в MY SQL Как срубить программу? Разобрать программу Сделайте программу |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|