IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

 
 Ответить  Открыть новую тему 
> Перевести программу на с++, Код на Pascal'e
Domin9es
сообщение 4.01.2008 7:39
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 32
Пол: Мужской
Реальное имя: Паша

Репутация: -  0  +


Помогите переделать программу в с++. Для меня особенно непонятно формирование файла с


Файлы а и в, компоненты которых являются целыми числами, упорядочены по неубыванию. Получить в файле с все числа файлов а и в без повторений. Файл с должен быть упорядочен по неубыванию. Файлы а и в заполняются вручную.
 
program kk;
var a,b,c:file of integer;
    x,y,t:integer;
begin
clrscr;
  assign(a,'a.int');
  assign(b,'b.int');
  assign(c,'c.int');
  { Vvod znacheniy v faylu a,b}
  writeln('Vvedite chisla iz fayla A, v konce - 0');
  rewrite(a);
  readln(x);
  while x<>0 do
  begin
    write(a,x);
    readln(x);
  end;
  close(a);
  writeln('Vvedite chisla iz fayla B, v konce - 0');
  rewrite(b);
  readln(x);
  while x<>0 do
  begin
      write(b,x);
    readln(x);
  end;
  close(b);
  {Formirovanie fayla C};
  reset(a); reset(b); rewrite(c);
  read(a,x); read(b,y);
  if x<y then t:=x-1 else t:=y-1;
  while not(eof(a)) and not(eof(b)) do
  begin
    while (x<=t) and not(eof(a)) do read(a,x);
    while (y<=t) and not(eof(b)) do read(b,y);
    if (x<y) and (x>t) then
    begin
      t:=x;
      write(c,t);
    end
    else if (y>t) then
    begin
      t:=y;
      write(c,t);
    end;
  end;
  while not(eof(a)) do
  begin
    read(a,x);
    if x>t then
    begin
      t:=x;
      write(c,t);
    end;
  end;
  close(a);
  while not(eof(b)) do
  begin
    read(b,x);
    if x>t then
    begin
      t:=x;
      write(c,t);
    end;
  end;
  close(b); close(c);
  {Vivod sodergimogo fayla C na ekran}
  writeln('Itogovyj fayl:');
  reset(c);
  while not(eof(c)) do
  begin
    read(c,x);
    write(x:5);
  end;
  readln;
end.



Сообщение отредактировано: Domin9es - 5.01.2008 10:37
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 4.01.2008 9:38
Сообщение #2


Гость






Программа же переводится практически дословно:

#include <stdio.h>

int main() {
    FILE *a, *b, *c;
    int x, y, t;

    puts("Vvedite chisla iz fayla A, v konce - 0\n");
    a = fopen("a.int", "wb");
    scanf("%d", &x);
    while(x) {
        fwrite(&x, sizeof(x), 1, a);
        scanf("%d", &x);
    }
    fclose(a);

    puts("Vvedite chisla iz fayla B, v konce - 0\n");
    b = fopen("b.int", "wb");
    scanf("%d", &x);
    while(x) {
        fwrite(&x, sizeof(x), 1, b);
        scanf("%d", &x);
    }
    fclose(b);

    /* Formirovanie fayla C */
    a = fopen("a.int", "rb");
    b = fopen("b.int", "rb");
    c = fopen("c.int", "wb");
    fread(&x, sizeof(x), 1, a);
    fread(&y, sizeof(y), 1, b);

    t = (x < y) ? (x - 1) : (y - 1);
    while( !feof(a) && !feof(b) ) {
        while((x <= t) && !feof(a)) fread(&x, sizeof(x), 1, a);
        while((y <= t) && !feof(b)) fread(&y, sizeof(y), 1, b);

        if(x < y && x > t) {
            t = x;
            fwrite(&t, sizeof(t), 1, c);
        }
        else
            if(y > t) {
                t = y;
                fwrite(&t, sizeof(t), 1, c);
            }
    }
    while(!feof(a)) {
        fread(&x, sizeof(x), 1, a);
        if(x > t) {
            t = x;
            fwrite(&t, sizeof(t), 1, c);
        }
    }
    fclose(a);

    while(!feof(b)) {
        fread(&x, sizeof(x), 1, b);
        if(x > t) {
            t = x;
            fwrite(&t, sizeof(t), 1, c);
        }
    }
    fclose(b);

    fclose(c);

    /* Vivod sodergimogo fayla C na ekran */
    puts("Itogovyj fayl:\n");
    c = fopen("c.int", "rb");
    while(1) {
        fread(&x, sizeof(x), 1, c);
        if(!feof(c)) printf("%5d", x);
        else break;
    }
    fclose(c);
    return 0;
}

Кстати, если у тебя написано, что нужно
Цитата
Получить в файле с все числа файлов а и в без повторений
, то файл С будет упорядочен по возрастанию, одинаковых-то элементов нет...
 К началу страницы 
+ Ответить 
Domin9es
сообщение 4.01.2008 10:08
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 32
Пол: Мужской
Реальное имя: Паша

Репутация: -  0  +


ДА, точно. Спасибо. Можете объяснить алгоритм формирования файла с.

Сообщение отредактировано: Domin9es - 5.01.2008 7:30
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 30.07.2025 4:18
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"