Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 16.12.2011, 19:50   #1 (permalink)
ljrerby
Member
 
Регистрация: 24.08.2010
Сообщений: 65
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Фамилии в алфавитном порядке

Суть программы: ввести количество футболистов(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.
ljrerby вне форума   Ответить с цитированием

Старый 16.12.2011, 19:50
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Я думаю, что проблему решать легче есть набраться больше информации

Напечатать в алфавитном порядке все глухие согласные буквы
Вывести строку в алфавитном порядке. Delphi

Старый 16.12.2011, 20:19   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от ljrerby Посмотреть сообщение
Программа вроде написано, но требует доработки.
Да уж. Требует. Доработал:
Код:
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. Знак неравенства в сортировке - у Вас он был обратным.
Vladimir_S вне форума   Ответить с цитированием
Старый 17.12.2011, 01:13   #3 (permalink)
ljrerby
Member
 
Регистрация: 24.08.2010
Сообщений: 65
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

про знак осознал, моя ошибка
щас разбираю п.1
спасибо
ljrerby вне форума   Ответить с цитированием
Старый 23.12.2011, 12:56   #4 (permalink)
ljrerby
Member
 
Регистрация: 24.08.2010
Сообщений: 65
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

а как сделать, что бы теперь фамилии выводились в алфавитном порядке только у тех футболистов, которые забили 1 и более голов?
ljrerby вне форума   Ответить с цитированием
Старый 23.12.2011, 13:02   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от ljrerby Посмотреть сообщение
а как сделать, что бы теперь фамилии выводились в алфавитном порядке только у тех футболистов, которые забили 1 и более голов?
Либо объявить дополнительный массив, содержащий число забитых голов, либо перейти от массивов к записям. В любом случае - организовать ввод информации о голах и в выводе поставить условный оператор.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 23.12.2011, 13:32   #6 (permalink)
ljrerby
Member
 
Регистрация: 24.08.2010
Сообщений: 65
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

а как можно программе объяснить, чтобы она сортировала фамилии, только тех футболистов, которые забили 1 и более голов?
я сформировал массив, фамилий, имен и голов
ljrerby вне форума   Ответить с цитированием
Старый 23.12.2011, 14:07   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от ljrerby Посмотреть сообщение
я сформировал массив, фамилий, имен и голов
А покажите.
Vladimir_S вне форума   Ответить с цитированием
Старый 23.12.2011, 14:14   #8 (permalink)
ljrerby
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.
ljrerby вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 23:34.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.