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

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

Войти
Регистрация
Восстановить пароль
 
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
#1

Есть ли буква в 16-ичной записи целого числа - C++

26.12.2010, 18:14. Просмотров 501. Ответов 4
Метки нет (Все метки)

Спешу.Пишу кусок задания.1)Составить логическую функцию которая для одного целого числа определяет есть ли буква в его 16ичной записи ;2)составить функцию для вывода матрицы так чтобы ее левый верхний треугоьник был закрашен каким-то цветом.
Помогите люди добрые!Особенно 1ый пункт....ну вообще не выходит...Мне это попалось на контрольной...я не решила....теперь хочу узнать как.Помогите пожалуйста!

Добавлено через 5 минут
нашла вот что
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function _10toR(x:longint;R:word):string;
var x,ost:longint;
    s,st,chislo:string;
begin
     repeat
           ost:=x mod R;
           x:=x div R;
           if ost>9 then st:=chr(ord('A')-10+ost)
           else str(ost,st);
           s:=s+st;
     until x=0;
     for i:=1 to length(s) do
     chislo:=chislo+s[length(s)-i+1];
     _10toR:=chislo;
end;

но для меня тут почти ничего не понятно...можно как-то попроще...как для чайников...пожалуйста!!!

Добавлено через 1 минуту
я так понимаю..типа если остаток от 10 до 15 то буква есть....

Добавлено через 18 минут
ну например 100/16 = 6 + 4(остаток) - нет буквы.....если дано число 10 - то буква A...ну да 10/16=0+10....235/16=14+11(остаток)...11-В....значит есть буква...336/16=21+0...значит нет буквы.
я правильно рассуждаю?

Добавлено через 1 час 25 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 #include <iostream>
using namespace std;
bool letter( int a)
{while(a)
{int k=a%16;
a/=16;
if (k>=10) return true;}
return false;}
void main()
{ int n;
cout<<"enter n"<<endl;
cin>>n;
bool d=letter(n);
if (d) cout<<"letter exist"<<endl;
else cout<<"no letters"<<endl;
}
Добавлено через 1 минуту
Вот че вышло....как-то оно не совсем правильно мне кажется работает...посмотрите пожалуйста!

Добавлено через 2 часа 35 минут
Неужели никто не может посмотреть и помочь....пожалуйста!люди!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2010, 18:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Есть ли буква в 16-ичной записи целого числа (C++):

Проверить, есть ли в записи числа m цифры, совпадающие с цифрами в записи числа n - C++
Помогите составить программу. Условие: Даны два натуральных числа m и n{m&lt; 9999, n &lt; 9999). Проверить, есть ли в записи числа m...

Есть в записи числа m цифры, которые совпадают с цифрами в записи числа n - C++
Дано два натуральных числа n(&lt;=9999) и m (&lt;=9999). Проверить, есть в записи числа m цифры, которые совпадают с цифрами в записи числа n. ...

Удалить из записи целого числа цифры 0 и 5 - C++
не получается справиться с одной задачей Дано натуральное число n (n&lt;=9999). Выбросить из записи целого числа n цифры 0 и 5, оставив...

Извлечь из записи целого числа нули - C++
Извлеч из записи целого числа нули

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

Выделить подстроку, которая соответствует записи целого числа - C++
Не могли бы помочь разобраться с кодом программы (комментариями). Задача: Дана строка, состоящая из букв, цифр, запятых, точек, знаков...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IchMors
97 / 93 / 4
Регистрация: 16.05.2010
Сообщений: 310
26.12.2010, 19:28 #2
barlog, немного не правильно рассуждаете... вот мой вариант:

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
bool letter(int a)
{
    int temp;
    
    do
    {
        temp = a & 15;
        a = a >> 4;
        if(temp > 9) return true;
    }while(a);
    return false;
}
 
int main()
{
    int n;
    cout << "enter n\n";
    cin >> n;
    if(letter(n)) cout << "letter exist\n";
    else cout << "no letters\n";
 
    _getch();
    return 0;
}
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
26.12.2010, 19:59  [ТС] #3
IchMors, я у вас вообще ничего не понима...почему вы вообще делите на 15!у нас же 16ичная система
IchMors
97 / 93 / 4
Регистрация: 16.05.2010
Сообщений: 310
26.12.2010, 20:09 #4
barlog, тут всё хитро я не делю & - это битовая операция
тут используется принцип приведения из двоичного в 16-ричный код)
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
bool letter(int a)
{
        int temp;
        
        do
        {
                temp = a & 15;// в темп записывается результат операции И, то есть остаются только младшие 4 бита, а 15 в двоичной = 0000 0000 0000 1111
                a = a >> 4;// "а" сдвигаются влево на 4 бита так как они уже не нужны
                if(temp > 9) return true;// сами понимаете)))
        }while(a);
        return false;
}
 
int main()
{
        int n;
        cout << "enter n\n";
        cin >> n;
        if(letter(n)) cout << "letter exist\n";
        else cout << "no letters\n";
 
        _getch();
        return 0;
}
берется 10 число и разбиваются на блоки бит по 4:
dec = 123; hex = 7B; bin = '0111' '1011'
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
26.12.2010, 22:56  [ТС] #5
вот...помогите разобраться с выводом цветом треугольника матрицы...типа вся должна выводиться а толко треугольник ее другим цветом...у меня выводиться тока треугольник...не вся матриица.Помогите пожалуйста!

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
//---------------------------------------------------------------------------
 
#pragma argsused
 
const n=3;
 
 
 void  MyIn ( int M[][n])
{Randomize();
 for ( int i=0; i<n; i++)
      { cout<<endl;
      for (int j=0; j<n; j++)
               {   M[i][j]=random(10)+1;
                  cout<<M[i][j]<<"  ";
                  }
 
     }
 }
 
 
 
void  MyOut( int M[][n], int c1)
{Randomize();
 for ( int i=0; i<n; i++)
      { cout<<endl;
 
      for ( int j=i; j<n; j++)
               {   textcolor(c1);
                  M[i][j]=random(18)+1;
                  cprintf("%6d" , M[i][j]);
                  }
 
     }
 }
 
 
 
 
 
 
 
 
 
int Letter( int a)
{while(a)
{int k=a%16;
a/=16;
if (k>=10) return true;}
return false;}
 
 
int main()
{
 
int A[n][n];
  
 
  cout<<endl;
    cout<<endl;
    MyOut( A, 10) ;
  int d;
  int kol;
   kol=0;
 for(int i=0;i<n;i++)
   for(int j=i;j<n;j++)
   {   d=Letter(A[i][j]) ;
   if ( d )
    kol+=1   ;
   }
 
 cout<<endl<<"kol="<<kol;
 
getch();
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2010, 22:56
Привет! Вот еще темы с ответами:

Приписать единицу в начало записи целого пятизначного числа - C++
Дано натуральное число n (n&lt;9999). Приписать единицу в начало записи числа n QtCreator

Подсчитать количество цифр в десятичной записи целого неотрицательного числа - C++
Подсчитать количество цифр в десятичной записи целого неотрицательного числа n.

Строки. Выделить подстроку, которая соответствует записи целого числа. - C++
Дана строка, состоящая из букв, цифр, запятых, точек, знаков &quot;+&quot; и &quot;-&quot;. Выделить подстроку, которая соответствует записи целого числа (т.е....

Напечатать в обратном порядке цифры десятичной записи целого не минусового числа N. - C++
Помогите с программой Рекурсивно описать процедуру RevPrint (N), которая печатает в обратном порядке цифры десятичной записи целого не...


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

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

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