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

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

Восстановить пароль Регистрация
 
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
26.12.2010, 18:14     Есть ли буква в 16-ичной записи целого числа #1
Спешу.Пишу кусок задания.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++
Определение кол-ва одинаковых цифр в записи целого числа C++
Извлечь из записи целого числа нули C++
Строки. Выделить подстроку, которая соответствует записи целого числа. C++
C++ Определить, есть ли среди цифр заданного целого трехзначного числа одинаковые.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IchMors
96 / 92 / 4
Регистрация: 16.05.2010
Сообщений: 307
26.12.2010, 19:28     Есть ли буква в 16-ичной записи целого числа #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  [ТС]     Есть ли буква в 16-ичной записи целого числа #3
IchMors, я у вас вообще ничего не понима...почему вы вообще делите на 15!у нас же 16ичная система
IchMors
96 / 92 / 4
Регистрация: 16.05.2010
Сообщений: 307
26.12.2010, 20:09     Есть ли буква в 16-ичной записи целого числа #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  [ТС]     Есть ли буква в 16-ичной записи целого числа #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;
}
Yandex
Объявления
26.12.2010, 22:56     Есть ли буква в 16-ичной записи целого числа
Ответ Создать тему
Опции темы

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