Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2012, 14:38   #1
sofalina
Пользователь
 
Регистрация: 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;

}
sofalina вне форума Ответить с цитированием
Старый 21.11.2012, 16:31   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Вы не алгоритм составили, а написали какую-то программу. Выучите, что такое алгоритм и как он представляется uk.wikipedia.org.

Цитата:
Представлення алгоритмів
В процесі розробки алгоритму можуть використовуватись різні способи його опису, які відрізняються за простотою, наочністю, компактністю, мірою формалізації, орієнтації на машинну реалізацію тощо.

Форми запису алгоритму:

словесна або вербальна (мовна, формульно-словесна);
псевдокод (формальні алгоритмічні мови);
схемна:
структурограми (схеми Нассі-Шнайдермана);
графічна (блок-схема, виконується за вимогами стандарту).
И используйте тег-код, который облегчает работу с Вашими сообщениями, для чего выделите текст прграммы и нажмите значок # на панели сообщения.
Неприятности приходят и уходят, а жизнь продолжается!

Последний раз редактировалось Sweta; 21.11.2012 в 16:34.
Sweta вне форума Ответить с цитированием
Старый 22.11.2012, 16:47   #3
sofalina
Пользователь
 
Регистрация: 11.11.2012
Сообщений: 14
По умолчанию Исправляюсь

Есть программа для решения задачи (условие в предыдущем сообщении). Нужно ее немного упростить и составить блок-схему.
sofalina вне форума Ответить с цитированием
Старый 30.11.2012, 19:31   #4
serguk071
Новичок
Джуниор
 
Регистрация: 17.04.2010
Сообщений: 1
По умолчанию

Код:
#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;

}
serguk071 вне форума Ответить с цитированием
Старый 30.11.2012, 22:28   #5
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Sweta
Цитата:
Вы не алгоритм составили, а написали какую-то программу.
Исходный код не форма представления алгоритма?
Цитата:
Выучите, что такое алгоритм и как он представляется uk.wikipedia.org.
к словам придираетесь как-то неуклюже

sofalina
Цитата:
// підказка користувачу
большинство пользователей форума русскоязычные, у них и так, наверняка, особой мотивации помогать нет, но вы не только помочь просите, но и любезно перевести текст задачи и комментарии... Может Вам стоит перевести это?
rrrFer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Язык программы Смокер Помощь студентам 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