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

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

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

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

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

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

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

Я набросал код, но он не работает т.е. выдает только первую запись вместо полного результата.

Код:
Program rgr7;
uses crt;
type stud=record
fam,nam:string;
god:integer;
klass:char;
end;
var
f:file of stud;
a:array[0..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:=0 to n do
begin
read (f,a[i]);
inc(i);
end;
close (f);
for j:=0 to n-1 do
for i:=0 to n-j 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:=0 to n 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.
Цитата:
Код вставляем в тег [CОDE][/СОDЕ] или пользуемся кнопкой # (расширенный режим). Модератор.

Последний раз редактировалось AlDelta; 29.11.2007 в 22:58. Причина: Вставка тега [CОDE]
profi вне форума Ответить с цитированием
Старый 29.11.2007, 22:52   #2
Abbatik
Форумчанин
 
Аватар для Abbatik
 
Регистрация: 11.11.2007
Сообщений: 136
По умолчанию

Код:
Program rgr7;
uses crt;
type stud=record
fam,nam:string;
god:integer;
klass:char;
end;
var
f:text;
a:array[0..30] of stud;
j,n,i:integer;
b:stud;
begin clrscr;
assign (f,'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);
writeln (f,fam);
writeln (f,nam);
writeln (f,klass);
writeln (f,god);

end;
close (f);
assign (f,'stud.int');
reset (f);
for i:=0 to n do
begin
readln (f,a[i].fam);
readln (f,a[i].nam);
readln (f,a[i].klass);
readln (f,a[i].god);

end;
close (f);
for j:=0 to n-1 do
for i:=0 to n-j 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.
Так вроде работает
ICQ - 446037211
Abbatik вне форума Ответить с цитированием
Старый 30.11.2007, 01:11   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вот это окончание мне что-то не нравится:
Код:
for j:=0 to n-1 do   
for i:=0 to n-j 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;
Почему не сделать проще:
Код:
for j:=0 to n-1 do 
begin
k:=j;  
for i:=k+1 to n-1 do   
if a[i].fam = a[j].fam then   
with a[i] do   
begin   
writeln ('============================');   
writeln (fam);   
writeln (' ',nam);   
writeln (' ',klass);   
writeln (' ',god);   
writeln ('============================');   
end;   
end;
mihali4 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с решением задачи! Anuta Общие вопросы Delphi 4 26.06.2008 20:26
Помогите, пожалуйста, с решением задачи Knight_Maggot Помощь студентам 3 26.10.2007 10:46
Помогите с решением задачи (Паскаль) Irochka Помощь студентам 2 01.05.2007 11:07
Помогите с решением задачи Ga-sergey Помощь студентам 4 11.03.2007 11:13
Помогите с решением задачи!Please! Инзия Помощь студентам 3 11.03.2007 07:50