Помощь - Поиск - Пользователи - Календарь
Полная версия: бинарный файл, числа
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Катюша
В некотором бинарном файле записаны числа типа LongInt. Если в файле
есть хотя бы одно число, начинающееся цифрой 1 и содержащее цифры 2 и 3, упорядочить файл по неубыванию. Имя исходного файла и имя упорядоченного файла программа должна получать через командную строку. Не использовать массивы и динамическую память.


жду помощи =)
Digitalator
Цитата
упорядочить файл

Цитата
Не использовать массивы и динамическую память.

прикольно, наверное сначала нужно установить дополнительное охлаждение на винт.
mlc
Сейчас Volvo опять в глаз даст smile.gif
uses crt;
var f,f2:file of longint;
b:boolean;
i,j,x,y:longint;
s:string;
begin
assign(f,paramstr(1)); reset(f);
assign(f2,paramstr(2)); rewrite(f2);
b:=false;
repeat
read(f,x); str(x,s);
if (s[1]='1') or (pos ('2',s)>0) or (pos('3',s)>0) then b:=true;
write(f2,x);
until eof(f);
if b then begin
for i:=0 to filesize(f2)-1 do
 for j:=i+1 to filesize(f2) do begin
 seek(f2,i); read(f2,x);
 seek(f2,j); read(f2,y);
 if x>y then begin
  seek(f2,i); write (f2,y);
  seek(f2,j); write (f2,x);
   end;
  end;
end;
close(f); close(f2);
end.
Катюша
пасип огромное.. разберусь.. дополнительно

а компактненько как! =)))
volvo
Цитата(Катюша @ 23.07.05 23:31)
а компактненько как! =)))

Компактненько, да неправильно smile.gif Задание какое было?
Цитата(Катюша @ 23.07.05 15:56)
... Если в файле есть хотя бы одно число, начинающееся цифрой 1 и содержащее цифры 2 и 3, упорядочить файл по неубыванию...


Что имеем?
Цитата(mlc @ 23.07.05 16:26)
...
if (s[1]='1') or (pos ('2',s)>0) or (pos('3',s)>0) then b:=true;
...

Понимаешь о чем я? То что получилось - "начинающееся цифрой 1 или содержащее цифры 2 или 3"
Аккуратнее надо условия читать ;)
mlc
Цитата(volvo @ 24.07.05 22:07)
Компактненько, да неправильно smile.gif Задание какое было?
Аккуратнее надо условия читать ;)

Ааа, сорри, ты прав, посыпаю голову пеплом smile.gif Как в воду глядел про глаз smile.gif Ну ор на на анд поменяй.

[Offtop удален: мой ответ был здесь достаточное время, чтобы ты успел его прочитать...]
Катюша
я нашла старую программу, писала ее почти 2 года назад.. показываю ее..

но она не совсем такая, как это условие..

но похожа.. хорошая прога?

uses crt,dos;
var f1,f2:file of word;
function kratno11(x:word):boolean;
var sum:byte;
begin
	kratno11:=false;
	sum:=0;
	while x>=10 do
	begin
		sum:=sum+(x mod 10);
		x:=x div 10;
	end;
	if (sum mod 11=0) then kratno11:=true;
end;
var number,n1,n2,tmp:word;
    boolNum:boolean;
    i,j,k:longInt;
begin
	clrscr;
	if ParamCount<2 then
	begin
		textcolor(red);
		writeln('‘Їа ўЄ :');
		textcolor(white);
		writeln('?¬п Ёбе(r)¤­(r)Ј(r) д (c)«  Ё Ё¬п гЇ(r)ап¤(r)祭­(r)Ј(r) д (c)«  Їа(r)Ја ¬¬  ¤(r)«¦­  Ї(r)«гз вм зҐаҐ§  '+
		+'Є(r)¬ ­¤­го бва(r)Єг!');
		ReadKey;
		halt;
	end;
	assign(f1,paramStr(1));
	assign(f2,paramStr(2));
	{$I-}
	reset(f1);
	if ioresult <> 0 then
	begin
		writeln('” (c)« ­Ґ ­ (c)¤Ґ­!');
		readkey;
		halt;
	end;
	{$I-}
	rewrite(f2);
	boolNum:=false;
	while not Eof(f1) do
	begin
		read(f1,number);
		write(f2,number);
		writeln(number);
		if kratno11(number) then boolNum:=true;
	end;
	readKey;
	if boolNum=true then
	begin
		writeln('Ќ ¦¬ЁвҐ «оЎго Є« ўЁиг ¤«п ўле(r)¤ ..');
		writeln('‚ д (c)«Ґ бҐвм зЁб« - б㬬  жЁда Є(r)в(r)але а ў­  11- ­Ґ гЇ(r)ап¤(r)зЁў Ґ¬');
		readKey;
		halt;
	end;
	readkey;
	writeln('Sort');
	for i:=0 to fileSize(f2)-2 do
	begin
		Seek(f2,i);
		Read(f2,n1);
		for j:=i+1 to fileSize(f2)-1 do
		begin
			Seek(f2,j);
			Read(f2,n2);
			if n1>n2 then
			begin
				tmp:=n1;
				n1:=n2;
				n2:=tmp;
				Seek(f2,j);
				Write(f2,n2);
				Seek(f2,i);
				Write(f2,n1);
			end;
		end;
	end;
	close(f1);
	close(f2);
	writeln('“бҐ!');
	readkey;
end.


Malice
Цитата(Катюша @ 26.07.05 11:17)
но похожа.. хорошая прога?


Не понял, что значит хорошая. smile.gif
Поменяй функцию Kratno11 на свою по условию и можно здавать.
Катюша
гы..

это числа, который вводятся с командной строки.. СТОРМОЗИЛА unsure.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.