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

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

Войти
Регистрация
Восстановить пароль
 
 
Boscow
0 / 0 / 0
Регистрация: 17.04.2015
Сообщений: 8
#1

Проверить, является ли введенное число шестнадцатеричным - C++

17.04.2015, 18:02. Просмотров 557. Ответов 17
Метки нет (Все метки)

Всем добрый день! Суть задачи:
Составить программу, которая проверяет , является ли введенное число шестнадцатеричным(количество символов не более 6) ..

Я написал код, который успешно выполняет условие задачи. Но я не могу разобраться с ограничением в 6 символов. Я организовал ввод через цикл, но например если ввести больше 6 чисел, то он просто возьмёт первые 6, а мне нужно, чтобы программа выдавала сообщение типа "Вы ввели более 6 символов , повторить ввод? y/n" . Подскажите советом, спасибо!
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
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "rus");
char stroka[255];
int z, i=0, n, x=0,sim=0;
cout<<" Введите строку >> \t \n";
//-----------------------------
for(int sim=0; sim<=5;sim++){
cin>>stroka[sim];}
n=strlen(stroka);
while (i<n) 
{
z=stroka[i];
for (int f=48; f<58; f++)
{ if (z==f) x++; }
for (int g=65; g<71; g++)
{ if (z==g) x++; }
i++;
if (x!=i) cout<<stroka<<" не шестнадцетеричное число  ";
else cout<<stroka<<" - шестнадцетеричное число  ";
system("pause");
return 0;
}
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2015, 18:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверить, является ли введенное число шестнадцатеричным (C++):

Проверить является ли введенное число простым - C++
Сделал программу. Считающую простые числа. По заданию мне нужно сделать их с помощь цикла while без for. можно использовать if else. Решил...

Проверить, является ли введенное число палиндромом - C++
Проверьте, является ли введенное число палиндромом. Например, 12321, 2442 - палиндромы. В С++.

Проверить является ли введенное число точным квадратом - C++
Помогите пожалуйста Проверить введенное число точным квадратом. с помощью функций Добавлено через 19 секунд является ли введеное...

Проверить, является ли введенное с клавиатуры число простым - C++
помогите составить программу в С++ с использованием цикла for Составить программу которая определяет является ли введенное число с...

Проверить является ли введенное слово или число палиндромом - C++
Требуется написать функцию, которая проверяет введенное слово или число, на то что оно является палиндромом. ОБЯЗАТЕЛЬНО! Нельзя...

Проверить, является ли введенное пользователем целое число четным - C++
1.Разработать программный модуль для решения следующей задачи, используя предложение if. : -Написать программу, которая проверяет,...

17
LaHaH
17 / 17 / 13
Регистрация: 17.03.2015
Сообщений: 108
17.04.2015, 18:35 #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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <string>
 
using namespace std;
 
bool IsHex(string str)
{
    for (int i = 0; i < str.size(); i++)
    {
        if ((str[i]>'f')||
            (str[i]<'0')||
            ((str[i]>'9') && (str[i]<'A')) ||
            ((str[i]>'F') && (str[i]<'a'))) return false;
 
    }
    return true;
}
 
void main()
{
    setlocale(0,"rus");
    char isContinue='y';
    while ('y'==isContinue)
    {
        cout<<"Введите число"<<endl;
        string stroka;
        cin>>stroka;
        if (stroka.size()>6 || !IsHex(stroka))
        {
            cout<<stroka<<"-не шестнадцетеричное число"<<endl;
            cout<<"Повторить ввод(y/n)?"<<endl;
            cin>>isContinue;
        }
        else 
        {
            cout<<stroka<<"-шестнадцетеричное число"<<endl;
            cout<<"Повторить ввод(y/n)?"<<endl;
            cin>>isContinue;    
        }
    }
    cout<<"Всего хорошего!"<<endl;
}
как-то так.
0
Boscow
0 / 0 / 0
Регистрация: 17.04.2015
Сообщений: 8
17.04.2015, 20:06  [ТС] #3
Очень хороший вариант, спасибо! Но программа по прежнему не выдаёт сообщение, если число более 6 символов.
0
LaHaH
17 / 17 / 13
Регистрация: 17.03.2015
Сообщений: 108
18.04.2015, 12:13 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
#include <string>
 
using namespace std;
 
bool IsHex(string str)
{
    for (int i = 0; i < str.size(); i++)
    {
        if ((str[i]>'f')||
            (str[i]<'0')||
            ((str[i]>'9') && (str[i]<'A')) ||
            ((str[i]>'F') && (str[i]<'a'))) return false;
 
    }
    return true;
}
 
void main()
{
    setlocale(0,"rus");
    char isContinue='y';
    while ('y'==isContinue)
    {
        cout<<"Введите число"<<endl;
        string stroka;
        cin>>stroka;
        if (stroka.size()>6)
        {
            cout<<"Вы ввели более 6 символов!"<<endl;
            cout<<"Повторить ввод(y/n)?"<<endl;
            cin>>isContinue;
        }
        else if (!IsHex(stroka))
        {
            cout<<stroka<<"-не шестнадцетеричное число"<<endl;
            cout<<"Повторить ввод(y/n)?"<<endl;
            cin>>isContinue;
        }
        else 
        {
            cout<<stroka<<"-шестнадцетеричное число"<<endl;
            cout<<"Повторить ввод(y/n)?"<<endl;
            cin>>isContinue;    
        }
    }
    cout<<"Всего хорошего!"<<endl;
}
0
Boscow
0 / 0 / 0
Регистрация: 17.04.2015
Сообщений: 8
19.04.2015, 18:28  [ТС] #5
Спасибо!

Добавлено через 8 минут
Можете пояснить строчку "cin>>isContinue" . И что за инструмент bool?

Спасибо!
0
maks242
46 / 20 / 7
Регистрация: 01.11.2013
Сообщений: 245
Завершенные тесты: 4
19.04.2015, 19:11 #6
Boscow,
C++
1
 char isContinue='y';
Это ввод символа на место isContinue;
C++
1
cin>> isContinue;
bool это тип переменной которая имеет значение либо true либо false
0
Boscow
0 / 0 / 0
Регистрация: 17.04.2015
Сообщений: 8
20.04.2015, 13:10  [ТС] #7
То есть за место "isContinue" можно ввести что угодно? Это не функция?
0
LaHaH
17 / 17 / 13
Регистрация: 17.03.2015
Сообщений: 108
20.04.2015, 18:34 #8
Вместо isContinue, можно подставить любое условие выхода из цикла.
0
Boscow
0 / 0 / 0
Регистрация: 17.04.2015
Сообщений: 8
21.04.2015, 15:48  [ТС] #9
Я просто не пойму почему перед Continue стоит is, я не в одном своём справочнике не нашёл пояснение к этому. Поясните чайнику )
0
Почтальон
Модератор
461 / 389 / 74
Регистрация: 22.03.2015
Сообщений: 3,007
Завершенные тесты: 1
21.04.2015, 15:54 #10
Цитата Сообщение от Boscow Посмотреть сообщение
я не в одном своём справочнике не нашёл пояснение к этому. Поясните чайнику )
Правильно, и не найдете, потому что это переменная.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24617 / 16287 / 5002
Регистрация: 22.10.2011
Сообщений: 28,835
Записей в блоге: 5
21.04.2015, 15:56 #11
Почему ты назвал себя Boscow? Я ни в одном справочнике этому объяснения не нашел. Может это дело программиста, как называть переменную, и справочники тут ни при чем?
1
Boscow
0 / 0 / 0
Регистрация: 17.04.2015
Сообщений: 8
21.04.2015, 15:56  [ТС] #12
Я просто пытаюсь разобраться. Получается "isContinue" это просто переменная и она обозначена y(игриком)? То есть за место неё я могу написать "CtoZaxochy"?
0
HighPredator
5553 / 1866 / 348
Регистрация: 10.12.2010
Сообщений: 5,469
Записей в блоге: 3
21.04.2015, 16:01 #13
Альт способ:
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
#include <cstdio>
#include <iostream>
#include <string>
 
bool IsHex(const char* const str)
{
  bool res = true;
 
  unsigned int tmp = 0;
 
  if (strlen(str) > 6) res = false;
  else
  {
    if (sscanf(str, "%x", &tmp) != 1) res = false;
  }
 
  return res;
}
 
int main()
{
  std::string s;
  std::cin>>s;
 
  if (IsHex(s.c_str()))
  {
    std::cout<<"Is a hex"<<std::endl;
  }
  else
  {
    std::cout<<"Is not a hex"<<std::endl;
  }
 
  return 0;
}
1
LaHaH
17 / 17 / 13
Регистрация: 17.03.2015
Сообщений: 108
21.04.2015, 16:10 #14
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Boscow, т.к. я так же как и Вы, только изучаю программирование, я пытаюсь сразу выработать правильный стиль написания кода, для того, что бы его было легче читать и понимать.
C++
1
while('y'==isContinue)
по мнению автора книги, которую я читаю, считается хорошим стилем.
Может это и не совсем удачное описание переменной, но я же только учусь
0
Boscow
0 / 0 / 0
Регистрация: 17.04.2015
Сообщений: 8
21.04.2015, 16:16  [ТС] #15
А можете пояснить как работает это ?
C++
1
while('y'==isContinue)
Запутался что за что обозначается?
Спасибо , замучил уже я всех. Я вот Купил Самоучитель Шилдта , штудирую .
0
21.04.2015, 16:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2015, 16:16
Привет! Вот еще темы с ответами:

Проверить является ли введенное число суммой двух простых чисел - C++
Проверить является ли введенное число суммой двух простых чисел

Проверить, является ли введенная с клавиатуры строка шестнадцатеричным числом - C++
1. Написать программу, которая проверяет, является ли введенная с клавиатуры строка шестнадцатеричным числом.

Проверить, является ли введенное целое c++ - C++
Проверить, является ли введенное целое положительное число простым. Простым называется число, которое имеет только два делителя (единицу и...

Проверить, является ли введенное значение числом - C++
int tmp; cout&lt;&lt;&quot;vvedite chislo&quot;; cin&gt;&gt;tmp; как проверить является ли введенное значени числом?, а то если я ввожу букву то у меня...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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