Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

из паскаля на С++

57K
12 июня 2010 года
Rom@
7 / / 18.05.2010
помогите надо срочно сдавать
вот условие:
Дано два файла g1 и g2, содержащих действительные числа. Переписать с сохранением порядка содержимое файла g1 в файл g2, и наоборот - с g2 в g1, воспользовавшись для этого третьим файлом
g3.
есть код на паскале
Код:
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.

кое-что пробовал делать но не очень получается
Код:
#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;
}

помогите пожалуйста
2.1K
12 июня 2010 года
Norgat
452 / / 12.08.2009
используй теги CODE

на C++ работа с файлами производится с помощью потоков - заголовок ifstream

 
Код:
#include <ifstream>
...

//поток для чтения из файла
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]}


п.с. когда будешь перезаписывать файлы, то используй

 
Код:
ofstream out("name.txt",ios::out|ios::trunc);


ios:: out вроде даже можно и не писать(лень проверять)
ios::trunc - очистит файл, если там что то есть
57K
12 июня 2010 года
Rom@
7 / / 18.05.2010
я недавно начал учить С++ и
если чесно то такое как
inp out ios:: out ios::trunc - я впервие вижу мы такого не проходили
нельзя ли как-то попроще???
2.1K
12 июня 2010 года
Norgat
452 / / 12.08.2009
Цитата: Rom@
я недавно начал учить С++ и
если чесно то такое как
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();
}


проверку ошибок и т.п. допишешь сам, если нужно
57K
12 июня 2010 года
Rom@
7 / / 18.05.2010
спасибо большое буду пробовать учится
392
13 июня 2010 года
cronya
421 / / 03.01.2009
сделай как проходили, лучше в fstream не лезть, если не знаешь чего такое классы, пока просто с файлами научись работать :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог