С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 02.11.2022
Сообщений: 25
1

Сделать проверку, что вводятся именно целые числа

08.03.2023, 23:25. Показов 840. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
нужно сделать прогу которая на вход принимает два целых числа. считает плюс, минус, деление и умножение. Но нужно предусмотреть проверку на ввод только целых чисел (т.е. является введение целым числом, а не дробным или символами)
все эти операции я должен провести с целыми числами.

Ответ не должен заканчиваться пробелом. надо предусмотреть обработку деления на ноль. В случае любой ошибки вывести n/a.

можно использовать только библиотеку stdio.h

не получается сделать проверку на то, чтобы вводимые числа были целыми

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 <stdio.h>
 
int sum(int a, int b);
int minus(int a, int b);
int multi(int a, int b);
int del(int a, int b);
 
int main() {
    int x, y;
    scanf("%d %d", &x, &y);
    if (x % 1 == 0 && x % 1 == 0) {
        if (y != 0) {
            printf("%d %d %d %d", sum(x, y), minus(x, y), multi(x, y), del(x, y));
        }
        else {
            printf("%d %d %d %s", sum(x, y), minus(x, y), multi(x, y), "n/a");
        }
    }
    else {
        printf("%s", "n/a");
    }
}
 
int sum(int a, int b) {
    return (a + b);
}
int minus(int a, int b) {
    return(a - b);
}
int multi(int a, int b) {
    return(a * b);
}
int del(int a, int b) {
    return(a / b);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.03.2023, 23:25
Ответы с готовыми решениями:

Как сделать проверку на целые числа и вывести их количество
Есть числа 1 2 5 10.2 13.3 Как сделать проверку какие из них целые и вывести их количество,...

Вводятся целые числа A и B. Выведите все двузначные числа от A до B, которые делятся на 15
Вводятся целые числа A и B. Выведите все двузначные числа от A до B, которые делятся на 15. ...

Вводятся три числа A, B, C. Выведите все целые числа от наименьшего из них до наибольшего
Вводятся три числа A, B, C. Выведите все целые числа от наименьшего из них до наибольшего. Сделать...

С клавиатуры вводятся целые числа. Вывести все числа и количество элементов, больших 10
С клавиатуры вводятся целые числа. Признак конца ввода – введено число -1. Вывести все числа и...

Вводятся произвольные целые числа, определить количество четных чисел введенных до ввода числа кратного k
вводятся произвольные целые числа. определить количество четных чисел введенных до ввода числа...

4
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
08.03.2023, 23:31 2
Цитата Сообщение от hyplep Посмотреть сообщение
Но нужно предусмотреть проверку на ввод только целых чисел (т.е. является введение целым числом, а не дробным или символами)
все эти операции я должен провести с целыми числами.
Цитата Сообщение от hyplep Посмотреть сообщение
scanf
scanf
Return value
1-3) Number of receiving arguments successfully assigned (which may be zero in case a matching failure occurred before the first receiving argument was assigned), or EOF if input failure occurs before the first receiving argument was assigned.
Плюс считай следующий символ, он должен быть из категории whitespace или EOF.
0
1 / 1 / 0
Регистрация: 02.11.2022
Сообщений: 25
08.03.2023, 23:50  [ТС] 3
а если я делаю x и y типа float, и делаю проверку x == int(x) && x == int(y)
почему так не работает ?
0
Вездепух
Эксперт CЭксперт С++
12794 / 6671 / 1795
Регистрация: 18.10.2014
Сообщений: 16,890
09.03.2023, 00:47 4
Цитата Сообщение от hyplep Посмотреть сообщение
а если я делаю x и y типа float, и делаю проверку x == int(x) && x == int(y)
почему так не работает ?
Где код? Что такое "не работает"?
0
Диссидент
Эксперт C
27707 / 17325 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
09.03.2023, 15:57 5
Цитата Сообщение от hyplep Посмотреть сообщение
проверку на ввод только целых чисел (т.е. является введение целым числом, а не дробным или символами)
тогда придется вводить строки и проверять, что в строке нет ничего, кроме цифр НУ и ече может быть, знаков "+" , "-" и пробелов.
Такую проверку можно сделать так
C++
1
2
3
4
5
6
bool prov*char *s) {
 static char cf = " +-0123456789";
 for(char *p = s; *p; p++)
    if (strchr(cf, *p)==NULL0 return false;
 return true;
}
Это простейшее. Не учитывает случаев "++123+456-789"
Если и их надо учитывать, можно код слега модифицировать. Кроме того попутно с проверкой можно преобразовать строку ч число.
Пробелы внутри числа я бы разрешил. При записи больших чисел удобно разбивать их на триады типа "3 228 800"
Но тут надо определить, что есть запись целого числа.
0
09.03.2023, 15:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.03.2023, 15:57
Помогаю со студенческими работами здесь

Последовательно вводятся целые положительные числа. Для каждого числа выяснить, является ли оно факториалом
Последовательно вводятся целые положительные числа. Для каждого числа выяснить, является ли оно...

Последовательно вводятся целые положительные числа. Для каждого числа выяснить, является ли оно факториалом какого-то чи
Последовательно вводятся целые положительные числа. Для каждого числа выяснить, является ли оно...

С клавиатуры вводятся целые числа. Признак конца ввода – введено число -1. Вывести все числа и количество элем
С клавиатуры вводятся целые числа. Признак конца ввода – введено число -1. Вывести все числа и...

Вводятся целые числа до первого числа, которое меньше двух. Определить, сколько простых чисел было введено
Прошу помочь написать программу,условие: Вводятся целые числа до первого числа, которое меньше...

С клавиатуры вводятся целые числа. Признак конца ввода – ноль. Записать в строку эти числа как вещественные в нормализов
Нельзя использовать функции преобразования типов. Напишите вот эту часть задачи: С клавиатуры...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru