Вообщем дали мне вот такую задачу, я как всегда в ауте из-за срока в 2 дня...
Программа запрашивает имя файла и предоставляет пользователю меню из 3-х пунктов: a) упорядочить по возрастанию б) упорядочить по убыванию в) определить, сколько компонентов файла представляют собой цифры, сколько - не заглавные буквы латинского алфавита, сколько являются восклицательными знаками.
volvo
4.02.2006 23:26
Ну, и в чем проблема? Открывай файл как File Of Char и читай символы до победного EOF... В Case проверяй, какой символ был прочитан, и увеличивай соответствующий счетчик...
Я в FAQ выкладывал, насколько я помню, процедуру, сортирующую как по возрастанию, так и по убыванию, в зависимости от переданного параметра. Если в FAQ не найдешь - посмотри у меня на сайте, там точно есть...
Myasnik
5.02.2006 18:52
Цитата(volvo @ 4.02.2006 19:26)
Ну, и в чем проблема? Открывай файл как File Of Char и читай символы до победного EOF... В Case проверяй, какой символ был прочитан, и увеличивай соответствующий счетчик...
Я в FAQ выкладывал, насколько я помню, процедуру, сортирующую как по возрастанию, так и по убыванию, в зависимости от переданного параметра. Если в FAQ не найдешь - посмотри у меня на сайте, там точно есть...
с первыми двумя пунктами разберусь, а вот с пунктом в) вообще не рублю.
ну тебе не проблема, а мне уже от написанного плоха
Спасибо Агромное!!!
Myasnik
9.02.2006 0:56
Короч, нарот, помогите... запарился я тут с этой задачей... нужно чтоб оператор выводил и буквы и цифры и сортировал их, получилось только цифры... а как буквы и цифры?
Вот задача (тока работает пока меню 1 пункта, 2 такой же, поменять-то знак, 3 тут написан, ещё не списаль =)))
Program chegevAra;
uses Crt;
Type ff=fileof integer;
type Tvector=array [1..10] of integer;
Var
f1:ff;
Vector:Tvector;
c,b,i,j,a:integer;
Name:string;
Begin
ClrScr;
Randomize;
Writeln('Vvedite imya faila:');
Read(Name);
Assign(f1,Name);
{$i-}
Rewrite(f1);
{$i+}If ioresult<>0then rewrite(f1);
For i:=1to10dobegin
a:=random(10);
write(f1,a);
end;
Close(f1);
Writeln('Vse chisla faila:');
reset(f1);
seek(f1,0);
whilenot Eof(f1) dobegin
read(f1,a);
writeln(a:3);
end;
writeln('Veberite interesuyushiy vas punkt:');
writeln('1)Yporyadochitb po Bozrastaniy.');
writeln('2)Yporyadochitb po yBbIvaniy.');
writeln('3)Opredelitb, skolbko komponentov...');
reset(f1);
read(c);
case c of1:beginFor i:=FILESIZE(F1)-1downto1doFor j:=0to i-1dobegin
seek(f1,j);
read(f1,a,b);
if a>b thenbegin
seek(f1,j);
write(f1,b,a);
end;
end;
close(f1);
reset(f1);
write('Otsortirivanniy file:');
for i:=1to Filesize(f1) dobegin
read(f1,a);
write(a:3);
end;
close(f1);
end;
end;
READKEY;
END.
volvo
9.02.2006 1:14
Цитата
получилось только цифры... а как буквы и цифры?
Буквы и цифры при использовании
Type ff=fileof integer;
? Никак... Я же говорил, используй File Of Char...
К тому же, у тебя в программе есть несколько недочетов:
reset(f1);
seek(f1,0); { <-- Зачем это? Указатель и так в начале файла... }
Assign(f1,Name);
{$i-}
Rewrite(f1);
{$i+}If ioresult<>0then rewrite(f1);
{ А с чего это, если была ошибка в первый раз, то во второй она НЕ должна произойти? }
Цитата
2 такой же, поменять-то знак
А если без Copy/Paste?
Myasnik
15.02.2006 17:44
Сделал задачу! Всё ништяк работает! Пасиб тебе Вольво за подсказки!
Program chegevAra;
uses Crt;
Type ff=fileof char;
Var
f:ff;
a1,a2,a3,c,i,j:integer;
Name:string;
s,a,b:char;
Begin
ClrScr;
Randomize;
Writeln('Vvedite imya faila:');
readln(name);
assign(f,name);
Rewrite(f);
Writeln('Zapolnite file');
For i:=1to10dobegin
Readln(a);
Write(f,a);
end;
Seek(f,0);
writeln('Veberite interesuyushiy vas punkt:');
writeln('1)Yporyadochitb po Bozrastaniy.');
writeln('2)Yporyadochitb po yBbIvaniy.');
writeln('3)Opredelitb, skolbko komponentov...');
reset(f);
read(c);
case c of1:beginFor i:=FILESIZE(F)-1downto1doFor j:=0to i-1dobegin
seek(f,j);
read(f,a,b);
if a>b thenbegin
seek(f,j);
write(f,b,a);
end;
end;
close(f);
reset(f);
write('Otsortirivanniy file:');
for i:=1to Filesize(f) dobegin
read(f,a);
write(a:4);
end;
close(f);
end;
2:beginFor i:=FILESIZE(F)-1downto1doFor j:=0to i-1dobegin
seek(f,j);
read(f,a,b);
if a<b thenbegin
seek(f,j);
write(f,b,a);
end;
end;
close(f);
reset(f);
write('Otsortirivanniy file:');
for i:=1to Filesize(f) dobegin
read(f,a);
write(a:3);
end;
close(f);
end;
3: Begin
a1:=0;
a2:=0;
a3:=0;
whilenot Eof(f) dobegin
read(f,s);
case s of'!':Inc(a1);
'0'..'9':Inc(a2);
'a'..'z':Inc (a3);
end;
end;
Writeln('In file');
Writeln('skolko cifr: ',a2);
Writeln('skolko bukvy alfavita:', a3);
Writeln('skolko !: ',a1);
close(f);
end;
end;
READKEY;
END.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.