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

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

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

 
 Ответить  Открыть новую тему 
> Задача со строками!
сообщение
Сообщение #1





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

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


Ребят выручите пожалуйста решить мне одну задачу!!!
"Задан произвольный текст являющимся списком фамилий.
В каждой строке записана только одна фамилия и она является
первым словом в стороке. В Найти всех однофамильцев вывести
их список и указать кол-во групподнофамильцев и число
совпадений фамилий в группе. При отсутствии однофамильцев
вывести сообщение."

пример:
Петров А. И.
Иванов И.О.
Сидоров А.С.
Петров Е. П.
Иванов Б.Л.

итог:

Петров 2
Иванов 2
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






type
pdata = ^data;
data = record
s: string;
amount: integer;
end;

var
f: text;
s: string;
i, count: integer;
found: boolean;
arr: array[1 .. 200] of pdata;

begin
assign(f, '__fam.txt');
reset(f);

count := 0;
while not eof(f) do begin
readln(f, s);

s := copy(s, 1, pos(' ', s) - 1);
found := false;
for i := 1 to count do begin
if arr[i]^.s = s then begin
inc(arr[i]^.amount); found := true; break
end;
end;

if not found then begin
inc(count);
new(arr[count]);
arr[count]^.s := s; arr[count]^.amount := 1;
end;
end;

for i := 1 to count do
if arr[i]^.amount > 1 then
writeln(arr[i]^.s, ' - ', arr[i]^.amount);

close(f);
end.

Если будет более 200 разных фамилий, увеличь размерность массива Arr...

Кстати, не забудь по окончании работы еще сделать Dispose всем занятым элементам массива Arr, иначе это будет называться "утечка памяти", что не приветствуется...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


Я думаю что ты мне написал правильную задачу , но пойми
меня: у нас Pascal вообще не было а что ты мне написал не пойму.
Например что за значок ^...
Пожалуйста если можно пришли мне на мыло написанную прогу (.ехе). yes2.gif

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


Гость






Цитата
Пожалуйста если можно пришли мне на мыло написанную прогу (.ехе)
А загрузить Паскаль, нажать F9 и получить EXE-файл уже СЛИШКОМ сложно? dry.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





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

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


да нет я нажимал. но там ошибка в этом месте:
inc(arr[i]^.amount); found := true; break
Ошибка: Field identifier expected.
А файл с фамилиями не надо заранее составлять.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 




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