15.08.2020, 20:14 [+3 UTC]
в нашей команде: 4 696 чел. | участники онлайн: 4 (рекорд: 21)

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

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

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.90 (14.08.2020)
JS-v.1.45 | CSS-v.3.39

Общие новости:
13.04.2020, 00:02

Форум:
02.08.2020, 11:21

Последний вопрос:
15.08.2020, 16:47
Всего: 152781

Последний ответ:
15.08.2020, 18:10
Всего: 260361

Последняя рассылка:
14.08.2020, 00:15

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

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

Наша кнопка:

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

Отзывы о нас:
26.06.2012, 12:15 »
Александр Сергеевич
Спасибо!!! Все правильно!!! [вопрос № 186416, ответ № 271307]
15.12.2015, 09:32 »
Николай Дубровцев
Спасибо за ответ, который мне, человеку со средним образованием, совершенно не понятен. Если я ничего не путаю, то одноименные заряды ведут себя как толпа пенсионеров на почте - расталкивают друг друга. При тех перепадах давлений, что творятся на Солнце, трудно представить ламинарный поток заряженных частиц по определенному проводящему слою, который меняется раз в 22 года. [вопрос № 188396, ответ № 273050]

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

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

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

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

Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 339
Gluck
Статус: 2-й класс
Рейтинг: 55
solowey
Статус: Профессионал
Рейтинг: 53

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

Консультация онлайн # 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

[подробно]

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

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

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

Rambler's Top100

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

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

© 2001-2020, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.90 от 14.08.2020
Версия JS: 1.45 | Версия CSS: 3.39