Member 13515374 Ответов: 1

Как мне написать код для следующего вопроса


Есть два файла. Вы должны объединить альтернативные строки из обоих файлов в третий файл ".dat" и отобразить его содержимое.

Что я уже пробовал:

Я попробовал следующее :
прочитайте строку из файла 1..затем запишите в файл 3.. прочитайте следующую строку из файла 1..затем прочитайте строку из файла 2 ..Напишите в файл 3.. затем прочитайте следующую строку из файла 2 .. теперь напишите из. файл 1 и так далее..

1 Ответов

Рейтинг:
12

OriginalGriff

Вот и вся идея - за исключением одного бита: - Вы читаете две строки из а, одну из Б, одну из А,...

1) Open File1 for reading
2) Open File2 for reading
3) Open File3 for writing
4) Loop
4.1) If File1 not at end then
4.1.1) Read line from file 1
4.1.2) Write to File3
4.2) If File2 not at end then
4.2.1) Read line from file 2
4.2.2) Write to File3
4.3) Continue loop until File1 and File2 are at the end.
5) Close file1
6) Close File2
7) Close File3
8) Open File3 for reading
9) Loop
9.1) If File3 at end then
9.1.1) break out of loop
9.2) Read line from File3
9.3) Write to console
9.4) Continue loop forever.
10) Close File3


Member 13515374

спасибо, но я пробовал это, но это не совсем правильно . можете ли вы, пожалуйста, проверить?

#include<fstream.h>
#include<conio.h>
#include<stdio.h>
#include<process.h>
void main()
{
	char name1[40] , name2[40];
	char line1[100] , line2[100];
	fstream f1,f2,f3;
	cout<<"enter name of file 1"<<endl;
	gets(name1);
	cout<<"enter name of file 2"<<endl;
	gets(name2);
	f1.open(name1,ios::in);
	f2.open(name2,ios::in);
	f3.open("file3.txt",ios::out);
	if(!f1)
	{
		cout<<"error"<<endl;
		exit(1);
	}
	while((!f1.eof()) && (!f2.eof()))
	{
		if(f1.eof())
		break;
		f1.getline(line1,100);
		f3.write(line1,100);
		if(f2.eof())
		break;
		f2.getline(line2,100);
		f3.write(line2,100);
	}
	f1.close();
	f2.close();
	f3.close();
	f3.open("file3.txt",ios::in);
	char line[100];
	while(!f3.eof())
	{
		if(f3.eof())
		break;
		f3.getline(line,100);
		cout<<line;
	}
	f3.close();
}
	/*if(!f2)
	{
		cout<<"error"<<endl;
		exit(1);
	}
	if(!f3)
	{
		cout<<"error"<<endl;
		exit(1);
	}
	while((!f1.eof()) && (f2.eof()))
	{
		f1.getline(line1,100);
		f3<<line1;
		f2.getline(line2,100);
		f3<<line2;
	}*/
  //	getch();

OriginalGriff

Поэтому разбейте отладчик и начните смотреть на то, что именно он делает.
Помните, что у меня нет доступа к вашим файлам данных, и поэтому я не могу сказать, что он делает, чего вы не ожидаете, или не делает, что вы делаете! :смеяться:

Patrice T

Вы должны были использовать Улучшить вопрос чтобы обновить ваш вопрос.

Member 13515374

ха-ха, конечно, я проверю еще раз. но с кодом все в порядке. не так ли?

OriginalGriff

Ну, я бы так не писал, но это должно сработать. Там довольно много избыточного кода...

Member 13515374

да. ладно...спасибо

OriginalGriff

Всегда пожалуйста!