Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
30 / 10 / 1
Регистрация: 14.03.2013
Сообщений: 53

Работа с файлами(открыть файл, считать данные в double массив)

05.05.2014, 11:33. Показов 3158. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток всем!
Столкнулся с проблемой при написании проги.
Вот что требуется:
1)Открыть файл
2)Считать данные в массив (массив double)
3)Закрыть файл

Что сделано на данный момент:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
#include<fstream>
#include<windows.h>
 
...
 
void openFileInput(){
     string line = NULL;
     fstream file;
     file.open("input.txt");
     if(file.is_open()){
         while(file.good()){
             getline(file,line);
          }
     }
     file.close();
}
З.Ы Если есть возможность, опишите подробно , поскольку потом надо бует записать массив в файл.. но это уже другая история.
З.Ы.Ы Есть вариант легче/эффективней?
Заранее спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.05.2014, 11:33
Ответы с готовыми решениями:

Записать массив double в файл, и считать его
Допустим есть массив double *pdArrayOfAllWeight = (double*)malloc(sizeof(double)*iSumAllWeight); Как записать этот массив в файл, не...

Файл: Необходимо считать данные из текстового файла в массив.
Доброго времени суток. Задача следующая: необходимо считать одномерный массив из текстового файла. Массив должен иметь тип int, чтобы потом...

Как считать из строки данные и преобразовать их в double?
Образец данных:0000001 4.9767E+03 1.5233E+08 -3.1828E+05 -1.5 using namespace std; void depth () { const int count = 10; ...

4
 Аватар для aiwprton805
78 / 77 / 51
Регистрация: 30.03.2013
Сообщений: 194
05.05.2014, 13:28
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <iostream>
#include <fstream>
#include <conio.h>
#include <locale>
 
using namespace std;
 
double *read(char *, int *);
void write(char *, double *, int);
double *genArray(int);
void showArray(double *, int);
 
 
int main(int argc, char *argv[])
{
    setlocale(LC_ALL, "rus");
    int size;
    cout << "Введите размер массива" << endl;
    cin >> size;
    double *arr = genArray(size);
    cout << "Сгенерирован следующий массив:" << endl;
    showArray(arr, size);
    char buff[256];
    cout << "Введите имя файла для записи массива" << endl;
    fflush(stdin);
    gets(buff);
    write(buff, arr, size);
    cout << "Введите имя файла для чтения массива" << endl;
    fflush(stdin);
    gets(buff);
    arr = read(buff, &size);
    cout << "Из файла прочтён следующий массив:" << endl;
    showArray(arr, size);
    cout << "Для продолжения нажмите любую клавишу . . ." << endl;
    getch();
    return 0;
}
 
double *read(char *filename, int *size)
{
    double *arr = NULL;
    double *tmp;
    *size = 0;
    ifstream infile;
    infile.open(filename);
    while(!infile.eof()){
        tmp = new double[*size+1];
        for(int i=0; i<*size; i++){
            tmp[i] = arr[i];}
        delete [] arr;
        arr = tmp;
        infile >> arr[*size];
        (*size)++;}
    infile.close();
    return arr;
}
 
void write(char *filename, double *arr, int size)
{
    ofstream outfile(filename);
    for(int i=0; i<size-1; i++){
        outfile << arr[i] << ' ';}
    outfile << arr[size-1];
    outfile.close();
}
 
double *genArray(int size)
{
    double *arr = new double[size];
    srand(time(NULL));
    for(int i=0; i<size; i++){
        arr[i] = (double)(rand()%1000);
        arr[i] /= rand()%100 * ((rand()%2) ? 1 : -1);}
    return arr;
}
 
void showArray(double *arr, int size)
{
    for(int i=0; i<size; i++){
        cout << arr[i] << ' ';}
    cout << endl;
}
2
30 / 10 / 1
Регистрация: 14.03.2013
Сообщений: 53
05.05.2014, 14:57  [ТС]
Цитата Сообщение от aiwprton805 Посмотреть сообщение
cout << "Введите имя файла для чтения массива" << endl;
fflush(stdin);
gets(buff);
arr = read(buff, &size);
Здесь возникает ошибка. Он просто не хочет идти дальше.
Была ошибка c "gets"(CRT_NO_SECURE_WARNINGS), И всё равно нехочет идти дальше
0
 Аватар для aiwprton805
78 / 77 / 51
Регистрация: 30.03.2013
Сообщений: 194
05.05.2014, 15:22
Странно, у меня работает (в Visual Studio 2012)
[]http://i6.pixs.ru/thumbs/7/8/1/SnimokJPG_1260822_11979781.jpg[/]
Когда создаёте проект консольного приложения в параметрах приложения снимите галочки Предварительно скомпилированный заголовок и Проверка жизненного цикла разработки безопасного ПО (SDL) и установите галочку Пустой проект. А файл, содержащий main потом создадите.
0
30 / 10 / 1
Регистрация: 14.03.2013
Сообщений: 53
05.05.2014, 16:46  [ТС]
Цитата Сообщение от aiwprton805 Посмотреть сообщение
Когда создаёте проект консольного приложения в параметрах приложения снимите галочки Предварительно скомпилированный заголовок и Проверка жизненного цикла разработки безопасного ПО (SDL) и установите галочку Пустой проект. А файл, содержащий main потом создадите.
именно так я и делаю постоянно.
У меня тоже стоит VS 2012

Добавлено через 4 минуты
всё. понял я указывал имя файла без расширения

детская ошибка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.05.2014, 16:46
Помогаю со студенческими работами здесь

Открыть файл и записать данные в двумерный массив. Работа с большими файлами
var Arr: array of array of longword; x, y, i: longint; f: file; maxx,maxy:longword; begin begin OpenMap.Execute(); ...

Считать данные из файла в массив предварительно выбрав его в стандартном окне виндоус "открыть файл"
Дан файл такого содержания: Таблица множителя решетки Угол, град. Множитель решетки -90,0 0,0000 ...

Считать данные из файла и записать в массив double
Как считать данные из txt файла и записать в массив double на языке Visual C#!

Как считать данные из Excel и записать их в массив double
Как считать данные из Excel и записать их в массив double на языке Visual с#.

Открыть файл и считать с него данные
как открыть файл и записать с него данные? вот пример того что может быть в файле: 14 42 33 a 2 2 g 3 3 1 2 2 нужно первую...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru