• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Фамилии в алфавитном порядке

  • Автор темы Автор темы ljrerby
  • Дата начала Дата начала

ljrerby

Новые
Регистрация
24 Авг 2010
Сообщения
65
Реакции
0
Баллы
0
Фамилии в алфавитном порядке

Суть программы: ввести количество футболистов(N), потом ввести фамилию и имя(после имени пробел), после ввода нам должно выдать фамилии в алфавитном порядке.
Программа вроде написано, но требует доработки.

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.
 
Программа вроде написано, но требует доработки.
Да уж. Требует. Доработал:
Код:
[B]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.[/B]
Обратите особое внимание на:
1. Сравнение кодов первых букв фамилии.
2. Знак неравенства в сортировке - у Вас он был обратным.
 
про знак осознал, моя ошибка
щас разбираю п.1
спасибо
 
а как сделать, что бы теперь фамилии выводились в алфавитном порядке только у тех футболистов, которые забили 1 и более голов?
 
а как сделать, что бы теперь фамилии выводились в алфавитном порядке только у тех футболистов, которые забили 1 и более голов?
Либо объявить дополнительный массив, содержащий число забитых голов, либо перейти от массивов к записям. В любом случае - организовать ввод информации о голах и в выводе поставить условный оператор.
 
а как можно программе объяснить, чтобы она сортировала фамилии, только тех футболистов, которые забили 1 и более голов?
я сформировал массив, фамилий, имен и голов
 
задача решена, паскаль не устоял перед моим напором
еще раз спасибо
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);
write(i,' имя ');
readln(name);
write('Голы ',i,'го ');
readln(gol);
fam:=fam+' '+name;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>=1 then
writeln(fam); end;
readln;
end.
 
Назад
Сверху