16.12.2011, 19:50 | #1 (permalink) |
Member
Регистрация: 24.08.2010
Сообщений: 65
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Фамилии в алфавитном порядке
Программа вроде написано, но требует доработки. program qq; uses crt; var i,j, N: integer; c:char; fam, name, fam1:string; begin clrscr; writeln(' Количество футболистов '); readln(N); fam := ''; repeat read(c); fam := fam + c; until c = ' '; name := ''; repeat read(c); name := name + c; until c = ' '; For i:=1 to N-1 do begin For j:=1 to N-i do begin If fam[j]<fam[j+1] then begin fam1:=fam[j]; fam[j]:=fam[j+1]; fam[j+1]:=fam1; end; end; end; writeln(fam); readln; end. |
16.12.2011, 19:50 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Я думаю, что проблему решать легче есть набраться больше информации Напечатать в алфавитном порядке все глухие согласные буквы Вывести строку в алфавитном порядке. Delphi |
16.12.2011, 20:19 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Да уж. Требует. Доработал:
Код:
uses crt; var i,j, N: integer; fam, name:Array[1..100] of String; fam1:string; begin clrscr; write(' Количество футболистов '); readln(N); For i:=1 to N do begin write(i:2,'. Surname: '); readln(fam[i]); write(i:2,'. Name: '); readln(name[i]); fam[i]:=fam[i]+' '+name[i]; writeln; end; For i:=1 to N-1 do For j:=1 to N-i do If Ord(fam[j][1])>Ord(fam[j+1][1]) then begin fam1:=fam[j]; fam[j]:=fam[j+1]; fam[j+1]:=fam1; end; clrscr; For i:=1 to N do writeln(i:2,'. '+fam[i]); readln; end. 1. Сравнение кодов первых букв фамилии. 2. Знак неравенства в сортировке - у Вас он был обратным. |
23.12.2011, 13:02 | #5 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Либо объявить дополнительный массив, содержащий число забитых голов, либо перейти от массивов к записям. В любом случае - организовать ввод информации о голах и в выводе поставить условный оператор.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
23.12.2011, 13:32 | #6 (permalink) |
Member
Регистрация: 24.08.2010
Сообщений: 65
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
а как можно программе объяснить, чтобы она сортировала фамилии, только тех футболистов, которые забили 1 и более голов?
я сформировал массив, фамилий, имен и голов |
23.12.2011, 14:14 | #8 (permalink) |
Member
Регистрация: 24.08.2010
Сообщений: 65
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
задача решена, паскаль не устоял перед моим напором
еще раз спасибо P.s.: а вот сама задача, может кому-нибудь пригодится program qq; uses crt; var i,j, N:integer; c:char; fam:array [1..100] of string; name:array [1..100] of string; gol:array [1..100] of integer; fam1:string; begin clrscr; write('Количество футболистов '); readln(N); For i:=1 to N do begin write(i,' фамилию '); readln(fam[i]); write(i,' имя '); readln(name[i]); write('Голы ',i,'го '); readln(gol[i]); fam[i]:=fam[i]+' '+name[i];end; For i:=1 to N-1 do begin For j:=1 to N-i do begin If (fam[j]>fam[j+1]) then begin fam1:=fam[j]; fam[j]:=fam[j+1]; fam[j+1]:=fam1; end; end;end; writeln('----------------------'); For i:=1 to N do begin If gol[i]>=1 then writeln(fam[i]); end; readln; end. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|