Определить, содержит ли заданная строка двоичное, восьмеричное, десятичное или шестнадцатеричное число - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Ввести в память ПЗВМ с клавиатуры строку. В строке не более 80 символов. Определить, содержит ли заданная строка двоичное, восьмеричное, десятичное или шестнадцатеричное число. Если да, то вывести информацию на экран. Нет, то выдать сообщение, что не содержит. Например: 111011 — двоичное, восьмеричное, десятичное или шестнадцатеричное число; 2173145 — восьмеричное, десятичное или шестнадцатеричное число; 927888 — десятичное или шестнадцатеричное число; 2АС378 — шестнадцатеричное число; АаZ318 — не число.

Решение задачи: «Определить, содержит ли заданная строка двоичное, восьмеричное, десятичное или шестнадцатеричное число»

textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
 
int main()
{
    char s[100];
    gets(s);
    int type = 0;
    for (char *p = s; *p; p++)
    {
        int t;
        switch (tolower(*p))
        {
            case '0':
            case '1':
                t = 2; break;
 
            case '2':
            case '3':
            case '4':
            case '5':
            case '6':
            case '7':
                t = 8; break;
 
            case '8':
            case '9':
                t = 10; break;
 
            case 'a':
            case 'b':
            case 'c':
            case 'd':
            case 'e':
            case 'f':
                t = 16; break;
 
            default:
                t = 666;
        }
 
        if (t > type)
            type = t;
    }
 
    switch (type)
    {
        case 2:  puts("Base: 2 or 8 or 10 or 16"); break;
        case 8:  puts("Base: 8 or 10 or 16"); break;
        case 10: puts("Base: 10 or 16"); break;
        case 16: puts("Base: 16"); break;
        default: puts("Wrong number"); break;
    }
 
    return 0;
}

Объяснение кода листинга программы

В этом коде определена функция main(), которая получает строку от пользователя с помощью функции gets() и сохраняет её в массиве s. Затем инициализируется переменная type значением 0. Далее, в цикле for перебираются все символы строки. Для каждого символа проверяется его значение в нижнем регистре с помощью функции tolower(). В зависимости от значения символа, переменной t присваивается соответствующее значение: 2 для '0' и '1', 8 для '2' - '7', 10 для '8' и '9', 16 для 'a' - 'f'. Если значение переменной t больше значения переменной type, то type присваивается значение t. После цикла, в зависимости от значения переменной type, выводится соответствующее сообщение с помощью функции puts(). В конце функции main() возвращается 0, что означает успешное завершение работы программы.

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы