Самая длинная строка в массиве

Задача

Вводятся строки. Определить самую длинную строку и вывести ее номер на экран. Если самых длинных строк несколько, то вывести номера всех таких строк.

Пояснение к задаче и алгоритм решения

  1. При считывании строк, каждую из них следует поместить в массив.
  2. Предположим, что первая строка самая длинная. Присвоим ее индекс переменной.
  3. Переберем все элементы-строки массива, начиная со второго. Если длина очередной строки больше, чем той, индекс которой записан в переменной (п. 2), то записать в эту переменную индекс текущей строки.
  4. Снова переберем все элементы массива строк. Если длина очередной строки совпадает с длиной той строки, индекс которой хранится в переменной (п. 2), то вывести ее номер на экран.

Исходный код на языке программирования Pascal

const N = 5;
var
    ss: array[1..N] of string;
    i,ind: byte;
begin
    for i:=1 to N do begin
        write(i,'-я: ');
        readln(ss[i]);
    end;
 
    ind:=1;
    for i:=2 to N do
        if length(ss[i]) > length(ss[ind]) then
            ind := i;
 
    for i:=1 to N do
        if length(ss[i]) = length(ss[ind]) then
            write(i, ' ');
    writeln;
end.

Пример(ы) выполнения программы на языке Pascal

1-я: this is town
2-я: cat walk
3-я: lamp
4-я: blue lamp!!!      
5-я: ok
1 4

Исходный код на языке программирования C

#include <stdio.h>
#include <string.h>
#define N 5
main() {
    char str[N][30];
    int i,ind;
    for (i=0; i<N; i++) {
        printf("%d-я: ",i+1);
        gets(str[i]);
    }
    ind = 0;
    for (i=1; i<N; i++)
        if (strlen(str[i]) > strlen(str[ind]))
            ind = i;
 
    for (i=0; i<N; i++)
        if (strlen(str[i]) == strlen(str[ind]))
            printf("%d ",i+1);
    printf("\n");
}

Исходный код на языке программирования Python

N = 5
a = []
for i in range(N):
    print(i+1,end='-я: ')
    a.append(input())
ind = 0
for i in range(1,N):
    if len(a[i]) > len(a[ind]):
        ind = i
 
for i in range(N):
    if len(a[i]) == len(a[ind]):
        print(i+1)

Исходный код на языке программирования КуМир

алг самая длиная строка
нач
  лит таб ss[1:5]
  цел i, id
  нц для i от 1 до 5
    вывод i, "-я: "
    ввод ss[i]
  кц
  id := 1
  нц для i от 2 до 5
    если длин(ss[i]) > длин(ss[id]) то
      id := i
    все
  кц
  нц для i от 1 до 5
    если длин(ss[i]) = длин(ss[id]) то
      вывод i, " "
    все
  кц
кон

Исходный код на языке программирования Basic

N = 5
dim s$(N,20)
for i=0 to N-1
        print (i+1)+"-я: ";
        input s$[i]    
next i
 
ind = 0
for i=1 to N-1
        if length(s$[i]) > length(s$[ind]) then ind = i
next i
for i=0 to N-1
        if length(s$[i]) = length(s$[ind]) then print i+1
next i

Тема

Строки

Уровень сложности

Средний

Дата публикации