Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2007, 09:02   #1
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию Выяснить, имеются ли в школе однофамильцы. Паскаль.

Сведения об ученике состоят из его имени и фамилии и названия
класса (года обучения и буквы), в котором он учится. Дан файл f,
содержащий сведения об учениках школы. Выяснить, имеются ли в
школе однофамильцы.

Вот мой программный код:

<code>
Program rgr7;
uses crt;
type stud=record
fam,nam:string;
god:integer;
klass:char;
end;
var
f:file of stud;
a:array[1..30] of stud;
j,n,i:integer;
b:stud;
begin clrscr;
assign (f,'D:\stud.int');
rewrite (f);
write ('Vvedite kolichestvo elementov: ');
readln (n);
for i:=1 to n do
with a[i] do
begin
writeln (' Danye pro ',i,' uchenika');
write (' Familiya: '); readln (fam);
write (' Imay: '); readln (nam);
write (' Klass: '); readln (klass);
write (' God: '); readln (god);
write (f,a[i]);
end;
close (f);
reset (f);
for i:=1 to n do
begin
read (f,a[i]);
inc(i);
end;
close (f);
for j:=1 to n-2 do
for i:=1 to j-2-n do
if a[i].fam > a[i+1].fam then
begin
b:=a[i];
a[i]:=a[i+1];
a[i+1]:=b;
end;
for i:=1 to n-1 do
begin
if a[i].fam = a[i+1].fam then
with a[i] do
begin
writeln ('============================');
writeln (fam);
writeln (' ',nam);
writeln (' ',klass);
writeln (' ',god);
writeln ('============================');
end;
end;
end.
</code>

Но он не правильно работает т.е. выдает только вторую запись, а задача то состоит в другом. Нужно вывести однофамильцев.
profi вне форума Ответить с цитированием
Старый 01.12.2007, 09:18   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
for j:=1 to n-2 do
for i:=1 to j-2-n do
Поробуй здесь обе двойки заменить на 1.
puporev вне форума Ответить с цитированием
Старый 01.12.2007, 09:23   #3
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
Поробуй здесь обе двойки заменить на 1.
Не работает я уже пробовал.
profi вне форума Ответить с цитированием
Старый 01.12.2007, 09:50   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
for j:=1 to n-2 do
for i:=1 to j-2-n do
Здесь вообще неправильно. Если j:=1 то будет for i:=1 to 1-2-n do, т.е. от 1 до отрицательного числа. Непонятно как у тебя вообще что-то выдает.
puporev вне форума Ответить с цитированием
Старый 23.01.2010, 11:08   #5
P1RoG
Пользователь
 
Аватар для P1RoG
 
Регистрация: 21.11.2009
Сообщений: 19
По умолчанию

Простите за некропост, но все-таки как работать правильно должна данная задача?)
P1RoG вне форума Ответить с цитированием
Старый 23.01.2010, 11:39   #6
megachuhancer
Форумчанин
 
Регистрация: 16.04.2009
Сообщений: 247
По умолчанию

Вообще-то, сортировка пузырьком работает так: ровно n раз выполняется внешний цикл, и его счётчик никак не используется во внутреннем, а во внутреннем сравниваются подряд идущие элементы, и "прогоняются" нарушающие порядок. Вот так:
Код:
 for i := 1 to n do
      for j := 1 to n - i do
         if a[j].fam > a[j + 1].fam then begin
            b := a[j];
            a[j] := a[j + 1];
            a[j + 1] := b;
         end;
А теперь посуди сам: если в этой задаче и использовать сортировку, то только быструю, например, qsort. Потому что вместо сортировки пузырьком можно просто сравнить каждый элемент с каждым. И так, и так - O(n^2).

Последний раз редактировалось megachuhancer; 23.01.2010 в 11:49.
megachuhancer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выяснить, встречается ли в данном тексте группа букв one; hidalgo Фриланс 7 19.01.2010 10:57
Как выяснить каким образом обрабатывается бинарник yarilo Помощь студентам 1 22.04.2009 09:57
Выяснить,имеются ли в матрице ненулевые элементы. Брутальный М. Паскаль, Turbo Pascal, PascalABC.NET 2 06.01.2009 13:20
Turbo Pascal, домашнее задание в школе popkorm Паскаль, Turbo Pascal, PascalABC.NET 3 18.11.2008 14:57