Форум программистов, компьютерный форум CyberForum.ru

Ввести число с клавиатуры поменять местами старшую и младшую половины - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Gnum
Сообщений: n/a
17.05.2010, 09:06     Ввести число с клавиатуры поменять местами старшую и младшую половины #1
Помогите пожалуйста в решении задачи на побитовую разработку программы на Си

Ввести число с клавиатуры поменять местами старшую и младшую половины

Заранее большое спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2010, 09:06     Ввести число с клавиатуры поменять местами старшую и младшую половины
Посмотрите здесь:

C++ Поменять местами первую и вторую половины массива
Столбцы левой половины массива поменять местами со столбцами правой половины C++
поменять местами две половины очереди местами C++
Поменять местами 2 половины строки // С++ C++
C++ 7. Дана матрица размера M × N (M — четное число). Поменять местами верхнюю и нижнюю половины матрицы.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1330 / 863 / 50
Регистрация: 02.01.2009
Сообщений: 2,621
Записей в блоге: 1
17.05.2010, 09:34     Ввести число с клавиатуры поменять местами старшую и младшую половины #2
Это
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
using namespace std;
 
 
int func_(int a){
    __asm
    {
        mov eax, a
        bswap eax
        mov a, eax
    }
 
    return a;
}
 
int main(){
    cout << func_( 1 ) << endl
         << func_( 0 ) << endl
         << func_(-1 ) << endl;
 
    int a = func_(1);
    cout << func_(a) << endl;
    return 0;
}
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
17.05.2010, 11:07     Ввести число с клавиатуры поменять местами старшую и младшую половины #3
А число какого размера? Просто можно проблему через union решить.

Добавлено через 1 час 25 минут
Например :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
int main (){
    union {
        int i;
        short int a[2];
    };
    cin>>hex>>i;
    short int tmp=a[0];
    a[0]=a[1];
    a[1]=tmp;
    cout<<hex<<i;    
    system ("pause");
    return 0;
}
Меняет местами старшую и младшую половины, HEX на вводе и выводе используется просто для наглядности. Например если ввести 12345678, то будет выведено 56781234. Меняя типы переменных в union, можно менять размерность числа.
Maxim Prishchepa
Эксперт С++
 Аватар для Maxim Prishchepa
1761 / 984 / 60
Регистрация: 29.03.2010
Сообщений: 2,976
17.05.2010, 11:17     Ввести число с клавиатуры поменять местами старшую и младшую половины #4
C++
1
2
3
4
int change(int number, int size)
{
  return (number>>size/2)|(number<<size/2);
}
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
17.05.2010, 11:50     Ввести число с клавиатуры поменять местами старшую и младшую половины #5
Да, красиво! После ASM'a ни как к С не могу привыкнуть, все меня на сложности тянет
Gnum
Сообщений: n/a
17.05.2010, 13:44     Ввести число с клавиатуры поменять местами старшую и младшую половины #6
Число может быть любое от 1. до бесконечности

a^=0xzzzz (zzzz) - это число для байтов

пример

main()
{
unsigned a,m,i;
scanf("%x",&a);
for (i=1;i<sizeof a; i++);
m=(m<<8) |0x55; (для 1 байта)
a^=m;
printf.......
}



Вот такое решение примерно должно быть только для этой задачи
Yandex
Объявления
17.05.2010, 13:44     Ввести число с клавиатуры поменять местами старшую и младшую половины
Ответ Создать тему
Опции темы

Текущее время: 00:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru