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

> Внимание!

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

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Перевести программу на с++, Код на Pascal'e
сообщение
Сообщение #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©;
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©;
{Vivod sodergimogo fayla C na ekran}
writeln('Itogovyj fayl:');
reset©;
while not(eof©) do
begin
read(c,x);
write(x:5);
end;
readln;
end.



Сообщение отредактировано: Domin9es -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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©;

/* 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©) printf("%5d", x);
else break;
}
fclose©;
return 0;
}

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


Новичок
*

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

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


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

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

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

 





- Текстовая версия 22.10.2020 11:27
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name