Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
rocketsolid
8 / 8 / 1
Регистрация: 31.10.2008
Сообщений: 41
#1

считать из файла и определить является прочитанное числом - C++

16.01.2010, 19:40. Просмотров 442. Ответов 8
Метки нет (Все метки)

Здравствуйте. В общем нужно произвести чтение из файла и определить является ли прочитанное числом в общем случае и целым в частности. погуглив наткнулся на функцию isdigit с помощью которой это можно сделать, но не работает. А как определить целое или нет даже не знаю.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include<windows.h>
#include<ctype.h>
int main ()
{ 
  char x;
  FILE *fp;
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  fp=fopen("in.txt","r");
  if(!fp) {printf("file not found%s\n");return 1;} 
  fscanf(fp,"%d",&x);
  if (isdigit(x)) printf("число\n");
  else printf("символ\n");
fclose(fp);
return 0; 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2010, 19:40     считать из файла и определить является прочитанное числом
Посмотрите здесь:

C++ Определить, является ли введенная с клавиатуры строка вещественным числом
C++ Определить , является ли сумма элементов матрицы четным числом
C++ Определить, сумма цифр является четным или нечетным числом
C++ Определить, является ли введенный символ числом
Определить, является ли введённая с клавиатуры строка двоичным числом C++
Определить, является ли сумма цифр этого числа простым числом C++
C++ Определить количество пар чисел сумма которых является простым числом
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
16.01.2010, 20:02     считать из файла и определить является прочитанное числом #2
C
1
2
str=itoa(x);
if(str[i]==".")cout<<"neceloe";
kazak
3031 / 2352 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
16.01.2010, 20:23     считать из файла и определить является прочитанное числом #3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
char str[50];
int flag = 0, count = 0, i;
...
fscanf(fp, "%s", str);
for (i = 0; i < strlen(str); i++)
{
   if (!isdigit(str[i]) && str[i] != '.')
   {
      flag = 1;
   }
   if (str[i] == '.')
   {
      count++;
   }
 
}
if (flag || count > 1)
   printf ("nechislo\n");
else if (count == 1)
   printf("chislo, ne tsceloe\n");
else
   printf("chislo tsceloe\n");
правда не проверял.
rocketsolid
8 / 8 / 1
Регистрация: 31.10.2008
Сообщений: 41
17.01.2010, 13:53  [ТС]     считать из файла и определить является прочитанное числом #4
спасибо. проверил, работает корректно

Добавлено через 17 часов 20 минут
не подскажите как сюда добавить проверку на отрицательные значения? если в исходном файле записано например "-1", то выводится сообщение что введено не число
kazak
3031 / 2352 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
17.01.2010, 13:59     считать из файла и определить является прочитанное числом #5
if ((i != 0 && str[i] != '-') || (!isdigit(str[i]) && str[i] != '.'))
Вроде так
rocketsolid
8 / 8 / 1
Регистрация: 31.10.2008
Сообщений: 41
17.01.2010, 17:39  [ТС]     считать из файла и определить является прочитанное числом #6
можно вот так
C++
1
if (!isdigit(str1[i]) && str1[i] != '.' && str1[i] != '-')
kazak
3031 / 2352 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
17.01.2010, 17:42     считать из файла и определить является прочитанное числом #7
Попробуй с таким условием загнать программе число 123-134-321-3.65 допустим)
rocketsolid
8 / 8 / 1
Регистрация: 31.10.2008
Сообщений: 41
17.01.2010, 17:49  [ТС]     считать из файла и определить является прочитанное числом #8
ничего хорошего не получилось))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2010, 18:16     считать из файла и определить является прочитанное числом
Еще ссылки по теме:

Определить, является ли произведение всех элементов массива трехзначным числом C++
Определить, является ли произведение всех элементов массива трехзначным числом C++
C++ Определить является ли сумма элементов массива четным числом
C++ Определить является ли сумма элементов заданного массива чётным или нечётным числом
Определить, является ли сумма элементов двухзначным числом C++

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

Или воспользуйтесь поиском по форуму:
Day
1152 / 957 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
17.01.2010, 18:16     считать из файла и определить является прочитанное числом #9
Попробуй так
Код
int y, d;
d = 0;
 while ((y=getc(fp))!=EOF) {
    if (d==0 && y=='.') d = 1;
    else if (y<'0' || y>'9') {
         //  это уже не число
         break;
    }
    if (d) {
       // число действительное
    }
    if (y!=EOF) {
       // Не весь файл является числом
    }
 }
Надо еще пробелы в начале пропустить и знак (+-)
Дерзайте, юноши!
Yandex
Объявления
17.01.2010, 18:16     считать из файла и определить является прочитанное числом
Ответ Создать тему
Опции темы

Текущее время: 15:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru