|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.11.2012, 21:35 | #1 |
Пользователь
Регистрация: 11.11.2012
Сообщений: 14
|
Лабораторная работа Язык С++
Программа к лабораторной работе сделана , работает, но преподаватель сказал упростить. Не могу понять как еще проще. Буду очень благодарна за помощь и блок-схему.
Здание построить схему алгоритма и разработать програмное приложение включающее реализацию функции для виполнения задачи: " Написать функцию, котороая возвращает число, полученое с целого числа x, в котором нули установлены в n разрядов, начиная с позиции p (крайний правый бит считать нулевым за номером). Проверять правильность значений n і p. . " #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; } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Лабораторная работа | xWoWx | Фриланс | 5 | 26.06.2012 09:39 |
Лабораторная работа | Otonasi | Помощь студентам | 1 | 29.03.2012 14:34 |
лабораторная работа | ALEX777a | Фриланс | 3 | 20.02.2012 20:32 |
лабораторная работа | iron_cross | Помощь студентам | 6 | 23.11.2010 16:31 |
[C++]Лабораторная работа | Sudeki | Помощь студентам | 0 | 17.11.2009 20:02 |