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

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задача по теме файлов + оператор Case Of + меню, Упорядочить по + и по - & определить сколько компонентов файла пре
Myasnik
сообщение 4.02.2006 19:19
Сообщение #1


Новичок
*

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

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


Вообщем дали мне вот такую задачу, я как всегда в ауте из-за срока в 2 дня... lol.gif wacko.gif wacko.gif

Программа запрашивает имя файла и предоставляет пользователю меню из 3-х пунктов:
a) упорядочить по возрастанию
б) упорядочить по убыванию
в) определить, сколько компонентов файла представляют собой цифры, сколько - не заглавные буквы латинского алфавита, сколько являются восклицательными знаками.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 7)
volvo
сообщение 4.02.2006 19:26
Сообщение #2


Гость






Ну, и в чем проблема? Открывай файл как File Of Char и читай символы до победного EOF... В Case проверяй, какой символ был прочитан, и увеличивай соответствующий счетчик...

Я в FAQ выкладывал, насколько я помню, процедуру, сортирующую как по возрастанию, так и по убыванию, в зависимости от переданного параметра. Если в FAQ не найдешь - посмотри у меня на сайте, там точно есть...
 К началу страницы 
+ Ответить 
Myasnik
сообщение 5.02.2006 14:52
Сообщение #3


Новичок
*

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

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


Цитата(volvo @ 4.02.2006 19:26) *

Ну, и в чем проблема? Открывай файл как File Of Char и читай символы до победного EOF... В Case проверяй, какой символ был прочитан, и увеличивай соответствующий счетчик...

Я в FAQ выкладывал, насколько я помню, процедуру, сортирующую как по возрастанию, так и по убыванию, в зависимости от переданного параметра. Если в FAQ не найдешь - посмотри у меня на сайте, там точно есть...

с первыми двумя пунктами разберусь, а вот с пунктом в) вообще не рублю. sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 5.02.2006 15:20
Сообщение #4


Гость






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
Сообщение #5


Новичок
*

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

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


ну тебе не проблема, а мне уже от написанного плоха wacko.gif wacko.gif wacko.gif

Спасибо Агромное!!! smile.gif smile.gif smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Myasnik
сообщение 8.02.2006 20:56
Сообщение #6


Новичок
*

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

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


Короч, нарот, помогите... запарился я тут с этой задачей... нужно чтоб оператор выводил и буквы и цифры и сортировал их, получилось только цифры... а как буквы и цифры?

Вот задача (тока работает пока меню 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

begin
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©;
case c of

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.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 8.02.2006 21:14
Сообщение #7


Гость






Цитата
получилось только цифры... а как буквы и цифры?
Буквы и цифры при использовании
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
Сообщение #8


Новичок
*

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

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


Сделал задачу! Всё ништяк работает! good.gif
Пасиб тебе Вольво за подсказки! good.gif


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);

writeln('Veberite interesuyushiy vas punkt:');
writeln('1)Yporyadochitb po Bozrastaniy.');
writeln('2)Yporyadochitb po yBbIvaniy.');
writeln('3)Opredelitb, skolbko komponentov...');
reset(f);
read©;
case c of

1:begin
For i:=FILESIZE(F)-1 downto 1 do
For j:=0 to i-1 do
begin
seek(f,j);
read(f,a,b);
if a>b then
begin
seek(f,j);
write(f,b,a);
end;

end;
close(f);
reset(f);
write('Otsortirivanniy file:');
for i:=1 to Filesize(f) do
begin
read(f,a);
write(a:4);
end;
close(f);
end;

2:begin
For i:=FILESIZE(F)-1 downto 1 do
For j:=0 to i-1 do
begin
seek(f,j);
read(f,a,b);
if a<b then
begin
seek(f,j);
write(f,b,a);
end;

end;
close(f);
reset(f);
write('Otsortirivanniy file:');
for i:=1 to Filesize(f) do
begin
read(f,a);
write(a:3);
end;
close(f);
end;

3: Begin
a1:=0;
a2:=0;
a3:=0;
while not Eof(f) do begin

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.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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