Форум программистов, компьютерный форум CyberForum.ru

Как записать два массива в файл ? - C++

Восстановить пароль Регистрация
 
VASYA_A
2 / 2 / 0
Регистрация: 11.09.2013
Сообщений: 129
14.09.2013, 13:41     Как записать два массива в файл ? #1
Здравствуйте . У меня такая задача :
Есть два массива.
C++
1
2
int h4 [20]={2,33,4,55,78,3,11,22,33,99,0,45,66,111,123,234,456,765,44,33};
int h5[12]={9,222,233,234,345,100,111,22,81,355,55,67}
Как их записать в файл ?
Пробовал так :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    int h4[20]; //первый массив
    int h5[12]; //второй массив
    
    ofstream file("D:\\First.DAT");   //создаём объект класса ofstream для записи его в файл
   
    for(int i=0;i<20;i++)
    {h4[20]={5,6,3,66,59,9,234,67,1,57,345,75,99,234,342,333,232,144,2,55};
    file<<h4[20]<<" ";
    }
    for(int j=0;j<12;j++)
    {h5[12]={9,232,233,234,345,100,111,56,88,355,55,60};
    file<<h5[12]<<" ";
    }
        file.close();
Ничего не получается (
Помогите , пожалуйста , с этой задачей .
Заранее огромное спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2013, 13:41     Как записать два массива в файл ?
Посмотрите здесь:

C++ два разных массива записать последовательно в третий
C++ в файл записать элементы массива
C++ Сформировать два массива из исходного: в первый записать отрицательные элементы, во второй – остальные
C++ Записать в файл строку. Скопировать в буфер последние два слова. Вывести содержимое буфера на экран
C++ Как записать Short в два char'a?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Бендерродригез
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
14.09.2013, 13:43     Как записать два массива в файл ? #2
Цитата Сообщение от VASYA_A Посмотреть сообщение
for(int i=0;i<20;i++)
* * {h4[20]={5,6,3,66,59,9,234,67,1,57,345,75,99,234,342,333,232,144,2,55};
* * file<<h4[20]<<" ";
В каждом цикле ты задаёшь значения массива. Таки зачем?
C++
1
2
3
int h4[20] = {5,6,3,66,59,9,234,67,1,57,345,75,99,234,342,333,232,144,2,55};
for(int i = 0; i < 20; i++)
    file << h4[i] << ' ';
VASYA_A
2 / 2 / 0
Регистрация: 11.09.2013
Сообщений: 129
14.09.2013, 13:51  [ТС]     Как записать два массива в файл ? #3
Цитата Сообщение от Бендерродригез Посмотреть сообщение
В каждом цикле ты задаёшь значения массива. Таки зачем?
C++
1
2
3
int h4[20] = {5,6,3,66,59,9,234,67,1,57,345,75,99,234,342,333,232,144,2,55};
for(int i = 0; i < 20; i++)
    file << h4[i] << ' ';
И правда глупость , признаю .
Вот так нужно ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
 int h4[20]={5,6,3,66,59,9,234,67,1,57,345,75,99,234,342,333,232,144,2,55};
   int h5[12]={9,232,233,234,345,100,111,56,88,355,55,60}
   ofstream file("D:\\First.DAT");   //создаём объект класса ofstream для записи его в файл
   for(int i=0;i<20;i++)
    {file<<h4[i]<<" ";
    }
    for(int j=0;j<12;j++)
    {file<<h5[j]<<" ";
    }
    file.close();  
    return 0;
}
всё равно не получается

Добавлено через 2 минуты
Цитата Сообщение от VASYA_A Посмотреть сообщение
И правда глупость , признаю .
Вот так нужно ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
 int h4[20]={5,6,3,66,59,9,234,67,1,57,345,75,99,234,342,333,232,144,2,55};
   int h5[12]={9,232,233,234,345,100,111,56,88,355,55,60}
   ofstream file("D:\\First.DAT");   //создаём объект класса ofstream для записи его в файл
   for(int i=0;i<20;i++)
    {file<<h4[i]<<" ";
    }
    for(int j=0;j<12;j++)
    {file<<h5[j]<<" ";
    }
    file.close();  
    return 0;
}
всё равно не получается
А всё , так вроде получается .

А как считывать нужно их с файла ?
Бендерродригез
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
14.09.2013, 14:08     Как записать два массива в файл ? #4
Цитата Сообщение от VASYA_A Посмотреть сообщение
А как считывать нужно их с файла ?
Ты о ofstream откуда узнал? Ищи там же или в гугле ifstream.
VASYA_A
2 / 2 / 0
Регистрация: 11.09.2013
Сообщений: 129
14.09.2013, 14:25  [ТС]     Как записать два массива в файл ? #5
Цитата Сообщение от Бендерродригез Посмотреть сообщение
Ты о ofstream откуда узнал? Ищи там же или в гугле ifstream.
Всё, сделал . Вроде так.
C++
1
2
3
4
5
6
7
    ifstream file2("D:\\First.DAT");   //вывод из файла
    char line[1000];
    while(!file2.eof())
    {file2.getline(line,sizeof(line));
    cout<<line<<endl;
     }
file2.close();
А можете помочь с вопросом , как найти общие элементы этих массивов?
Пробую так :

