Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 07.10.2024
Сообщений: 2

Проверка на целочисленность числа

07.10.2024, 22:59. Показов 2532. Ответов 20

Студворк — интернет-сервис помощи студентам
Здравствуйте, только начал изучать С++ и возник вопрос. Программа заполняет массив случайными числами, N - количество элементов массива. Необходимо проверить его на несколько параметров, проблема с проверкой введенного пользователем числа на целочисленность, проверка на тот случай, если пользователь введет с клавиатуры не целое число, например 2.2. Пытался несколькими способами -

C++
1
2
3
4
5
6
if (typeid(N) != typeid(int)) 
 { 
  cout << "Количество элементов массива должно быть целым числом." << endl; 
  return 1; 
 
 }
или

C++
1
2
3
4
5
6
switch(N)
    {
        case sizeof(N) != 4:
            cout << "введите целое число элементов массива";
        break;
    }
Однако корректно программа не работает, то переменные типа float не проходят проверку, то при вводе подходящего числа не составляется массив(например при вводе 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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream> 
#include <stdlib.h> 
#include <ctime> 
#include <typeinfo> 
 
using namespace std; 
int main() 
{ 
 setlocale(LC_ALL, "Rus"); // для корректного вывода русского языка 
 long N; // количество элементов массива 
 float* pt; // используется для доступа к элементам массива A по адресу, а не по индексу 
 srand(time(NULL)); 
 
 cout << "введите четное количество символов "; 
 
 cin >> N; // ввод числа 
 
 
 
 
 if (typeid(N) != typeid(int)) 
 { 
  cout << "Количество элементов массива должно быть целым числом." << endl; 
  return 1; 
 
 } 
  
 else if (N == 0) 
 { 
  cout << "количество элементов массива не может быть равно нулю \n "; 
  return 1; 
   
 } 
 else if (N < 0) 
 { 
  cout << "количество элементов массива не может быть отрицательным \n "; 
  return 1; 
   
 } 
  
 else if (N % 2 != 0) 
 { 
  cout << "количество элементов массива должно быть четным \n "; 
  return 1; 
   
 } 
 
 float* A = new float[N]; //  оператор new для динамического выделения памяти под массив элементов типа float 
  
 
 cout << "первоначальный массив \n"; 
 
 for (int i = 0; i < N; i++) 
 { 
   
  A[i] = (float)rand() / RAND_MAX; // заполнение массива случайными числами 
  cout <<  *(A + i) << endl; // вывод массива 
 } 
 
 pt = A; // присваивает указателю pt адрес начала массива A 
 
 for (int i = 0; i < N; i+=2) // цикл с шагом 2, для того, чтобы поменять местами каждую пару в массиве 
 { 
  float perv = *(pt + i); // временная переменная, в которую сохраняется значение первого элемента массива из пары 
  *(pt + i) = *(pt + i + 1); // первому элементу из двойки присваивается следующий элемент(меняет местами) 
  *(pt + i + 1) = perv; // присваиваем второму элементу из двойки значение первого 
 } 
 cout << "массив с условием \n"; 
 
 for (int i = 0; i < N; i++) 
 { 
  cout << *(pt + i) << endl; // вывод массива с условием 
 } 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.10.2024, 22:59
Ответы с готовыми решениями:

Проверка на целочисленность
Доброго времени суток, интересует такой нюанс, как сделать проверку на ввод пользователем только целых значений? Т.е. если пользователь...

Написать проверку на целочисленность
Помогите пожалуйста, нужно сделать перед вводом диапазона проверку на целочисленность. Или же чтобы программа генерировала и дробные числа....

Проверка на целочисленность...
Доброе утро ребята!:yes: Проверка на целочисленность вот так работает: using namespace std; int a; a = 15; if ( a%3==0) ...

20
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38210 / 21143 / 4313
Регистрация: 12.02.2012
Сообщений: 34,756
Записей в блоге: 14
11.10.2024, 09:17
Студворк — интернет-сервис помощи студентам
goodid, я невнимательно прочитал твой вопрос... Ты зря волнуешься. Если переменная описана как int, то она и введется как целая. Совершенно нет необходимости проверять дробную часть.

C++
1
2
3
4
  int n;
 
  std::cin >> n;
  std::cout << n;
Выполни этот код и убедись, что дробная часть просто проигнорируется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.10.2024, 09:17

Работа с файлами. Проверка документа на целочисленность в JAVA
Возможно, я создал тему не там, пардоньте... Помогите решить заново или подправить мой код. Задача звучит так: Выяснить,...

Вычилить множители числа и проверить на целочисленность
Нужна программа, вычиляющая множители числа и проверяющая его на целочисленность, всё готово, но не знаю, как совместить: while True: ...

Доказать целочисленность выражения
Помогите, пожалуйста, с решением задачи. Заранее спасибо. Докажите, что если n – целое число, то ((n)^2!)/ ((n!)^n+1) – целое, а если m...

Написать проверку переменной на целочисленность
Есть цикл for в котором переменная float i с шагом 0.2. как поставить условие, что если число int, т.е if(i=1 || i=2 и тд) то что-то...

Написать программу, проверяющую целочисленность введенной строки с клавиатуры
написать программу проверяющую целочисленность введенной строки с клавиатуры


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

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru