Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.90/41: Рейтинг темы: голосов - 41, средняя оценка - 4.90
25 / 18 / 0
Регистрация: 04.03.2013
Сообщений: 170
Записей в блоге: 1

Файл: Загрузка данных из файла: первый столбец записывался в 1й массив, второй столбец - во 2й массив, а 3й столбец - в 3й массив.

04.03.2013, 04:25. Показов 8423. Ответов 49
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть текстовый файл, в нем 3 столбца чисел (число строк заранее неизвестно). Напишите пожалуйста код, чтобы первый столбец записывался в 1й массив, второй столбец во 2й массив, а 3й столбец в 3й массив.
Вложения
Тип файла: txt 1.txt (254 байт, 48 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.03.2013, 04:25
Ответы с готовыми решениями:

Поменять местами первый столбец и столбец и столбец, где находится максимальный элемент массива
Дан двумерный массив вещественных чисел из 4 столбцов и 3 строк. Поменять местами первый столбец и столбец и столбец, где находится...

Вывести элементы матрицы в следующем порядке: первый столбец сверху вниз, второй столбец снизу вверх...
program Matrix12; var a:array of integer; M, N, i, j:Integer; begin randomize; Write('N: '); Readln(N); ...

Вставить одномерный массив в двумерный массив так, чтобы второй столбец был отсортирован по убыванию
Помогите пожалуйста решить задачку: Вставить в качестве новой строки одномерный массив В в двумерный массив А так, чтобы второй столбец...

49
25 / 18 / 0
Регистрация: 04.03.2013
Сообщений: 170
Записей в блоге: 1
07.03.2013, 01:42  [ТС]
Студворк — интернет-сервис помощи студентам
Методами объектно-ориентированного программирования построить графики на канве формы. Для построения графиков могут быть использованы компоненты : PaintBox или Image. Координаты графиков записаны в текстовом файле 1.txt , где первый и второй столбец это координата Y для первого и второго графика, а третий столбец это координата Х для первой и для второй функции. Количество строк в файле заранее не известно.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
07.03.2013, 01:56
Например, создать два класса: класс График и структуру Координаты. Класс График содержит массив (вектор) объектов Координаты. В структуре Координаты - три поля: два для X и одно для Y. В класса График сделать перегрузку операторов << и >> для записи и чтения координат Графика (вектора с Координатами) в файл/из файла. Чтение и запись можно упростить (нет надобности считать строки в файле), так как вектор знает свой размер (количество Координат).
1
25 / 18 / 0
Регистрация: 04.03.2013
Сообщений: 170
Записей в блоге: 1
07.03.2013, 02:08  [ТС]
еще бы найти хороший материал, где доступно объясняется перегрузка операторов , а то я только недавно узнал что это вообще такое )
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
07.03.2013, 02:12
Цитата Сообщение от alsav22 Посмотреть сообщение
Чтение и запись можно упростить (нет надобности считать строки в файле), так как вектор знает свой размер (количество Координат).
Хотя если по заданию не известно, то нужно считать. И с графиками нужно подумать. В файле координаты двух графиков, поэтому нужно в Кординатах два поля: для X и для Y. Два объекта График. Запись/чтение в файл с извращениями: две координаты в разные объекты График, третья - и в один, и во второй. Как-то так...
1
25 / 18 / 0
Регистрация: 04.03.2013
Сообщений: 170
Записей в блоге: 1
07.03.2013, 02:18  [ТС]
Да, нужно думать, но пока это кажется не реальным...
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
07.03.2013, 02:21
Эти два графика всегда вместе рисуются? Отдельно не выводятся?
0
25 / 18 / 0
Регистрация: 04.03.2013
Сообщений: 170
Записей в блоге: 1
07.03.2013, 02:27  [ТС]
да 2 графика на 1м PaintBox или Image
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
07.03.2013, 02:42
Тогда класс, типа, Двойной График , и делать как в 22 посте.

Добавлено через 1 минуту
Хотя из задания не следует, что вывод общий...
0
25 / 18 / 0
Регистрация: 04.03.2013
Сообщений: 170
Записей в блоге: 1
07.03.2013, 02:43  [ТС]
а если создать не двойной класс, а 2 класса так не лучше будет?
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
07.03.2013, 02:53
Лучше так, как в 22 посте, но в структуре Координаты два поля: X и Y. Единственное, что при такой записи в файле, не удастся перегрузить в классе операторы ввода/вывода. Будет отдельная функция чтения/записи в файл, которая принимает, в качестве аргументов, два объекта График.

Добавлено через 3 минуты
Два класса для графиков создавать смысла нет, потому что это будут два одинаковых класса.
1
25 / 18 / 0
Регистрация: 04.03.2013
Сообщений: 170
Записей в блоге: 1
15.03.2013, 21:56  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
Как вариант (если не считать количество строк в файле, а создавать массивы с запасом):
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
#include <iostream>
#include <fstream>
#include <windows.h>
#include <cstdlib>
using namespace std;
 
const int N = 100;
 
void show_arr(double* arr, int number)
{
    cout.precision(10);
    cout.showpoint;
    for (int i = 0; i < number; i++)
        cout << arr[i] << endl;
    cout << endl;
}
 
int main()
{
    double arr1[N], arr2[N], arr3[N];
 
    ifstream fin("1.txt");
    
    int i;
    for (i = 0; fin; i++)
    {
        fin >> arr1[i] >> arr2[i] >> arr3[i];
    }
    --i;
    
    show_arr(arr1, i);
    show_arr(arr2, i);
    show_arr(arr3, i);
    
    system("pause");
    return 0;
}
Добавлено через 21 минуту
Если сначала посчитать количество строк с числами в файле (после последней строки с числами не должно быть пустых строк):
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
#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>
#include <cstdlib>
using namespace std;
 
void show_arr(double* arr, int number)
{
    cout.precision(10);
    cout.showpoint;
    for (int i = 0; i < number; i++)
        cout << arr[i] << endl;
    cout << endl;
}
 
int main()
{
    ifstream fin("1.txt");
 
    string str;
    int arr_size = 0;
    while(fin)
    {
        getline(fin, str);
        if(fin) ++arr_size;
    }
    
    fin.clear();
    fin.seekg(0);
    
    double *arr1 = new double[arr_size];
    double *arr2 = new double[arr_size];
    double *arr3 = new double[arr_size];
    
    for (int i = 0; i < arr_size; i++)
           fin >> arr1[i] >> arr2[i] >> arr3[i];
    
    
    show_arr(arr1, arr_size);
    show_arr(arr2, arr_size);
    show_arr(arr3, arr_size);
 
    delete [] arr1;
    delete [] arr2;
    delete [] arr3;
 
    system("pause");
    return 0;
}

как здесь можно определить количество столбцов, если мы не знаем заранее сколько их ???
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
16.03.2013, 00:20
Цитата Сообщение от Ramoncheg Посмотреть сообщение
как здесь можно определить количество столбцов, если мы не знаем заранее сколько их ???
Столбцов или строк? Если столбцов, то:

Цитата Сообщение от Ramoncheg Посмотреть сообщение
Есть текстовый файл, в нем 3 столбца чисел
Если строк, то вопрос уже был и ответ уже был.
0
25 / 18 / 0
Регистрация: 04.03.2013
Сообщений: 170
Записей в блоге: 1
16.03.2013, 09:34  [ТС]
А если в нем не 3 столбца, а скажем m , и как нам его можно найти, если допустим мы не знаем ни количество строк ни количество столбцов?
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
16.03.2013, 09:46
Цитата Сообщение от alsav22 Посмотреть сообщение
Как вариант (если не считать количество строк в файле, а создавать массивы с запасом):
Ты серьёзно? Файлы поддерживаются много большего размера, чем память, а не наоборот.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
16.03.2013, 12:00
Цитата Сообщение от Ramoncheg Посмотреть сообщение
А если в нем не 3 столбца, а скажем m , и как нам его можно найти, если допустим мы не знаем ни количество строк ни количество столбцов?
Насчёт подсчёта количества строк я уже всё объяснил.

