Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Athena
2 / 2 / 2
Регистрация: 17.03.2015
Сообщений: 45
#1

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

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

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

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

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

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

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

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

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

9
ВАСИЛЕВС
557 / 480 / 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
Mamoruhiko
41 / 39 / 47
Регистрация: 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
Athena
2 / 2 / 2
Регистрация: 17.03.2015
Сообщений: 45
31.05.2015, 20:36  [ТС] #4
А если массив двухмерный?
0
ВАСИЛЕВС
557 / 480 / 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
Athena
2 / 2 / 2
Регистрация: 17.03.2015
Сообщений: 45
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
ВАСИЛЕВС
557 / 480 / 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
Athena
2 / 2 / 2
Регистрация: 17.03.2015
Сообщений: 45
01.06.2015, 11:15  [ТС] #8
А что значит строка
f >> n >> m; ?

Добавлено через 14 минут
И есть ошибка неопознанная i в строке ifstream f("in.txt");
0
ВАСИЛЕВС
557 / 480 / 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
Athena
2 / 2 / 2
Регистрация: 17.03.2015
Сообщений: 45
01.06.2015, 13:22  [ТС] #10
error C2065: 'i' undeclared identifier
Компилятор visual studio 2008
0
01.06.2015, 13:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2015, 13:22
Привет! Вот еще темы с решениями:

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

Ввод данных из файла в двумерный массив
Здравствуйте! Я написал такую программу: #include &lt;iostream&gt; #include...

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

Ввод строки в динамический массив
Здравствуйте! Помоги пожалуйста разобраться со следующим: Как с клавиатуры...


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

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

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