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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
BonaBerry
3 / 3 / 0
Регистрация: 21.09.2013
Сообщений: 73
#1

Определить, что старший байт числа равен значению переменной с - C++

25.03.2014, 11:59. Просмотров 1465. Ответов 43
Метки нет (Все метки)

Вот такое задание.... Буду рада хотя бы алгоритму выполнения.
Дана переменная char c. Напишите цикл для подсчета в заданном диапазоне целых чисел (int) количества чисел, удовлетворяющих условию: старший байт числа равен значению переменной с.

Добавлено через 11 минут
И покажите, пожалуйста, еще как накладывать маски и пользоваться операторами " | & << >>> " Например, нужно:
00110011 11111111 000000000 010110101
превратить в такое, т.е. середику проинвертировать:
00110011 000000000 11111111 010110101


пока я могу только выводить число:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//  {
//    
//   int    y;
//   std::cout <<"Enter Number"<<endl;
//   cin>>y;
//   int  x=0,  vid, null;
//     int i=sizeof(int);// битовый оператор число в двоичном виде (0000)*8 =0000 0000 0000 00000
////******************************************************************************************/
//  /***ПЕРВОНОЧАЛЬНО*******/
//  std::cout <<"fist look:"<<endl;
//  for (int i=31; i>=0; i--)  // цикл перебора значений
//              {   
//                  vid=((y>>i)&1);    
//                  std::cout <<vid;
//              }
//                  std::cout << endl;
//system("Pause"); 
//      return 0;
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2014, 11:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить, что старший байт числа равен значению переменной с (C++):

Для целого числа А выделить старший байт и поставить его на место младшего байта. старший байт при этом обнулить. - C++
Помогите пожалуйста, вообще не могу понять как делать следующее...Еще и в программе CODE BLOCKS препод почему именно эту программу...

функция изменяет старший байт числа на заданное значение не изменяя младший байт - C++
функция изменяет старший байт числа на заданное значение не изменяя младший байт. как можно проще

Считать старший байт числа - C++
Добрый день подскажите пожалуйста! Как в переменную записать число 3 числа 35, или 6 числа 69?

Определить, что куб суммы цифр числа равен квадрату числа - C++
Кто может решите пожалуйста задачу с помощью циклов. Задание 5: Пользователь вводит целое число А. Программа должна определить, что куб...

Вывести старший и младший байт заданного целого положительного числа в шестнадцатиричном и двоичном виде - C++
Дано целое положительное число , тип int. Вывести старший и младший байт в 16ом и в 2ом виде.

Определить номера строк матрицы, хотя бы один элемент которых равен заданному значению - C++
4. Определить номера строк матрицы R, хотя бы один элемент которых равен с, и элементы этих строк умножить на d.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BonaBerry
3 / 3 / 0
Регистрация: 21.09.2013
Сообщений: 73
26.03.2014, 16:59  [ТС] #31
Цитата Сообщение от aLarman Посмотреть сообщение
что то я не совсем понимаю о чем Вы, но предположу, что vidc имеет тип чар, и соответственно когда Вы его выводите (оно может быть 0 или 1) выводится символ с кодом 0 или 1
да, я понимаю что он как раз и считывает у меня закодированный символ.Но ведь мне нужен код этого самого символа, который я хочу узнать посредством ввода десятичного числа. Например:
char c = 'A'; // = 65; 00000101

Добавлено через 3 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
тебе весь перебор нужен?
или предельные значения?
предельные значения
вот ввожу я char c=8;
А на выходе получаю ответ что вот в числах от 14458878 до 14758971 в старшем байте 00001000.
Я так себе это представляю.
0
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,847
26.03.2014, 17:13 #32
Цитата Сообщение от BonaBerry Посмотреть сообщение
предельные значения
не нужно никаких циклов

один передел
0xRR000000
второй
0xRRFFFFFF

RR это значение байта который вводится