C++
1
2
3
4
5
for(int i=0;i<20;i++)
for(int j=0;j<12;j++)
{if(h4[i]==h5[j])
 cout<<h4[i]<<" ";
}
Правильно ли это ? Мне нужно , чтобы данные массивов брались с файла .
И ещё , как сделать , чтобы общие элементы не повторялись .

То есть , если есть массив А( 1, 2, 3, 2) и массив Б( 1, 5, 7, 2) , чтобы результат был (1,2) , а не ( 1,2,2) ?
Бендерродригез
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
14.09.2013, 15:20     Как записать два массива в файл ? #6
Цитата Сообщение от VASYA_A Посмотреть сообщение
C++
1
2
3
4
5
for(int i=0;i<20;i++)
for(int j=0;j<12;j++)
{if(h4[i]==h5[j])
 cout<<h4[i]<<" ";
}
Правильно ли это ? Мне нужно , чтобы данные массивов брались с файла .
И ещё , как сделать , чтобы общие элементы не повторялись .

То есть , если есть массив А( 1, 2, 3, 2) и массив Б( 1, 5, 7, 2) , чтобы результат был (1,2) , а не ( 1,2,2) ?
Добавлять результат в новый массив и каждый раз проверять, если ли уже в нём общее значение.
VASYA_A
2 / 2 / 0
Регистрация: 11.09.2013
Сообщений: 129
14.09.2013, 15:27  [ТС]     Как записать два массива в файл ? #7
Цитата Сообщение от Бендерродригез Посмотреть сообщение
Добавлять результат в новый массив и каждый раз проверять, если ли уже в нём общее значение.
Как это сделать ?
Создать новый массив int mas[20];
Как добавить результат с этот созданный массив ?
Бендерродригез
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
14.09.2013, 15:52     Как записать два массива в файл ? #8
VASYA_A, Создать счётчик совпадений, например int s. Если в mas нет нужного значения, добавлять его в mas[s], счётчик увеличиваешь.
Но лучше сразу использовать set из STL.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.09.2013, 17:05     Как записать два массива в файл ?
Еще ссылки по теме:

Как два одномерных масива записать в один? C++
Записать в файл 3 упорядоченных массива C++
C++ Записать два элемента одного массива, как один элемент другого

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

Или воспользуйтесь поиском по форуму:
VASYA_A
2 / 2 / 0
Регистрация: 11.09.2013
Сообщений: 129
14.09.2013, 17:05  [ТС]     Как записать два массива в файл ? #9
Цитата Сообщение от Бендерродригез Посмотреть сообщение
VASYA_A, Создать счётчик совпадений, например int s. Если в mas нет нужного значения, добавлять его в mas[s], счётчик увеличиваешь.
Но лучше сразу использовать set из STL.
Нашёл вот такой вариант :
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <fstream>
using namespace std;
 
int main()
{   int h3 [20];                       //массив для общих элементов
    ofstream file("D:\\First.DAT");   //создаём объект класса ofstream для записи его в файл
    int h4[20] = {5,6,3,66,59,9,234,67,1,57,345,75,99,234,342,333,232,144,2,55}; //элементы массива h4
    file<<"\n h4:";
    for(int i = 0; i < 20; i++)
        file << h4[i] << " ";
        file<<endl;
    int h5[12]={9,232,233,234,345,100,111,56,88,355,55,60};                     //элементы массива h5
    file<<"\n h5:";
    for(int j=0; j<12; j++)
        file<<h5[j]<<" ";
    file.close();                                                               //закрытие файла
 
 ifstream file2("D:\\First.DAT");                                           //вывод из файла
    char line[1000];
    while(!file2.eof())
    {file2.getline(line,sizeof(line));
    cout<<line<<endl;
}
file2.close();                                                            //закрытие файла
 
    int t=0;    
    int k=0;
    while (t<20)
      {for (int i=0; i<12; i++)//прогоняет все элементы первого массива, сравнивая с
        {                     //одним (j-м) элементом второго массива
         int p=0;       
           if (h5[i]==h4[t]) //элементы двух массивов одинаковы
              {for (int l=0; l<20; l++)
                  if (h5[i]==h3[l]) //проверяет наличие подобного элемента в 3-м массиве
                    p+=1;   
               if (p==0) //если элементы двух массивов одинаковы и он(элемент) не нашёлся в 3 массиве
                    {h3[k]=h5[i];
                     cout << k+1 << " Element h3 = " << h3[k]<< endl;
                     k+=1;
                     }}}
          t++;}//начинаем прогон следующего элемента второго массива
    getch();
    return 0;
}
Но он очень сложный . Не могу понять что такое переменные t , k,p .
Почему нужно писать
C++
1
if (h5[i]==h4[t])
, если когда мы создаём массивы,мы пишем h5[j] и h4[i] ?
Я понимаю, что нужно сделать 3-ий массив . Но КАК с ним работать ? Как работает этот счётчик ?
Можете , пожалуйста , помочь с этим вопросом ? Очень хочу разобраться .
Нельзя ли это сделать как-то легче ?
Всё обыскал уже , никак не пойму , что нужно сделать (
Yandex
Объявления
14.09.2013, 17:05     Как записать два массива в файл ?
Ответ Создать тему
Опции темы

Текущее время: 11:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru