С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

16.01.2010, 19:40. Просмотров 461. Ответов 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; 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2010, 19:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос считать из файла и определить является прочитанное числом (C++):

Определить, является ли введенный символ числом - C++
Написать программу, которая вводит один символ с клавиатуры и выводит сообщение, является ли введенный символ числом (Коды числовых...

Определить, является ли сумма элементов двухзначным числом - C++
Дана последовательность целых чисел.Определить, является ли сумма элементов двухзначным числом.(Задачи нужно решить двумя способами,...

Определить, является ли введенная с клавиатуры строка вещественным числом - C++
Написать программу, которая проверяет, является ли введенная с клавиатуры строка вещественным числом. Если является, то программа должна...

Определить является ли сумма элементов массива четным числом - C++
Здравствуйте, снова мне нужна 2 программа хотя нет еще 2, если вам надоело можете не отвечать. Для целочисленного массива Y(Y0,Y1,.....,Yn)...

Определить, является ли введённая с клавиатуры строка двоичным числом - C++
Задание: Напишите программу, которая определяет, является ли введённая с клавиатуры строка двоичным числом. Люди помогите пожалуйсто...

Определить , является ли сумма элементов матрицы четным числом - C++
для заданной целочисленной матрицы A (N,M) определить является ли сумма ее элементов четным числом и вывести на печать соответствующий текст

8
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";
1
kazak
3050 / 2371 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
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");
правда не проверял.
1
rocketsolid
8 / 8 / 1
Регистрация: 31.10.2008
Сообщений: 41
17.01.2010, 13:53  [ТС] #4
спасибо. проверил, работает корректно

Добавлено через 17 часов 20 минут
не подскажите как сюда добавить проверку на отрицательные значения? если в исходном файле записано например "-1", то выводится сообщение что введено не число
0
kazak
3050 / 2371 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
17.01.2010, 13:59 #5
if ((i != 0 && str[i] != '-') || (!isdigit(str[i]) && str[i] != '.'))
Вроде так
0
rocketsolid
8 / 8 / 1
Регистрация: 31.10.2008
Сообщений: 41
17.01.2010, 17:39  [ТС] #6
можно вот так
C++
1
if (!isdigit(str1[i]) && str1[i] != '.' && str1[i] != '-')
0
kazak
3050 / 2371 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
17.01.2010, 17:42 #7
Попробуй с таким условием загнать программе число 123-134-321-3.65 допустим)
0
rocketsolid
8 / 8 / 1
Регистрация: 31.10.2008
Сообщений: 41
17.01.2010, 17:49  [ТС] #8
ничего хорошего не получилось))
0
Day
1159 / 964 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
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) {
       // Не весь файл является числом
    }
 }
Надо еще пробелы в начале пропустить и знак (+-)
Дерзайте, юноши!
0
17.01.2010, 18:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2010, 18:16
Привет! Вот еще темы с ответами:

Определить, является ли произведение всех элементов массива трехзначным числом - C++
Помогите пожалуйста!!! Определить, является ли произведение всех элементов массива трехзначным числом. Возвращать из функции логическое...

Определить, сумма цифр является четным или нечетным числом - C++
С клавиатуры вводится натуральное число. Определить, сумма его цифр является четным или нечетным числом.

Определить, является ли сумма номеров всех квартир четным числом - C++
В подъезде жилого дома имеется п квартир, пронумерованных подряд, начиная с номера а. Определить, является ли сумма номеров всех квартир...

Определить, является ли сумма цифр этого числа простым числом - C++
Помогите решить задание в С++ Дано натуральное число. Определить, является ли сумма цифр этого числа простым числом


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.