Вообщем дали мне вот такую задачу, я как всегда в ауте из-за срока в 2 дня...
Программа запрашивает имя файла и предоставляет пользователю меню из 3-х пунктов: a) упорядочить по возрастанию б) упорядочить по убыванию в) определить, сколько компонентов файла представляют собой цифры, сколько - не заглавные буквы латинского алфавита, сколько являются восклицательными знаками.
volvo
4.02.2006 19:26
Ну, и в чем проблема? Открывай файл как File Of Char и читай символы до победного EOF... В Case проверяй, какой символ был прочитан, и увеличивай соответствующий счетчик...
Я в FAQ выкладывал, насколько я помню, процедуру, сортирующую как по возрастанию, так и по убыванию, в зависимости от переданного параметра. Если в FAQ не найдешь - посмотри у меня на сайте, там точно есть...
Myasnik
5.02.2006 14:52
Цитата(volvo @ 4.02.2006 19:26)
Ну, и в чем проблема? Открывай файл как File Of Char и читай символы до победного EOF... В Case проверяй, какой символ был прочитан, и увеличивай соответствующий счетчик...
Я в FAQ выкладывал, насколько я помню, процедуру, сортирующую как по возрастанию, так и по убыванию, в зависимости от переданного параметра. Если в FAQ не найдешь - посмотри у меня на сайте, там точно есть...
с первыми двумя пунктами разберусь, а вот с пунктом в) вообще не рублю.
volvo
5.02.2006 15:20
countExclamation := 0; countDigits := 0; countLower := 0; While not Eof(f) Do Begin Read(f, Ch); Case Ch Of '!': Inc(countExclamation); '0' .. '9': Inc(countDigits); 'a' .. 'z': Inc(countLower); End; End;
Где проблема?
Myasnik
5.02.2006 18:54
ну тебе не проблема, а мне уже от написанного плоха
Спасибо Агромное!!!
Myasnik
8.02.2006 20:56
Короч, нарот, помогите... запарился я тут с этой задачей... нужно чтоб оператор выводил и буквы и цифры и сортировал их, получилось только цифры... а как буквы и цифры?
Вот задача (тока работает пока меню 1 пункта, 2 такой же, поменять-то знак, 3 тут написан, ещё не списаль =)))
Program chegevAra; uses Crt;
Type ff=file of 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<>0 then rewrite(f1); For i:=1 to 10 do begin a:=random(10); write(f1,a); end;
Close(f1); Writeln('Vse chisla faila:'); reset(f1); seek(f1,0); while not Eof(f1) do
1:begin For i:=FILESIZE(F1)-1 downto 1 do For j:=0 to i-1 do begin seek(f1,j); read(f1,a,b); if a>b then begin seek(f1,j); write(f1,b,a); end; end;
close(f1); reset(f1); write('Otsortirivanniy file:'); for i:=1 to Filesize(f1) do
begin read(f1,a); write(a:3); end;
close(f1); end; end; READKEY; END.
volvo
8.02.2006 21:14
Цитата
получилось только цифры... а как буквы и цифры?
Буквы и цифры при использовании
Type ff=file of integer;
? Никак... Я же говорил, используй File Of Char...
К тому же, у тебя в программе есть несколько недочетов:
reset(f1); seek(f1,0); { <-- Зачем это? Указатель и так в начале файла... }
Assign(f1,Name); {$i-} Rewrite(f1); {$i+} If ioresult<>0 then rewrite(f1); { А с чего это, если была ошибка в первый раз, то во второй она НЕ должна произойти? }
Цитата
2 такой же, поменять-то знак
А если без Copy/Paste?
Myasnik
15.02.2006 13:44
Сделал задачу! Всё ништяк работает! Пасиб тебе Вольво за подсказки!
Program chegevAra;
uses Crt; Type ff=file of 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:=1 to 10 do begin Readln(a); Write(f,a); end; Seek(f,0);