|
|
|
новичок
      
участник
Last Login: 11.04.2007 21:04
Сообщ.: 1,
Visits: 8
|
|
Проблема следущая: нужна программа которая считывает числа типа double из файла (в моем случае это индексы валютного курса) и записывает их в массив double A[n].
т.е есть файлик примерно с таким содержанием:
31,7101
31,784
31,8214
31,8352
31,835
31,8351
31,8354
31,8517
как сделать чтобы данные в массив типа DOUBLE с него читались так:
A[0]=31,7101
A[1]=31,784
A[2]=31,8214
...
извините за ламерский вопрос, я вообще не программист, просто мне по диплому очень надо...
|
|
|
|
|
Forum Member
      
участник
Last Login: 30.06.2007 8:03
Сообщ.: 28,
Visits: 42
|
|
ну для начала нужно знать что является разделителем целой и дробной частей.
если как у вас это запятая, то тогда открываем файлик (fopen) с режимом для чтения(чтения/записи) и читаем (fgets) и преобразуем строку в double (atof).
или нужен прям Текст рабочей программы?
|
|
|
|
|
Supreme Being
      
модератор
Last Login: 09.07.2008 2:17
Сообщ.: 1 298,
Visits: 12 500
|
|
написано же, что автор топика - не программист, конечно нужен текст рабочей программы :)
вопрос: известно ли изначально количество чисесл в файле? или программа должна сама определить это? (не то чтобы я уже взялся ваять пример, но ответ на этот вопрос может повлиять на алгоритм решения :)
|
|
|
|
|
Forum Member
      
участник
Last Login: 30.06.2007 8:03
Сообщ.: 28,
Visits: 42
|
|
#include
#include
#define FILE_NAME "data.txt"
int main(int argc, char** argv) {
FILE *fFile = NULL;
char szData[20];
unsigned int ValCount = 0;
double *dVal = NULL;
fpos_t filepos;
fFile = fopen(FILE_NAME, "r");
fgetpos(fFile, &filepos);
if (!fFile) return 1;
while (1) {
if (!fgets(szData, sizeof(szData), fFile))
break;
ValCount++;
}
fsetpos(fFile, &filepos);
dVal = (double*)malloc(sizeof(double)*ValCount);
for (unsigned int i = 0; i < ValCount; ++i) {
fgets(szData, sizeof(szData), fFile);
dVal[i] = atof(szData);
printf("%f", dVal[i]);
}
free(dVal);
fclose(fFile);
return 0;
}
|
|
|
|