Задача на Паскале. Задан список из десяти городов. Поменять местами название первого города и города,начинающегося с буквы К

Поменять местами название первого города

Задан список из десяти городов. Поменять местами название первого города и города,начинающегося с буквы К

В задаче дан список из 10 городов, в котором три города на букву «К», это город — «Краснодар», «Крымск» и «Керчь». Необходимо в списке поменять местами первый город на букву «К» — это Краснодар и заменить его на первый город в списке — это Анапа. При этом города Крымск и  Керчь, которые в списке на букву «К» заменять н нужно.


Подробное решение на языке «Паскаль»  для данного урока представлено ниже:

//Задан список из десяти городов. Поменять местами название первого города и первого города,начинающегося с буквы "К"
Program city;
const
  n=10;
var a:array[1..n] of string[20];
    i,p,imax,imin: integer;
    k_city,one_city:string;
begin
 for i:=1 to n do
  begin
   a[1]:='Анапа';
   a[2]:='Москва';
   a[3]:='Санкт-Петербург';
   a[4]:='Вологда';
   a[5]:='Ялта';
   a[6]:='Краснодар';
   a[7]:='Крымск';
   a[8]:='Владивосток';
   a[9]:='Керчь';
   a[10]:='Геленджик';
  end;
one_city:=a[1];//запоминаем название первого города
writeln('Список городов перед заменой:'); 
for i:=1 to n do
  begin
   writeln('Город №',i, '-',a[i]);
  end;
  
  imax := 1;//максимальному индексу присваиваем значение = 1
  for i:=1 to n do
   begin
    for p:=1 to length(a[i]) do
      if (a[i][p]='К') and (i > imax)  then
            imax := i; //ищем город на букву К с максимальным индексом     
   end;
 
  imin := 1000;//минимальному индексу присваиваем значение = 1000
  for i:=1 to n do
   begin
    for p:=1 to length(a[i]) do
      if (a[i][p]='К') and (imin>imax)  then
      begin
        imin := i; //записали индекс(номер) первого города на букву "К"
        k_city:=a[i];//записали первый город на букву "К"
        a[1]:=k_city;//первый город в списке(Анапа) заменили на первый город на букву "К"(Краснодар)
        a[imin]:=one_city;//Вместо первого города Краснодар записали город Анапа
      end;
   end;
 
  writeln('Список городов после замены:');    
    for i:=1 to n do
      writeln('Город №',i, '-',a[i]);
end.

РЕШЕНИЕ

Введем обозначения некоторых переменных:

imin— индекс(номер) минимального элемента массива, т.е. первый город в списке на букву «К» (Краснодар)
imax — максимальный индекс(номер) элемента массива, т.е последний в списке город на букву «К» (Керчь)
k_city — название первого города на букву «К» (Краснодар)
one_city — название первого города в списке (Анапа)

Первый город на букву «К» в списке — это минимальное значение элемента массива. Сначала в цикле нужно найти максимальный индекс города на букву «К». Это город Керчь с индексом 9.

Далее в следующем цикле ищем индекс минимального элемента массива, который не больше максимального, т.е 9 и делаем замену городов.

Foxford
Информатика в школе