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

Обработка вещественных чисел - C++

Восстановить пароль Регистрация
 
m9co038
1 / 1 / 0
Регистрация: 27.11.2010
Сообщений: 34
05.06.2011, 14:02     Обработка вещественных чисел #1
Дан текстовый файл, каждая строка которого содержит изображения нескольких чисел, разделенные пробелами (вещественные числа имеют ненулевую дробную часть). Создать файл вещественных чисел, содержащий (в том же порядке) все числа из исходного файла, имеющие ненулевую дробную часть.

Вот попытка, помогите что не так.

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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
int main()
{
char A[100],*p;
float i;
FILE *f1=fopen("A.txt","r");
FILE *f2=fopen("B.txt","w+");
if (f1==0)
{
        perror("error");
        system("pause");
        return 1;
}
fscanf(f1,"%f",&A);
p=strtok(A," ");
do
{
i=atof(p);
if (i-=floor(i)!=0)
fprintf(f2,"%f",i);
}
while (p);
 
        fclose(f1);
        fclose(f2);
        system("pause");
        return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2011, 14:02     Обработка вещественных чисел
Посмотрите здесь:

В последовательности вещественных чисел подсчитать произведение чисел, кратных 3 C++
Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20. C++
C++ Вывод чисел, стоящих на четных местах, в десятичной с.с., а чисел, стоящие на нечетных местах, как вещественных с одним знаком после запятой
C++ Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20
C++ Одномерный массив (Ввести массив из 10 вещественных чисел.Найти сумму чисел,стоящих на чётных местах)
C++ Дано n вещественных чисел, которые вводятся с клавиатуры. Вычислить сумму чисел, кратных 3
Преобразовать одномерный массив вещественных случайных чисел в массив целых чисел C++
Обработка двумерного массива вещественных чисел C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
05.06.2011, 14:08     Обработка вещественных чисел #2
Цитата Сообщение от m9co038 Посмотреть сообщение
fscanf(f1,"%f",&A);
1) fgets()

Цитата Сообщение от m9co038 Посмотреть сообщение
} while (p);
2)перед этим p = strtok(NULL, " "); забыл


Цитата Сообщение от m9co038 Посмотреть сообщение
i=atof(p); if (i-=floor(i)!=0)
3) есть такая функция modf() - возвращает дробную часть

Цитата Сообщение от m9co038 Посмотреть сообщение
fprintf(f2,"%f",i);
4) пробел забыл между числами. я так вижу ты пишешь в файл все подряд, без сохранения '\n'.
тогда нет смысла вообще в fgets() , а можно просто while (!feof(...)) fscanf(...)
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
05.06.2011, 14:10     Обработка вещественных чисел #3
Цитата Сообщение от m9co038 Посмотреть сообщение
содержит изображения нескольких чисел
щито?

И зачем такие сложности? Проверку, является ли дробная часть числа с плавающей запятой - нулевой, можно сделать так:
C++
1
2
3
4
5
6
7
8
9
10
#defile eps 0.0000001
 
float a;
 
//...
 
if (a - (float) ((int) a) > eps) 
  cout << "После запятой - не ноль";
else
  cout << "После запятой - ноль";
Yandex
Объявления
05.06.2011, 14:10     Обработка вещественных чисел
Ответ Создать тему
Опции темы

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