|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.11.2012, 14:38 | #1 |
Пользователь
Регистрация: 11.11.2012
Сообщений: 14
|
Проверка программы Язык С++
Задание: Составить схему алгоритма для решения задачи " функція, яка повертає число, одержане з цілого числа x, в
якому всі розряди, розташовані лівіше центральної позиції, замінені на симетричні відносно центру розряди з правої частини числа (крайній правий біт вважати нульовим за номером). " Алгоритм составила, может кто скажет правильно или нет и если можно помогите с составлением блок-схемы к этой программе. #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, 16:31 | #2 | |
Форумчанин
Регистрация: 22.11.2007
Сообщений: 664
|
Вы не алгоритм составили, а написали какую-то программу. Выучите, что такое алгоритм и как он представляется uk.wikipedia.org.
Цитата:
Неприятности приходят и уходят, а жизнь продолжается!
Последний раз редактировалось Sweta; 21.11.2012 в 16:34. |
|
22.11.2012, 16:47 | #3 |
Пользователь
Регистрация: 11.11.2012
Сообщений: 14
|
Исправляюсь
Есть программа для решения задачи (условие в предыдущем сообщении). Нужно ее немного упростить и составить блок-схему.
|
30.11.2012, 19:31 | #4 |
Новичок
Джуниор
Регистрация: 17.04.2010
Сообщений: 1
|
Код:
|
30.11.2012, 22:28 | #5 | |||
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Sweta
Цитата:
Цитата:
sofalina Цитата:
|
|||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Язык программы | Смокер | Помощь студентам | 0 | 23.01.2012 23:53 |
Язык С, работа с файлами. (проверка кода) | TIT0 | Помощь студентам | 0 | 08.12.2010 15:49 |
Язык программы | KWN, lnc | Общие вопросы Delphi | 1 | 22.01.2010 22:33 |
язык интерфейса программы | Balabar | Общие вопросы Delphi | 9 | 29.11.2008 20:40 |