Вопрос
Как на С++ организовать ввод из файла float-данных через потоки? Числа разделены пробелами, с мантиссой Е и без, есть отрицательные. Не в одну строку.
Ответ
Ввод вывод из файлов осуществляется с помощью потоков так простой пример:
#include <iostream.h>
//или #include <iostream> #include <fstream.h> void LireNb()
{ ifstream Entree("data.txt");
// открываем и читаем double x,y;
// закрываем файл
}
void LireMot()
{ ifstream Entree("bidon.txt");
// открываем и читаем char mot[80];
cout<<"----- Mot par Mot ----"<<endl;
while (Entree>>mot) cout<<mot<<endl;
Entree.close();
// закрываем файл }
Пример 2:
Следующая программа использует модифицированный метод selectionSort для сортирования массива чисел с плавающей точкой
#include<iostream> #include<fstream> using namespace std;
typedef double Type;
// Type теперь double
// объявляем функции void selectionSort(Type [],int);
void fillArray(Type [], int, ifstream &);
void main()
{ const int ARRAY_SIZE = 14;
ifstream in("input.dat");
Type myArray[ARRAY_SIZE];
fillArray( myArray, ARRAY_SIZE, in);
selectionSort(myArray, ARRAY_SIZE);
cout << "Sorted array elements are:" << endl; for ( int i = 0; i < ARRAY_SIZE; i++ )
{ cout << myArray[i] << " ";
}
}
// конец главной программы void selectionSort(Type A[], int size)
{ int pass = 0, indexOfSmallest;
while (pass < size )
{ indexOfSmallest = pass; for ( int i = pass + 1; i < size; i++ )
{ if ( A[indexOfSmallest] > A[i] ) indexOfSmallest = i;
}
// конец цикла for Type tmp = A[pass];
A[pass] = A[indexOfSmallest];
//свап A[indexOfSmallest] = tmp;
//свап pass++;
}
// конец while
}
// конец функции selectionSort
// заполняем массив из файла
//выводим элементы массива на экрам void fillArray
( Type a[], int size, ifstream &in )
{ for (int i = 0; i < size; i++) in >> a[i];
cout << "The "<< size << " array elements are:" << endl;
for (int i = 0; i < size; i++) cout << a[i] << " "; cout << endl;
}
// end function fillArray
предположим что данные таковы
33.02 7140 449.8 16.81 21.06
-21.035 1.27 .456 3. 5.0 1.3 1.2e10 6.54e-78
789.321
Программа выдаст следующее
The 14 array elements are:
33.02 7140 449.8 16.81 21.06
-21.035 1.27 0.456 3 5 1.3 1.2e+10 6.54e-78
789.321
Sorted array elements are:
-21.035 6.54e-78 0.456 1.27 1.3 3 5
16.81 21.06 33.02 449.8 789.321 7140
1.2e+10
Из конференции Expert_FAQ
Copyright 2000-2004 Сообщество Чайников
Контактная информация