26.10.2020, 16:04 [+3 UTC]
в нашей команде: 4 793 чел. | участники онлайн: 8 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.93 23.10.2020
JS 1.48 | CSS 3.42

Общие новости:
09.10.2020, 16:55

Форум:
23.10.2020, 12:41

Последний вопрос:
26.10.2020, 15:23
Всего: 153100

Последний ответ:
25.10.2020, 12:54
Всего: 260506

Последняя рассылка:
26.10.2020, 14:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
23.07.2019, 20:13 »
dar777
Это самое лучшее решение! [вопрос № 196005, ответ № 278420]
26.10.2009, 14:41 »
Migalek
Спасибо за оперативность! [вопрос № 173704, ответ № 255868]
Наши встречи:

РАЗДЕЛ • С / С++

Создание программ на языках C и C++.

[администратор рассылки: Андрей Кузнецов aka Dr_Andrew (Старший модератор)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей Владимирович
Статус: Старший модератор
Рейтинг: 478
Gluck
Статус: 3-й класс
Рейтинг: 191
Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 133

Перейти к консультации №:
 

Консультация онлайн # 198424
Раздел: • С / С++
Автор вопроса: CTRL+ALT+DEL (Посетитель)
Отправлена: 30.04.2020, 12:38
Поступило ответов: 2

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Тоже на языке С составить программу: Дан текст. Определить, является ли он правильной десятичной записью целого числа.

Состояние: Консультация закрыта

Ответ # 279782 от solowey (Профессионал)

Здравствуйте, CTRL+ALT+DEL!
Вот возможный вариант:

#include <stdio.h>
#include <stdlib.h>

void CheckStringAsInt(char *text)
{
    printf("Check string %s\n", text);

    for (int i = 0; text[i] != '\0'; i++)
    {
        if (i == 0 && (text[i] == '-' || text[i] == '+'))
            continue;

        if ((int)text[i] < 48 || (int)text[i] > 57) // проверяем, что это число от 0 до 9
        {
            printf("String is not integer\n\n");
            return;
        }
    }

    printf("String is integer\n\n");
}

int main()
{
    char *text = "-100";
    CheckStringAsInt(text);

    text = "+100";
    CheckStringAsInt(text);

    text = "1234567890";
    CheckStringAsInt(text);

    text = "12345678901234567890";
    CheckStringAsInt(text);

    text = "123456d";
    CheckStringAsInt(text);

    text = "test";
    CheckStringAsInt(text);

    scanf("%s", &text);

    return 0;
}


Консультировал: solowey (Профессионал)
Дата отправки: 30.04.2020, 14:24

5
Спасибо!
-----
Дата оценки: 30.04.2020, 14:27

Рейтинг ответа:

+3

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 279783 от var (7-й класс)

Здравствуйте, CTRL+ALT+DEL!

Не очень лаконично, но с моей точки зрения наглядно:

#include <stdio.h>

int main()
{
    char str[101];
    int i=0;
    printf("Введите десятичное целое число: ");
    scanf("%100s",str);

    /* цикл по символам введенной строки */
    while(str[i])
    {
        switch(str[i])
        {
        case '-':
            /* знак минус допустим только первым и не единственным символом */
            if( ! (i==0 && str[1]) )
            {
                printf("Error");
                return 1;
            }
            break;
        case '0':
            /* Знак 0 допустим только единственным символом, либо после другой цифры */
            if( i==0)
            {
                if(str[1])
                {
                    printf("Ошибка ввода.");
                    return 1;
                }
            }
            else
            {
                if(str[i-1]=='-')
                {
                    printf("Ошибка ввода.");
                    return 1;
                }
            }
            break;
        default:
            /* В остальных случаях допустима только цифра */
            if(str[i]<'0' || str[i]>'9')
            {
                printf("Ошибка ввода.");
                return 1;
            }
            break;
        }
        i++;
    }
    printf("Верная запись целого числа.");
    return 0;
}


Консультировал: var (7-й класс)
Дата отправки: 30.04.2020, 15:45

Рейтинг ответа:

+1

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.


главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.15326 сек.

2001-2020, Портал RFPRO.RU
Калашников О.А.  |  Гладенюк А.Г.
7.93    23.10.2020
JS 1.48 | CSS 3.42