Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/48: Рейтинг темы: голосов - 48, средняя оценка - 4.77
 Аватар для Athena
4 / 4 / 2
Регистрация: 17.03.2015
Сообщений: 47

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

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

Студворк — интернет-сервис помощи студентам
В задаче написано: введение данных в динамический массив делать из файла. Как это?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.05.2015, 20:02
Ответы с готовыми решениями:

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

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

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

9
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
31.05.2015, 20:11
Ну, например есть файл аля
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
45 / 42 / 48
Регистрация: 13.05.2015
Сообщений: 222
31.05.2015, 20:20
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
4 / 4 / 2
Регистрация: 17.03.2015
Сообщений: 47
31.05.2015, 20:36  [ТС]
А если массив двухмерный?
0
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
31.05.2015, 21:28
Да тоже самое. Если по моему примеру, то в начале файла указывается количество строк(пусть будет 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
4 / 4 / 2
Регистрация: 17.03.2015
Сообщений: 47
31.05.2015, 23:20  [ТС]
Компилятор выдает ошибки:
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
Вот, проверено, работает.
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
4 / 4 / 2
Регистрация: 17.03.2015
Сообщений: 47
01.06.2015, 11:15  [ТС]
А что значит строка
f >> n >> m; ?

Добавлено через 14 минут
И есть ошибка неопознанная i в строке ifstream f("in.txt");
0
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
01.06.2015, 11:52
Цитата Сообщение от 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
4 / 4 / 2
Регистрация: 17.03.2015
Сообщений: 47
01.06.2015, 13:22  [ТС]
error C2065: 'i' undeclared identifier
Компилятор visual studio 2008
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.06.2015, 13:22
Помогаю со студенческими работами здесь

Динамический ввод и вывод данных в двумерный массив
Не могу реализовать ввод и вывод данных двумерного массива используя указатель на указатель, в чём проблема? cin &gt;&gt; *(*(p+n*i)+j); ...

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
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