var g1,g2,g3:file of real;
r:real;
c:char;
begin
clrscr;
assign(g1,'fileg1');
rewrite(g1);
assign(g2,'fileg2');
rewrite(g2);
assign(g3,'fileg3');
rewrite(g3);
textcolor(yellow);
writeln('Введите в файл g1 действительные числа, окончание ввода 0:');
repeat
write('r=');
readln(r);
write(g1,r);
until r=0;
clrscr;
writeln('Введите в файл g2 действительные числа, окончание ввода 0:');
repeat
write('r=');
readln(r);
write(g2,r);
until r=0;
clrscr;
textcolor(yellow);
writeln('Содержание файла g1:');
reset(g1);
while not eof(g1) do
begin
read(g1,r);
write(g3,r);
write(r:0:2,' ');
end;
writeln;
close(g1);
writeln('Содержание файла F g2:');
reset(g2);
rewrite(g1);
while not eof(g2) do
begin
read(g2,r);
write(r:0:2,' ');
write(g1,r);
end;
writeln;
close(g2);
close(g1);
reset(g3);
rewrite(g2);
while not eof(g3) do
begin
read(g3,r);
write(g2,r);
end;
erase(g3);
writeln;
textcolor(green);
writeln('Файлы после обмена::');
textcolor(yellow);
writeln('Содержание файла g1:');
reset(g1);
while not eof(g1) do
begin
read(g1,r);
write(r:0:2,' ');
end;
writeln;
close(g1);
writeln('Содержание файла g2:');
reset(g2);
while not eof(g2) do
begin
read(g2,r);
write(r:0:2,' ');
end;
readln
end.
из паскаля на С++
вот условие:
Дано два файла g1 и g2, содержащих действительные числа. Переписать с сохранением порядка содержимое файла g1 в файл g2, и наоборот - с g2 в g1, воспользовавшись для этого третьим файлом
g3.
есть код на паскале
Код:
кое-что пробовал делать но не очень получается
Код:
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
using namespace std;
int main()
{
setlocale (LC_ALL,"russian");
float r;
FILE *g1;
FILE *g2;
FILE *g3;
g1=fopen("g1.txt","w");
g2=fopen("g2.txt","w");
g3=fopen("g3.txt","w");
if (g1 == NULL) { cout << "ERRORсв"; }
cout << "VVeditе v fail g1 chisla -okon4aniye 0:";
do
{
cout << "\nr=";
cin >> r;
fprintf (g1, "%f", r);
}
while (r != 0);
fseek (g1, 0, SEEK_SET);
if (g2 == NULL) { cout << "ERROR"; }
cout << "VVedite v fail g2 chisla - okon4aniye0:";
do
{
cout << "\nr=";
cin >> r;
fprintf (g2, "%f", r);
}
while (r != 0);
fseek (g2, 0, SEEK_SET);
cout << " soderganiye g1:\n";
while (!feof(g1))
{
fscanf(g1,"%f",r);
cout<<r;
}
while (!feof(g1))
{
fscanf (g1,"%f",r);
fprintf (g3, "%f", r);
}
fseek (g3, 0, SEEK_SET);
cout << "soderganiye g2:";
while (!feof(g2))
{
fscanf (g2,"%f",r);
fprintf (g1, "%f", r);
}
fseek (g1, 0, SEEK_SET);
while (!feof(g3))
{
fscanf (g3,"%f",r);
fprintf (g2, "%f", r);
}
fclose (g3);
cout << "FAILY Posle OBMeNa\n";
cout << "soderganiye g1:";
while (!feof(g1))
{
fscanf (g1,"%f",r);
cout << r << endl;
}
fclose (g1);
cout << "soderganiye g2:";
while (!feof(g1))
{
fscanf (g2, "%f", r);
cout << r << endl;
}
fclose (g2);
getch();
return 0;
}
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
using namespace std;
int main()
{
setlocale (LC_ALL,"russian");
float r;
FILE *g1;
FILE *g2;
FILE *g3;
g1=fopen("g1.txt","w");
g2=fopen("g2.txt","w");
g3=fopen("g3.txt","w");
if (g1 == NULL) { cout << "ERRORсв"; }
cout << "VVeditе v fail g1 chisla -okon4aniye 0:";
do
{
cout << "\nr=";
cin >> r;
fprintf (g1, "%f", r);
}
while (r != 0);
fseek (g1, 0, SEEK_SET);
if (g2 == NULL) { cout << "ERROR"; }
cout << "VVedite v fail g2 chisla - okon4aniye0:";
do
{
cout << "\nr=";
cin >> r;
fprintf (g2, "%f", r);
}
while (r != 0);
fseek (g2, 0, SEEK_SET);
cout << " soderganiye g1:\n";
while (!feof(g1))
{
fscanf(g1,"%f",r);
cout<<r;
}
while (!feof(g1))
{
fscanf (g1,"%f",r);
fprintf (g3, "%f", r);
}
fseek (g3, 0, SEEK_SET);
cout << "soderganiye g2:";
while (!feof(g2))
{
fscanf (g2,"%f",r);
fprintf (g1, "%f", r);
}
fseek (g1, 0, SEEK_SET);
while (!feof(g3))
{
fscanf (g3,"%f",r);
fprintf (g2, "%f", r);
}
fclose (g3);
cout << "FAILY Posle OBMeNa\n";
cout << "soderganiye g1:";
while (!feof(g1))
{
fscanf (g1,"%f",r);
cout << r << endl;
}
fclose (g1);
cout << "soderganiye g2:";
while (!feof(g1))
{
fscanf (g2, "%f", r);
cout << r << endl;
}
fclose (g2);
getch();
return 0;
}
помогите пожалуйста
на C++ работа с файлами производится с помощью потоков - заголовок ifstream
Код:
#include <ifstream>
...
//поток для чтения из файла
ifstream inp("пыщ-пыщ1.txt");
...
//поток для записи в файл
ofstream out("пыщ-пыщ2.txt");
...
//поток для чтения из файла
ifstream inp("пыщ-пыщ1.txt");
...
//поток для записи в файл
ofstream out("пыщ-пыщ2.txt");
inp будет эквивалентен cin, только работает не с консолью а с файлом пыщ-пыщ1.txt
out будет эквивалентен cout, работать будет соотв. с пыщ-пыщ2.txt
после завершения чтения/записи нужно выполнить inp.close() / out.close()
и только потом переоткрывать файл
считывать числа из файлов нужно примерно так:
Код:
double buf;
while(!inp.eof())
{[INDENT]inp >> buf; //считали число из файла
out << buf << ' '; //записали его в другой файл, добавив разделительный пробел[/INDENT]}
while(!inp.eof())
{[INDENT]inp >> buf; //считали число из файла
out << buf << ' '; //записали его в другой файл, добавив разделительный пробел[/INDENT]}
п.с. когда будешь перезаписывать файлы, то используй
Код:
ofstream out("name.txt",ios::out|ios::trunc);
ios:: out вроде даже можно и не писать(лень проверять)
ios::trunc - очистит файл, если там что то есть
если чесно то такое как
inp out ios:: out ios::trunc - я впервие вижу мы такого не проходили
нельзя ли как-то попроще???
Цитата: Rom@
я недавно начал учить С++ и
если чесно то такое как
inp out ios:: out ios::trunc - я впервие вижу мы такого не проходили
нельзя ли как-то попроще???
если чесно то такое как
inp out ios:: out ios::trunc - я впервие вижу мы такого не проходили
нельзя ли как-то попроще???
что там сложного то?
ios:: out, ios::trunc - эквиваленты флагам из stdio для fopen
ты cout и cin умеешь использовать? вот точно так же и тут... по форуму посмотри, примеров кучи.
п.с. не проходили... всю жизнь будешь так отмазываться? у меня вот вообще примерно так делают в универе - вот задание, вот ссылки. прочитайте ссылки - сделайте задание с использованием такой то штуки.
как бы описание что такое потоки ввода/вывода - это страничек 20 в любом учебнике по C++
вот тебе код с использованием fstream, делающий то, что тебе нужно...
Код:
#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;
void main()
{
cout << "start\n";
ifstream inp("g1.txt"); //открываем для чтения
ofstream out("g3.txt",ios::trunc); //открываем для записи
double buf;
while(!inp.eof())
{
inp >> buf;
out << buf << ' ';
}
//закрываем файлы
inp.close();
out.close();
out.open("g1.txt",ios::out|ios::trunc);
inp.open("g2.txt");
while(!inp.eof())
{
inp >> buf;
out << buf << ' ';
}
inp.close();
out.close();
out.open("g2.txt",ios::out|ios::trunc);
inp.open("g3.txt");
while(!inp.eof())
{
inp >> buf;
out << buf << ' ';
}
inp.close();
out.close();
cout << "end\n";
_getch();
}
#include <fstream>
#include <conio.h>
using namespace std;
void main()
{
cout << "start\n";
ifstream inp("g1.txt"); //открываем для чтения
ofstream out("g3.txt",ios::trunc); //открываем для записи
double buf;
while(!inp.eof())
{
inp >> buf;
out << buf << ' ';
}
//закрываем файлы
inp.close();
out.close();
out.open("g1.txt",ios::out|ios::trunc);
inp.open("g2.txt");
while(!inp.eof())
{
inp >> buf;
out << buf << ' ';
}
inp.close();
out.close();
out.open("g2.txt",ios::out|ios::trunc);
inp.open("g3.txt");
while(!inp.eof())
{
inp >> buf;
out << buf << ' ';
}
inp.close();
out.close();
cout << "end\n";
_getch();
}
проверку ошибок и т.п. допишешь сам, если нужно
спасибо большое буду пробовать учится
сделай как проходили, лучше в fstream не лезть, если не знаешь чего такое классы, пока просто с файлами научись работать :)