А если в нем нем не 3 столбца, а скажем m
, то посчитать количество чисел в строке. Задача не сложная.
0
25 / 18 / 0
Регистрация: 04.03.2013
Сообщений: 170
Записей в блоге: 1
16.03.2013, 16:39  [ТС]
Допустим , а как же тогда записать считывание из файла и запись в массив, если мы не знаем сколько этих массивов?

Добавлено через 28 минут
Как я понял сначала нужно найти количество символов, которые находятся через пробел, а потом что делать ?
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
16.03.2013, 20:34
Цитата Сообщение от Ramoncheg Посмотреть сообщение
Как я понял сначала нужно найти количество символов, которые находятся через пробел, а потом что делать ?
Потом посчитать количество строк и создать соответственное количество массивов, соответственного размера.
0
25 / 18 / 0
Регистрация: 04.03.2013
Сообщений: 170
Записей в блоге: 1
16.03.2013, 21:58  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
Потом посчитать количество строк и создать соответственное количество массивов, соответственного размера.

а как же сделать , чтобы если мы нашли m ( число столбцов) , оно автоматически создавало столько же массивов, и записывало в них столбы????
0
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
17.03.2013, 00:09
Я вот, как еще один вариант, через slice сделал:
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
#include <iostream>
#include <fstream>
#include <iterator>
#include <vector>
#include <valarray>
 
auto print = [](const std::valarray<double> v)
{
    for (double x : v) std::cout<<x<<" ";
    std::cout<<"\n";
};
 
int main()
{ 
    std::ifstream ofs("D:/some_file.txt");
    if (ofs.is_open())
    {
        std::vector<double> v {std::istream_iterator<double>(ofs), std::istream_iterator<double>()};
        std::valarray<double> data(v.data(), v.size());
        
        unsigned rows = data.size() / 3;
        std::valarray<double> first =    data[std::slice(0, rows, 3)];
        std::valarray<double> second =   data[std::slice(1, rows, 3)];
        std::valarray<double> third =    data[std::slice(2, rows, 3)];
        
        std::cout<<"Results:\n";
        std::cout<<"first:  ";
        print(first);
        std::cout<<"second: ";
        print(second);
        std::cout<<"third:  ";
        print(third);
        
        ofs.close();
    }
    else
        std::cout << "Error opening file\n";
    
    return 0;
}
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.03.2013, 00:17
Цитата Сообщение от Ramoncheg Посмотреть сообщение
а как же сделать , чтобы если мы нашли m ( число столбцов) , оно автоматически создавало столько же массивов
Создать массив указателей размером m. В цикле выделить, под каждый указатель этого массива, память размером, равным количеству строк в файле.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.03.2013, 00:17
Помогаю со студенческими работами здесь

Массив: переставить местами столбец с наибольшим количеством нулевых элементов и столбец последний по порядку
Друзья, помогите плиз сделать лабу в VBA) Написать процедуру. Для заданного массива В(4,5), переставить местами столбец с наибольшим...

В двухмерном массиве первый столбец поменять местами с последним столбцом, второй столбец с предпоследним столбцом и так далее
1. Ввести двухмерный массив поэлементно с помощью клавиатуры или получить его, используя генератор случайных чисел. Двухмерный массив...

Ввести 10 чисел в массив и вывести в столбец A в порядке ввода, а в столбец B в обратном порядке
Написать на VBA процедуру, организующую ввод с клавиатуры 10 чисел и последующую их распечатку в столбец А рабочего листа в порядке ввода,...

Задан массив А[1..5,1..6]. Поменять в нем местами первый и последний столбец.
Помогите пожалуйста с заданием. Задан массив А. Поменять в нем местами первый и последний столбец.

Выбрать первый столбец таблицы и сформировать массив заданного вида
есть таблица нужно выбрать её первый столбец со значениями(tutorial,extends,rules) и сформировать из них массив с разрешением .pdf в...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru