4 / 4 / 2
Регистрация: 17.03.2015
Сообщений: 47
1

Ввод данных в динамический массив из файла

31.05.2015, 20:02. Показов 8510. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В задаче написано: введение данных в динамический массив делать из файла. Как это?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2015, 20:02
Ответы с готовыми решениями:

Ввод данных в динамический массив из файла
написал программу, вроде все по правилам,только почему-то каждый раз переходит по стрелке "файл не...

Ввод данных в динамический массив структур
Помогите правильно написать функцию - сколь не пробовал, не получается - getinfo(), которая требует...

Ввод данных в двумерный динамический массив
Добрый вечер! Осваиваю уже третий день двумерные массивы в С++, но каким образом они создаются...

Динамический ввод и вывод данных в двумерный массив
Не могу реализовать ввод и вывод данных двумерного массива используя указатель на указатель, в чём...

9
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
31.05.2015, 20:11 2
Ну, например есть файл аля
in.txt
3
12 34 5

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <fstream>
using namespace std;
 
int main()
{
  int n;
  ifstream f("in.txt");
  f >> n; // количество чисел
  int *arr = new int[n]; // динамический массив
  for(int i = 0; i < n; ++i)
    f >> arr[i]; // читаем
  // делаем то, что нужно
  delete[] arr; // после работы не забываем освобождать память
  return 0;
}
Сначала указано количество записей, дальше сами записи. После for-а в arr будет записано 12, 34 и 5.
0
45 / 42 / 48
Регистрация: 13.05.2015
Сообщений: 222
31.05.2015, 20:20 3
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
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
 
void main(void)
{
    //определение длины файла;
    int count=0, n;
    ifstream F("Test.txt");
        if (!F) 
            cout << "Файл не открыт.\n";
        else
        {
            while (F >> n)
                count++;
        }
    F.close();
    int *a = new int[count];
    //считываение данных в динамический массив;
    ifstream F1("Test.txt");
        if (!F1) 
            cout << "Файл не открыт.\n";
        else
        {
            for (int i=0; i<count; i++)
                    F1 >> a[i];
                    F1.close();
            for (int i=0; i<count; i++)
                cout << a[i] << " ";
        }
    cout << endl;
    system("pause");
}
0
4 / 4 / 2
Регистрация: 17.03.2015
Сообщений: 47
31.05.2015, 20:36  [ТС] 4
А если массив двухмерный?
0
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
31.05.2015, 21:28 5
Да тоже самое. Если по моему примеру, то в начале файла указывается количество строк(пусть будет n) и колонок(m).
Кликните здесь для просмотра всего текста
2 3
1 2 3
4 5 6

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int n, m;
  ifstream f("in.txt");
  f >> n >> m;
  int **arr = new int *[n]; // двухмерный динамический массив - это массив указателей(массивов)
  for(int i = 0; i < n; ++i)
   arr[i] = new int[m];
 
  for(int i = 0; i < n; ++i)
   for(int j = 0; j < n; ++j)
    f >> arr[i][j];
// Освобождение памяти:
   for(int i = 0; i < n; ++i)
    delete[] arr[i];
   delete[] arr;
1
4 / 4 / 2
Регистрация: 17.03.2015
Сообщений: 47
31.05.2015, 23:20  [ТС] 6
Компилятор выдает ошибки:
i не опознана, только i почемуто указывается во второй строке, и три в первой строке:
1) 'f' uses undefined class 'std::basic_ifstream<Elem,_Traits>'
2) 'initializing' : cannot convert from 'const char[7]' to int
3) '>>' : operator has no effect; expekted operator with side-effect.
Попытки их устранить успехом не увенчались, помогите плиз :-)
0
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
01.06.2015, 09:39 7
Вот, проверено, работает.
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
#include <fstream>
using namespace std; // в прошлый раз я пропустил эту строку
 
int main(int argc, char const *argv[])
{
    int n, m;
    ifstream f("in.txt");
    f >> n >> m;
 
    int **arr = new int*[n];
    for (int i = 0; i < n; ++i)
        arr[i] = new int[m];
 
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; ++j)
            f >> arr[i][j];
 
    // ...
 
    for (int i = 0; i < n; ++i)
        delete[] arr[i];
 
    delete arr;
    return 0;
}
0
4 / 4 / 2
Регистрация: 17.03.2015
Сообщений: 47
01.06.2015, 11:15  [ТС] 8
А что значит строка
f >> n >> m; ?

Добавлено через 14 минут
И есть ошибка неопознанная i в строке ifstream f("in.txt");
0
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
01.06.2015, 11:52 9
Цитата Сообщение от Athena Посмотреть сообщение
А что значит строка
C++
1
f >> n >> m;
?
считать из файла 2 целых числа в n и m. Тоже самое что и
C++
1
2
f >> n;
f >> m;
Работа с файлами: язык программирования C++
C++. Работа с текстовыми файлами

Цитата Сообщение от Athena Посмотреть сообщение
И есть ошибка неопознанная i в строке ifstream f("in.txt");
Какой компилятор? Скопируйте весь текст ошибки сюда.
0
4 / 4 / 2
Регистрация: 17.03.2015
Сообщений: 47
01.06.2015, 13:22  [ТС] 10
error C2065: 'i' undeclared identifier
Компилятор visual studio 2008
0
01.06.2015, 13:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.06.2015, 13:22
Помогаю со студенческими работами здесь

Ввод данных/выделение памяти (динамический символьный массив)
1. Если ли разница в таких двух вариантах объявления динамического символьного массива: а) char...

Чтение данных из файла в динамический массив структур
Здравствуйте, подскажите пожалуйста, как можно осуществить чтение данных из файла в динамический...

Ввод данных в массив с файла с++
есть файл input.txt в нем 2 строки, на первой - одно число(размер массива), на второй ряд...

Ввод слипшихся данных из файла в массив
Здравствуйте, подскажите, пожалуйста, как можно организовать ввод в массив таких данных &quot;12345&quot;,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru