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

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

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

 
 Ответить  Открыть новую тему 
> Работа с файлами.
сообщение
Сообщение #1


Новичок
*

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

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


Дан текстовый файл. Вывести на экран те символы которые встречаются в нем ровно один раз.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(@WARlock@ @ 8.04.2006 6:16) *

Дан текстовый файл. Вывести на экран те символы которые встречаются в нем ровно один раз.

Читай посимвольно и считай количество появлений каждого символа в массив
array[0..255]of integer
потом выведи те символы, у которых значение массива равно 1

Сообщение отредактировано: lapp -


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Символы, наверное, имеются в виду неуправляющие..
Примерно так можно:
  f:file of byte;
a:array[33..255]of integer;
b:byte;
....
for i:=33 to 255 do a[i]:=0;
while not EoF(f) do begin
Read(f,b);
if b>32 then Inc(a[b])
end;
for i:=33 to 255 do if a[i]=1 then Write(Char(i))


Сообщение отредактировано: volvo -


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


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

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

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


Это что приказ ? Уже можно выпполнять ? mad.gif


Ты сам хоть что-нибудь сделал ? Если нет, то привиди хоть одну вескую причину по которой кто-то должн сесть и сделать эту задачу (неоднократно решенную на офруме) еще раз, ЗА тебя.

решение lapp скрыто

Сообщение отредактировано: klem4 -


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


Новичок
*

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

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


Как вывести содержимое файла на экран это не проблема. Я просто не знаю алгоритм который находит числа встречающиеся один раз.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


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

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

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


Открываю тебе вариант lapp'a, раз уж сам ничего придумать не смог.

Правда я бы делал немного по другому, читал бы строками, раз уж файл тектсовый



arr : array [char] of integer;
...
readln(f, s);
for i := 1 to length(s) do inc(arr[s[i]]);
...

close(f);
...

for i := 32 to 255 do
if arr[char(i)] = 1 then writeln(char(i));
...


Сообщение отредактировано: volvo -


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


Новичок
*

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

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


uses crt;
var
s:array [char] of integer;
f:file of string;
a:string;
i:integer;
begin clrscr;
assign(f,'c:\1.txt');
reset(f);
read(f,a);
for i:= 1 to length(a) do inc(s[a[i]]);
begin
writeln('Не повторяющиеся символы:');
writeln;
for i:=1 to 255 do
if s[char(i)] = 1 then writeln(char(i));
end;
readln;
close(f);
end.


Во-первых, тегами пользуйся... А во-вторых, тебе же так и подсказали, зачем постить уже данное решение еще раз?

Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 




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