Помогите дописать программу. |
Здравствуйте, гость ( Вход | Регистрация )
Помогите дописать программу. |
Ivan767 |
1.12.2011, 22:15
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 1.12.2011 Пользователь №: 3036 Спасибо сказали: 0 раз(а) Репутация: 0 |
Всем доброго времени суток! Помогите пожалуйста дописать программу С++, которая получает случайное целое типа int и выводит его двоичное представление на экран затем выполняет преобразование, и после выводит на экран двоичное представление результата преобразования.
Условие программы: Назовем симметричным байт, в котором нулевой бит имеет такое же значение, что и седьмой, а первый – такое же, что и шестой. Изменить порядок следования симметричных байтов в числе на обратный. И если сможете, сделайте так чтобы преобразование осуществлялось с помощью битовых операций. Использование массивов для представления битов числа нежелательно. Буду очень признателен если поможете)
эта часть получает целое число и выводит его в двоичном виде. помогите доделать пожалуйста! Если можно ее как то проще сделать, сделайте по самому простому. Очень надо. Заранее благодарю! |
|
|
ilyabvt |
2.12.2011, 0:15
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 297 Регистрация: 23.6.2011 Пользователь №: 2765 Спасибо сказали: 45 раз(а) Репутация: 3 |
Цитата Изменить порядок следования симметричных байтов в числе на обратный. Не совсем понял что нужно. А если в числе всего один байт? А если в числе нету симметричных байтов? Приведите пример того что вы имели ввиду. |
|
|
Алексей1153 |
2.12.2011, 6:47
Сообщение
#3
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
ilyabvt, не бери в голову, сумасшедшие преподы и не такое насочиняют ))
|
|
|
Ivan767 |
2.12.2011, 8:53
Сообщение
#4
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 1.12.2011 Пользователь №: 3036 Спасибо сказали: 0 раз(а) Репутация: 0 |
Не совсем понял что нужно. А если в числе всего один байт? А если в числе нету симметричных байтов? Приведите пример того что вы имели ввиду. Программа должна преобразовать введенное с клавиатуры число в десятичной системе, затем преобразовывает его в двоичную, а в итоге вывести на экран шестнадцатиричный код введенного числа с клавиатуры, и затем с помощью сдвигов поучить следующее → (как пример) 0xDEADBEEF → 0xDEEFBEAD. Я так думаю, что скорее всего я должен делать сам все сдвиги для любого числа, т.к. не совсем понимаю как программа будет находить симметричные байты и делать сдвиги автоматически. Можно конечно попробовать перевести число DEADBEEF в десятичный код (результат будет 3 735 928 559) и уже сдвиги делать для этого числа DEADBEEF. давайте так попробуем. Спасибо что откинулись! ой ой ой сори сори! это же случайное число должно быть! что то я перепутал) Программа должна преобразовать введенное с клавиатуры число в десятичной системе, затем преобразовывает его в двоичную, а в итоге вывести на экран шестнадцатиричный код введенного числа с клавиатуры, и затем Я попробую уточнить этот момент А если в числе всего один байт? А если в числе нету симметричных байтов? Отпишусь чуть позже) |
|
|
Ivan767 |
2.12.2011, 13:35
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 1.12.2011 Пользователь №: 3036 Спасибо сказали: 0 раз(а) Репутация: 0 |
А если в числе всего один байт? А если в числе нету симметричных байтов? Если в числе будет один байт то он должен заменить пустые ячейки нулями, т.е во так 0x0000BEEF Я не указал что мне нужно шестнадцатиричный код преобразовывать. сори) вот эта часть преобразовывает случайное десятичное число в шестнадцатиричный код: #include<iostream> using namespace std; int main(){ int i; cin >> dec >> i; cout << hex << i << endl; return 0; } теперь надо дописать чтобы программа меняла все что надо. _______ ВОТ ЧТО НАДО СДЕЛАТЬ. В общем нужно сделать чтоб я сам заранее вводил число с клавиатуры и оно само преобразовало в шестнадцатеричный код. т.е. я ввожу 3 735 928 559 и получаю DEADBEEF и затем получаю DEEFBEAD. Теперь не надо получать случайное число, а именно вводить его самому. |
|
|
Ivan767 |
2.12.2011, 20:14
Сообщение
#6
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 1.12.2011 Пользователь №: 3036 Спасибо сказали: 0 раз(а) Репутация: 0 |
Запутал конечно я вас)
Теперь не надо получать случайное число, а именно вводить его самому. В общем нужно сделать чтоб я сам вводил число с клавиатуры и оно само преобразовало в шестнадцатеричный код. т.е. я ввожу 3 735 928 559 и получаю DEADBEEF и затем после всех сдвигов получаю DEEFBEAD. т.е. выполняем следующее: Назовем симметричным байт, в котором нулевой бит имеет такое же значение, что и седьмой, а первый – такое же, что и шестой. Изменить порядок следования симметричных байтов в числе на обратный. И если сможете, сделайте так чтобы преобразование осуществлялось с помощью битовых операций. Использование массивов для представления битов числа нежелательно. |
|
|
ilyabvt |
3.12.2011, 2:32
Сообщение
#7
|
Активный участник Группа: Участник Сообщений: 297 Регистрация: 23.6.2011 Пользователь №: 2765 Спасибо сказали: 45 раз(а) Репутация: 3 |
Раскрывающийся текст
GenerateBytes разбивает число на отдельные байты. CheckByte проверяет является ли байт симметричным. P.S. Код получился громоздким, но у меня нет желания его оптимизировать.)) Алексей прав - это явно невменяемый преподаватель. Сообщение отредактировал ilyabvt - 3.12.2011, 2:38 |
|
|
Iron Bug |
3.12.2011, 9:26
Сообщение
#8
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
преподаватель нормальны: его задача - научить студента думать. а вот студенты невменяемые: ленивые и тупые.
а потом такое чмо приходит с дипломом на работу и нихрена (очень мягко выражаясь) не умеет, потому что в башке пусто. я, конечно, такого "специалиста" сразу выкину к чертям собачьим, но время будет потеряно. я предупреждаю профессиональных программистов: чем больше вы делаете таких задач - тем тупее те, кто потом придёт устраиваться к вам же на работу. вы оказываете себе и другим медвежью услугу. человек, который не умеет (и главное - не хочет!) думать, не должен получить диплом об образовании. |
|
|
Ivan767 |
3.12.2011, 14:29
Сообщение
#9
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 1.12.2011 Пользователь №: 3036 Спасибо сказали: 0 раз(а) Репутация: 0 |
преподаватель нормальны: его задача - научить студента думать. а вот студенты невменяемые: ленивые и тупые. а потом такое чмо приходит с дипломом на работу и нихрена (очень мягко выражаясь) не умеет, потому что в башке пусто. я, конечно, такого "специалиста" сразу выкину к чертям собачьим, но время будет потеряно. я предупреждаю профессиональных программистов: чем больше вы делаете таких задач - тем тупее те, кто потом придёт устраиваться к вам же на работу. вы оказываете себе и другим медвежью услугу. человек, который не умеет (и главное - не хочет!) думать, не должен получить диплом об образовании. Как бы не надо людей так оскорблять! информатика не мой профилирующий предмет, и я не супер программист и в будущем отношение к программированию иметь не буду. Раскрывающийся текст
GenerateBytes разбивает число на отдельные байты. CheckByte проверяет является ли байт симметричным. P.S. Код получился громоздким, но у меня нет желания его оптимизировать.)) Алексей прав - это явно невменяемый преподаватель. Спасибо и на этом! ) Мне такое уже не первый человек говорит что "это явно невменяемый преподаватель.", на самом деле преподаватель нормальный) |
|
|
ilyabvt |
3.12.2011, 18:20
Сообщение
#10
|
Активный участник Группа: Участник Сообщений: 297 Регистрация: 23.6.2011 Пользователь №: 2765 Спасибо сказали: 45 раз(а) Репутация: 3 |
Цитата человек, который не умеет (и главное - не хочет!) думать, не должен получить диплом об образовании. Согласен. И тем не менее, такие люди получают их пачками (мне иногда кажется что студент который хочет думать это уже вымирающий вид ). Цитата Как бы не надо людей так оскорблять! Оскорбление было не персонализированным. Цитата на самом деле преподаватель нормальный Приношу свои извинения. Брякнул сгоряча. |
|
|
Текстовая версия | Сейчас: 19.4.2024, 16:53 |