подсказать, или попробуешь сама разобраться
Цитата Сообщение от BonaBerry Посмотреть сообщение
да, я понимаю что он как раз и считывает у меня закодированный символ.Но ведь мне нужен код этого самого символа, который я хочу узнать посредством ввода десятичного числа. Например:
char c = 'A'; // = 65; 00000101
тебе нужно ввести число от 0 до 255
но поскольку >> переопределен он вводит символы
тут три пути
или приводить как показал aLarman,
или вводить переменную int потом кастрировать до char
или использовать scanf
C++
1
scanf("%i",&c);
мне по душе третий
вводить можно в любой системе( в пределах разумного)
255 десятичное
0377 восьмеричная
0xFF шеснадцетиричное
0
BonaBerry
3 / 3 / 0
Регистрация: 21.09.2013
Сообщений: 73
27.03.2014, 11:52  [ТС] #33
Вообще не идет, вроде уже в рот положили, а не переживать (((((((((((
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
25
26
27
28
29
30
31
32
{
 
        int c, vid, q;  // 1байт=8 битов 
        cout <<"Enter c from 01 to 255 =";
        cin >>c; 
        int i=sizeof(int);
        
        int d=c<<24;
 
        cout<<endl;
 
        for (int i=31; i>=0; i--)  
            {   
                    vid=((d>>i)&1);    
                    std::cout <<vid;
                }
                    std::cout << endl;
 
 
for(int i2=0x00ffffff; i2<=0x00000000; i2++)
{
 int d=c<<24;// создаем переменный в которой старший байт равен c
 int deap=i2 & 0xFF000000; //удаляем все кроме старшего байта
 int deap2=deap | d;  // сравниваем
 if (deap == deap2)  // сравниваем
   q++;
}
        cout<<endl;
 
        system("pause");
       return 0;
    }
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
27.03.2014, 12:17 #34
Цитата Сообщение от BonaBerry Посмотреть сообщение
for(int i2=0x00ffffff; i2<=0x00000000; i2++)
цикл без единой итерации
Цитата Сообщение от BonaBerry Посмотреть сообщение
C++
1
int deap2=deap | d; // сравниваем
чаво ?)
Цитата Сообщение от BonaBerry Посмотреть сообщение
C++
1
if (deap == deap2) // сравниваем
а вот так не проще?
C++
1
if(d == deap)
Цитата Сообщение от BonaBerry Посмотреть сообщение
C++
1
int d=c<<24;// создаем переменный в которой старший байт равен c
Выше Вы уже объявили эту переменную и вычислили ее значение, зачем создавать локальную еще раз, и вычислять значение на каждой итерации

Добавлено через 43 секунды

Не по теме:

и плиз, вставляейте теги в свой код

1
SatanaXIII
27.03.2014, 14:19
  #35
 Комментарий модератора 
BonaBerry, оформляете пожалуйста свой код в соответствующие теги.
Или вручную - [ CPP] код [ /CPP], или в окне отправки сообщения слева вверху кнопочка C++ - выделяете свой код и нажимаете ее.
0
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,847
27.03.2014, 14:26 #36
Цитата Сообщение от BonaBerry Посмотреть сообщение
Вообще не идет, вроде уже в рот положили,
посмотри в первых постах я уже предлагал решение
а если нужен диапазон то
C++
1
2
3
4
int min=c<<24;
int max=c<<24;
min&=0xFF000000;// это даже лишнее 0 и так будут в младших
max|=0x00FFFFFF;
1
BonaBerry
3 / 3 / 0
Регистрация: 21.09.2013
Сообщений: 73
27.03.2014, 14:43  [ТС] #37
Цитата Сообщение от aLarman Посмотреть сообщение
цикл без единой итерации
Цитата Сообщение от BonaBerry Посмотреть сообщение
Код C++
1
int deap2=deap | d; // сравниваем
чаво ?)

конечно, же битовое или, устанавливаем знак, операцию изменила, а комментарий нет
Вообще мне стыдно
1
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,847
27.03.2014, 14:52 #38
Цитата Сообщение от BonaBerry Посмотреть сообщение
Вообще мне стыдно
если б ты знала сколько тупых ошибок у меня бывает

могу предложить такой алгоритм написания программ, когда начинал очень мне он помогал
простой пример сложить два числа результат на экран
сначала пишем алгоритм текстом оформляя комментариями
C++
1
2
3
4
// объявить перемененные
// задать значение
// сложить и присвоить результат
// вывести на экран
потом кодируем этот алгоритм
C++
1
2
3
4
5
6
7
8
9
// объявить перемененные
int a,b,c;
// задать значение
a=5;
b=10;
// сложить и присвоить результат
c=a+b;
// вывести на экран
printf("%d \n",c);
главное к любому языку подходит
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
27.03.2014, 15:03 #39
Цитата Сообщение от BonaBerry Посмотреть сообщение
Вот такое задание.... Буду рада хотя бы алгоритму выполнения.
C++
1
return (x>>(sizeof(x)*8-8))==c;
.
0
aLarman
27.03.2014, 15:08
  #40

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
C++
1
sizeof(x)*8-8
(sizeof(x)-1)*8 - правило выноса за скобку хД

0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
27.03.2014, 15:10 #41
Цитата Сообщение от aLarman Посмотреть сообщение
(sizeof(x)-1)*8 - правило выноса за скобку хД
А какая разница?
0
BonaBerry
3 / 3 / 0
Регистрация: 21.09.2013
Сообщений: 73
27.03.2014, 16:00  [ТС] #42
А теперь я запуталась окончательно , в интеграции цикла. Насколько верно будет задавать переменные dmin и
dmax до начала цикла ???


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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{
 
        int c, vid, q;  // 1байт=8 битов 
        cout <<"Enter c from 01 to 255 ="<<c;
        cin >>c; 
        cout<<endl;
        int i=sizeof(int);
        
        int dmin=c<<24;
        int dmax=c<<24;
        
        int deapmin=dmin & 0xFF000000; 
        int deapmax=dmax | 0xFFffffff; 
 
        for (int i=31; i>=0; i--)  
            {   
                    vid=((dmin>>i)&1);    
                    std::cout <<"Check ="<<vid;
                }
                    std::cout << endl;
 
 
for(int i2=dmin; i2<=dmax; i2++)
{
 int deapmin=dmin & 0xFF000000; //удаляем все кроме старшего байта н/р косервы- 010111...  &
                                                                    // консервы-000000     =            
                                                                    // консервы-000000                  
 
 int deapmax=dmax | 0xFFffffff;  //ставим единицы, минуя стрший байт //косервы- 010111... |
                                                                    // консервы-ffffff    = 
                                                                    // консервы-111111                  
 
 if (c== deapmin)  // сравниваем -  введенная переменная  равно минимальному поисковому диапазону, крутим счетчик
   q++;
}
        cout<<endl;
        cout <<"deapmin= "<<deapmin;
        cout<<endl;
        cout <<"deapmax= "<<deapmax;
        
        system("pause");
       return 0;
    }
Добавлено через 6 минут
Цитата Сообщение от ValeryS Посмотреть сообщение
если б ты знала сколько тупых ошибок у меня бывает
могу предложить такой алгоритм написания программ, когда начинал очень мне он помогал
простой пример сложить два числа результат на экран
сначала пишем алгоритм текстом оформляя комментариями
это хороший способ особенно, когда много чего написано, и пади уследи где начало где конец.
Но мне столько сдавать, я с татскими простыми заданиями сижу((((((((((
0
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,847
27.03.2014, 16:03 #43
Цитата Сообщение от BonaBerry Посмотреть сообщение
А теперь я запуталась окончательно
по собственному опыту
наплюй
не подходи к задаче дня два
а потом напиши с нуля, не заглядывая в первое решение
и я тебе гарантирую, напишешь совершенно по другому

у тебя сейчас "Зашоривание", "зацикливание", назови как хочешь,
нужно отойти от задачи, чтобы взглянуть под другим углом
1
BonaBerry
3 / 3 / 0
Регистрация: 21.09.2013
Сообщений: 73
27.03.2014, 16:25  [ТС] #44
Цитата Сообщение от ValeryS Посмотреть сообщение
Цитата Сообщение от BonaBerry Посмотреть сообщение
А теперь я запуталась окончательно
по собственному опыту
наплюй
не подходи к задаче дня два
а потом напиши с нуля, не заглядывая в первое решение
и я тебе гарантирую, напишешь совершенно по другому
у тебя сейчас "Зашоривание", "зацикливание", назови как хочешь,
нужно отойти от задачи, чтобы взглянуть под другим углом
да, так и поступлю плюю на это задание инкрментом от min до max
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2014, 16:25
Привет! Вот еще темы с ответами:

Найти среди двузначных чисел такие, что квадрат числа равен кубу суммы цифр этого числа - C++
Найти среди двузначных чисел такие, что квадрат числа равен кубу суммы цифр этого числа. Помогите пожалуйста, как тут написать само...

Определить, равен ли квадрат заданного трехзначного числа кубу суммы цифр этого числа VS2010 - C++
тупая задача на новый лад - С++: Определить, равен ли квадрат заданного трехзначного числа кубу суммы цифр этого числа. Есть наметки,...

Определить порядок хранения байт 16-ричного числа - C++
Всем привет! Имеется следующий вопрос: написать программу, которая показывает порядок хранения байт 16-ричного числа. Как это сделать?

определить равен ли квадрат заданного двухзначного числа - C++
определить,равен ли квадрат заданного двухзначного числа (введенного с клавиатуры)кубу суммы цифр этого числа.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.03.2014, 16:25
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru