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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.63
Ryuujin
1 / 1 / 0
Регистрация: 07.12.2010
Сообщений: 13
#1

Считать последовательность вещественных чисел из файла - C++

15.12.2010, 08:18. Просмотров 3096. Ответов 10
Метки нет (Все метки)

Необходимо считать все числа из текстового файла, записать их в массив параллельно подсчитав их количество. Необходимо это сделать через ifstream.
Заранее благодарю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2010, 08:18
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Считать последовательность вещественных чисел из файла (C++):

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

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

Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20. - C++
Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20.

Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20 - C++
Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20. Добавлено через 53 секунды...

Преобразовать последовательность из n вещественных чисел a1, ..., an. - C++
Ребят подкиньте идей. Дана последовательность из n вещественных чисел a1, ..., an. Преобразовать ее по следующему правилу: а)...

Дана последовательность из n вещественных чисел - C++
Дана последовательность из n вещественных чисел. Если в результате замены отрицательных элементов последовательности их квадратами элементы...

10
accept
4831 / 3252 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
15.12.2010, 10:19 #2
C++
1
2
3
4
5
    double n;
    vector <double> v;
 
    while (fin >> n)
        v.push_back(n);
1
Ryuujin
1 / 1 / 0
Регистрация: 07.12.2010
Сообщений: 13
21.12.2010, 23:41  [ТС] #3
а от чего оно может входить в бесконечный цикл?

Добавлено через 28 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
vector<float> FindNum()
{   float fnum;
    vector <float> vdat;
    
    ifstream fin("diag_data.txt");
 
    while (fin >> fnum)
    {   vdat.push_back(fnum);
         //MessageBox(hwnd,"vdat.push_back(fnum);",NULL,MB_OK);
    }
    return vdat;
}
Собственно по MessageBox'у и определил, что оно из цикла не выходит. Подскажите, пожалуйста, из-за чего так.
0
accept
4831 / 3252 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
22.12.2010, 04:43 #4
пример
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <fstream>
#include <vector>
 
using namespace std;
 
int main(void)
{
    ifstream fin("file.txt");
    double n;
    vector <double> v;
 
    while (fin >> n)
        v.push_back(n);
 
    for (int i = 0; i < v.size(); i++)
        cout << v[i] << endl;
    
    return 0;
}
Код
[guest@localhost tests]$ ./t
0.5
0.6
0.7
[guest@localhost tests]$
даже для
Код
0.5
0.6
0.7
ab
0.8


надо перед return vdat; поставить cout << "loop ended" << endl;
0
Kenwood2010
48 / 59 / 7
Регистрация: 26.11.2010
Сообщений: 192
22.12.2010, 06:20 #5
Реализация на Turbo С++ 3.0
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
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <fstream.h>
 
int main()
{
char ch;
char mas[100] = "\0";
int count=0;
fstream f;
f.open ("C:\\read.txt", ios::in);  //îòêðûâГ*ГҐГ¬ ГґГ*éë äëÿ Г·ГІГҐГ*ГЁГї
if(!f) //åñëè ГґГ*éë Г*ГҐ Г*Г*éäåГ*
 {
 cout<<"Error!"<<endl;
 cout<<"Fail read.txt! not found!"<<endl;
 cout<<"Razmestite fail read.txt na disk C:\""<<endl;
 getch();
 exit(1);
 }
while (!f.eof())
{
ch = f.get();
if(ch!=' ' && ch!= '\n')
 {
  mas[count++] = ch;
 }
}
cout<<"Massiv soderjit:"<<endl;
cout<<mas;
cout<<endl<<"Kol-vo elementov = "<<count;
 
getch();
f.close();
return 0;
}
До выполнения:
содержимое файла read:
1 2 3 4 5 6 8 7
1 2 3 4 5 8 9 6
1
2
3
5

После выполнения:
Массив содержит:
12345687123458961235
Kol-vo elementov = 21
0
Ryuujin
1 / 1 / 0
Регистрация: 07.12.2010
Сообщений: 13
22.12.2010, 15:38  [ТС] #6
accept, у меня не консольное приложение. Значения из вектора используются для построения диаграммы. Потому cout, думаю, будет неуместен.
0
accept
4831 / 3252 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
23.12.2010, 06:46 #7
любое приложение можно запустить в консоли
для этого нажимаешь win+r и там cmd.exe, потом cd директория и имя программы
0
Ryuujin
1 / 1 / 0
Регистрация: 07.12.2010
Сообщений: 13
23.12.2010, 22:39  [ТС] #8
accept, можно и из консоли запустить, но зачем? Приложение-то работает с графическим окном, и консоль тут совершенно не нужна. Тем более результат от этого так и не изменился.
0
accept
4831 / 3252 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
24.12.2010, 04:30 #9
Цитата Сообщение от Ryuujin
Приложение-то работает с графическим окном
ты отлаживаешь программу, причём тут графическое окно, ты отлаживаешь вектор, который к окнам никакого отношения не имеет, цикл - тоже, файл - тоже
причём тут окна ?
будет нужно проверить пять разных состояний в программе, ты будешь пять окон запускать ?
и в каждое передавать всякую левую инфу
C
1
MessageBox(hwnd,"vdat.push_back(fnum);",NULL,MB_OK);
вот скажи, какое отношение NULL, MB_OK имеют к тому, что цикл не работает ?

а вот скажи, каким образом, если нужно вывести вектор и посмотреть, а что же там внутри, ты выведешь его весь в это окно ?
наверное никаким, потому что это просто неудобно, потому что на это уходит куча времени
0
Ryuujin
1 / 1 / 0
Регистрация: 07.12.2010
Сообщений: 13
24.12.2010, 20:49  [ТС] #10
accept, MessageBox я использовал лишь для определения стадии выполнения программы, чтобы знать какие операции выполняются в данный момент. Всего лишь. А значения вектора даже в консоль так и не выводятся.
0
accept
4831 / 3252 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
25.12.2010, 05:39 #11
тебе надо поставить cout'ы перед циклом и после цикла
cout перед циклом выводит
C++
1
cout << fin.is_open() << endl;
или
C++
1
cout << fin.is_good() << endl;
cout после цикла выводит
C++
1
cout << "loop ended" << endl;
тогда ты будешь конкретно знать:
1. открылся ли файл
2. заходит ли он в цикл
3. виснет ли цикл

нужно понять, в чём причина повисания
у меня даже пустой файл не виснет
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2010, 05:39
Привет! Вот еще темы с ответами:

Пусть вводится последовательность вещественных чисел - C++
Пусть вводится последовательность вещественных чисел,оканцивающаяся нулем и состоящая более чем из из одного ненулевого...

Определить является ли последовательность вещественных чисел возрастающей - C++
Дана последовательность из вещественных чисел, которые вводятся по одному. За последним числом вводится нуль. Определить, является ли эта...

Дана последовательность, состоящая из N вещественных чисел. Найти и вывести полученные результаты - C++
1. каких чисел в последовательности больше: положительных, отрицательных или нулевых; 2. произведение отрицательных элементов, стоящих на...

Если данный набор из N вещественных чисел образует убывающую последовательность, то вывести 0 - C++
Дано целое число N (&gt; 1) и набор из N вещественных чисел. Если данный набор образует убывающую последовательность, то вывести 0; в...


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

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

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