С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
enotik
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147
#1

создать 3 файла,а затем переместить информацию из 1 во 2, из 2 в 3, из 3 в 1. - C++

08.02.2011, 23:35. Просмотров 526. Ответов 6
Метки нет (Все метки)

У меня есть задача создать 3 файла,а затем переместить информацию из 1 во 2, из 2 в 3, из 3 в 1.

И у меня есть нескоькл вопросов:
1) например я написала функцию по созданию файла:

C++
1
2
3
4
5
6
7
8
9
10
11
12
void create_file (char filename[20])
{int i,k,x;
    FILE*f=fopen (filename,"w");
 
printf ("Enter kol-vo elementov v faile\n");
scanf ("%d",&k);
for (i=0;i<k;i++)
{    printf ("Enret infy\n");
    scanf ("%d",&x);
fprintf (f,"%d\t",x);};
fclose (f);
}
могу ли я дальше в void main с помощью этой функции создать три различных файла? (а вернее, 4, ибо мне понадобится лишний для обмена).Если, да, то как это сделать?
или мне надо написать 3 (4) различных функции для создания 3(4) различных файлов с разными именами?

вопрос номер 2 (глупый)
вообще идея такова: создаю 4 файла, один из которых выполняет роль буфера, и начинаю копировать (из 2 в 4, из 1во2, из 3 в 1, и из4 в 3).

Если я сначало пишу функции (создание/обмен) и создаю файлы потом в void main могу ли я ( и как) оперировать еще несозданными файлами.

Вообщем, со второй функцией (Обмен) я вообще мало чего понимаю.
каким образом все это меняется? как переписать из одного файла что либо в другой?
может быть в каждом файле создать массив заменив int x на int x[n] ? затем, используя функцию strcpy переписывать информацию из одного массива в другой, а как потом вернуть нужный массив нужному файлу? (или этого делать не нужно?ибо каждый массив и так находится в своем файле?)???

Вообщем я понимаю что все вышенаписанное - бред сумасшедшего, но все же жду ответов))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2011, 23:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос создать 3 файла,а затем переместить информацию из 1 во 2, из 2 в 3, из 3 в 1. (C++):

Задание по Visual c++ 2013, Нужно создать файл, записать в него информацию, а затем по другой кнопке считать информацию из файла - Visual C++
Вот код записи в файл: { UpdateData(TRUE); F.open(L&quot;dat1.txt&quot;, std::ios::out); // F - файловая переменная p.god = p_god; //...

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

Записать в новый файл сначала положительные, затем отрицательные, затем нулевые компоненты исходного файла - Turbo Pascal
Помогите плиз с задачей желательно с блоксхемой: Создать числовой файл F.Получить файл G, в который записать сначала положительные,затем...

Переместить информацию в Form2 в StatusBar1.Panels[0] - Delphi
Помогите с переменными не получается с Form1 из Edit1 (Login) и Edit2 (Klass) переместить информацию в Form2 в StatusBar1.Panels и...

Как переместить информацию из одного регистра в другой - 1С
Добрый день. Подскажите пожалуйста как сделать перенос из одного регистра в другой. Так чтоб для этого хватила одного документа и...

Сжать текстовую информацию, а затем преобразовывать в исходное состояние - Pascal ABC
Написать программу, позволяющую сжимать текстовую информацию на русском языке, а затем преобразовывать сжатую информацию в исходное...

6
perimetral
1 / 1 / 0
Регистрация: 17.12.2010
Сообщений: 16
09.02.2011, 00:51 #2
Вот с fstream и прочей ересью для текстовых файлов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
void main() {
    fstream f[3]; string fn[3]; int i=0;
    while (i<3) {
        cout<<"Введите имя файла "<<i<<": "; cin>>fn[i++]; }
    f[0].open(fn[0], ios::in); f[1].open(fn[1], ios::out); f[1] << f[0]; f[0].close(); f[1].close();
    f[1].open(fn[1], ios::in); f[2].open(fn[2], ios::out); f[2] << f[1]; f[1].close(); f[2].close();
    f[2].open(fn[2], ios::in); f[0].open(fn[0], ios::out); f[0] << f[2]; f[2].close(); f[0].close();
}
Собственно, ввод данных в файл и сама сделаешь =)
1
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,863
09.02.2011, 02:02 #3
enotik,
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main(void){
  /* ... */
  rename("f1.txt", "tmp");
  rename("f2.txt", "f1.txt");
  rename("f3.txt", "f2.txt");
  rename("tmp", "f3.txt");
 
  return 0;
}
1
enotik
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147
09.02.2011, 18:26  [ТС] #4
Всем огромное спасибо, но проблема в том, что я абсолютно ничего не поняла, ибо

cout еще не проходили, а в сообщении easybudda я вовсе ничего не поняла.
Обладаю познаниями на самом примитивном уровне(
0
enotik
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147
12.02.2011, 21:57  [ТС] #5
м б у кого-нибудь будут еще предложения??
((
0
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
13.02.2011, 00:28 #6
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
#include<iostream>
#include<fstream>
#include<algorithm>
#include<cstdio>
using namespace std;
 
 
int main(){
    fstream fs;
    char mas[]="textX.txt";
    string dat[3];
    int k, x;
    for(char c='1'; c<='3'; c++){ // создание 3 файлов
        mas[4]=c;
        fs.open(mas, ios::out);
        printf ("Enter kol-vo elementov v faile\n");
        scanf ("%d",&k);
        for (int i=0; i<k; i++){
            printf ("Enret infy\n");
            scanf ("%d", &x);
            fs<<x<<"\n";
        }
        fs.close();
    }
    for(char c='1'; c<='3'; c++){ // считывание их в массив 
        mas[4]=c;
        fs.open(mas);
        getline(fs, dat[c-49], (char)EOF);
        fs.clear();
        fs.close();
    }
    rotate(dat, dat+2, dat+3);    // ротация массива
    for(char c='1'; c<='3'; c++){ // запись массива обратно в файлы
        mas[4]=c;
        fs.open(mas, ios::out);
        fs<<dat[c-49];
        fs.close();
    }
}
1
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,863
13.02.2011, 16:09 #7
Цитата Сообщение от enotik Посмотреть сообщение
а в сообщении easybudda я вовсе ничего не поняла.
а там всё просто на самом-то деле: функция rename() файлы переименовывает. Это происходит значительно быстрее, чем перемещение содержимого из одного файла в другой.
1
13.02.2011, 16:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2011, 16:09
Привет! Вот еще темы с ответами:

Создать файл целых чисел. Найти в каждом числе максимальную и минимальную цифры и записать эту информацию в два новых файла - Pascal ABC
Создать файл целых чисел. Найти в каждом числе максимальную и минимальную цифры и записать эту информацию в два новых файла (в f1 - max...

Создать два бинарных файла, содержащих числовую информацию. В результате преобразований в первом файле должны остаться только четные, а во втором - C++
Создать два бинарных файла, содержащих числовую информацию. В результате преобразований в первом файле должны остаться только четные, а во...

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

Заменить информацию с файла на информацию по ссылке - Delphi
var S:TStringList; бегин S:=TStringList.Create; S.LoadFromFile('50.txt'); - так есть сейчас как не создавая файла...


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

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

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