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

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

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

 
 Ответить  Открыть новую тему 
> Задача на символьный файл
Atom
сообщение 30.01.2007 19:40
Сообщение #1





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

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


Определить, чего больше в символьном файле – цифр или букв ла-тинского алфавита.
Вод собствено такая не сложная задача, но чегото не как не получается, помогите... smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 30.01.2007 19:48
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Подобные задачи решались, поищи, а алгоритм такой: Читаешь символы из файла, исмотришь если символ - буква (ch in ['a'..'z', 'A'..'Z']) то увеличиваешь счетчик букв, иначе если символ - цифра, то увеличиваешь счетчик цифр, как работать с файлами, в том числе и типизированными (как раз твой вариант, у тебя будет file of char) можешь почитать тут: Файлы


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Atom
сообщение 30.01.2007 23:11
Сообщение #3





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

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


rolleyes.gif
program fail;
var f:file of char;
c:char;
a,b:integer;
Begin
Assign(f,'file1.sim');
Rewrite(f);
writeln('Введите символы, окончание точка');
readln©;
while c<>'.' do
begin
write(f,c); readln©;
end;
reset(f);
write('Получен файл');
while not eof(f) do
begin
read(f,c);
write©;
end;
writeln;
a:=0;
b:=0;
begin
assign (f,'file1.sim');
reset (f);
while not eof (f) do
read (f,c);
while not eof (f) do
if c in ['a'..'z', 'A'..'Z'] then
a:=a+1
else
b:=b+1;
end;
close (f);
begin
if a>=b then writeln ('больше букв');
if a<b then writeln ('больше цифр');
end;
end.

Ну вот так у меня получилось, только не работает)) rolleyes.gif Что не так?)) wink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 30.01.2007 23:23
Сообщение #4


Гость






Кстати, тебе обязательно 2 счетчика? Недостаточно при встрече буквы увеличивать счетчик, а при встрече цифры - уменьшать? Тогда сравниваешь с нулем, и однозначно получаешь ответ, чего больше - букв или цифр...
 К началу страницы 
+ Ответить 
klem4
сообщение 30.01.2007 23:25
Сообщение #5


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Вот как-то так

uses crt;

var
f: file of char;
ch: char;
a, b: Integer;

begin

clrscr;

assign(f, 'chars.ch');
rewrite(f);

repeat

readln(ch);

if ch <> '.' then write(f, ch);

until ch = '.';

reset(f);

a := 0; b := 0;

while not(eof(f)) do begin

read(f, ch);

if ch in ['a'..'z', 'A'..'Z'] then inc(a) else
if ch in ['0'..'9'] then inc(b);

end;

close(f);

if a > b then writeln('A') else
if b > a then writeln('B') else writeln('AB');

end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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