Как найти номер строки в паскале

0 / 0 / 0

Регистрация: 07.12.2015

Сообщений: 17

1

составить программу нахождения номера строки

11.12.2015, 08:37. Показов 2152. Ответов 13


Студворк — интернет-сервис помощи студентам

составить программу нахождения номера строки, в которой расположен максимальный элемент любого столбца двумерного массива. если элементов с максимальным значением в этом столбце несколько, то должен быть найден номер строки самого нижнего из них.
Это как получается столбцы мы сами вводим? и как можно найти который нижний из них?



0



vint-81

охотник

1011 / 535 / 650

Регистрация: 29.09.2014

Сообщений: 1,083

11.12.2015, 10:29

2

Лучший ответ Сообщение было отмечено BesEE как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const n=5;m=8;
type mas=array[1..n+1,1..m] of integer;
var a:mas;
    i,j:integer;
begin
 randomize;
 writeln('A:');
 for i:=1 to n do
  begin
   for j:=1 to m do
    begin
     a[i,j]:=random(11);
     if i=1 then a[n+1,j]:=1
            else if a[i,j]>=a[a[n+1,j],j] then a[n+1,j]:=i;
      write(a[i,j]:3)
    end;
   writeln
  end;
writeln('HoMepa:');
for j:=1 to m do write(a[n+1,j]:3);readln
end.



1



0 / 0 / 0

Регистрация: 07.12.2015

Сообщений: 17

11.12.2015, 14:30

 [ТС]

3

а почему везде n+1?



0



0 / 0 / 0

Регистрация: 07.12.2015

Сообщений: 17

11.12.2015, 14:41

 [ТС]

4

выходит вот как

Код

A:
  0  4  7  5  1  8  0  8
  2  3 10  8  0  8  7  6
  8  0  3  6  9  5 10  7
  7  8  9  3  1  3  2  7
  6  6  9  2  7  5  4  7
HoMepa:
  3  4  2  2  3  2  3  1



0



охотник

1011 / 535 / 650

Регистрация: 29.09.2014

Сообщений: 1,083

11.12.2015, 14:50

5

в Вашем примере:
в 1 столбце максимальный находится в 3 строке
во 2 – в 4 строке
в 3 – во 2 строке

в 6 столбце максимальных два; “нижний” из них в строке номер 2



0



0 / 0 / 0

Регистрация: 07.12.2015

Сообщений: 17

13.12.2015, 17:41

 [ТС]

6

что все таки из этого находит самый нижний? всмысле какая именно строчка?



0



vint-81

охотник

1011 / 535 / 650

Регистрация: 29.09.2014

Сообщений: 1,083

13.12.2015, 18:02

7

Цитата
Сообщение от BesEE
Посмотреть сообщение

что все таки из этого находит самый нижний? всмысле какая именно строчка?

самый нижний:

Pascal
14
else if a[i,j]>=a[a[n+1,j],j] then a[n+1,j]:=i;

если бы неравенство было строгим, то был бы найден номер строки первого(“верхнего”) максимального элемента в столбце



0



0 / 0 / 0

Регистрация: 07.12.2015

Сообщений: 17

13.12.2015, 18:34

 [ТС]

8

всмысле строгим?



0



vint-81

охотник

1011 / 535 / 650

Регистрация: 29.09.2014

Сообщений: 1,083

13.12.2015, 18:36

9

Pascal
14
else if a[i,j]>a[a[n+1,j],j] then a[n+1,j]:=i;



0



0 / 0 / 0

Регистрация: 07.12.2015

Сообщений: 17

13.12.2015, 18:42

 [ТС]

10

объясните пожалуйста с 13 строчки совсем не понимаю как это вы находите максимальный элемент?



0



vint-81

охотник

1011 / 535 / 650

Регистрация: 29.09.2014

Сообщений: 1,083

13.12.2015, 18:55

11

Pascal
1
2
3
4
5
if i=1 then a[n+1,j]:=1{предполагаем, что элемент первой строки является максимальным в столбце,
            эту единицу(номер 1 строки) записываем в специально отведенную строку n+1}
            else if a[i,j]>=a[a[n+1,j],j] then a[n+1,j]:=i;{если нашли элемент который больше или 
            равен максимального элемента в текущем столбце, то в строку результатов:n+1
            записываем номер строки для текущего столбца}



0



BesEE

0 / 0 / 0

Регистрация: 07.12.2015

Сообщений: 17

13.12.2015, 19:30

 [ТС]

12

Спасибо большое за объяснения, вот я немного переделала, посмотрите в чем дело, строки находит не правильно

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const n=4;m=4;
var a:array[1..n+1,1..m] of integer;
    i,j,max:integer;
begin
randomize;
writeln('A:');
for i:=1 to n do begin
for j:=1 to m do
begin
a[i,j]:=random(10);
max:=a[1,j];
if a[i,j]>=max then a[n+1,j]:=i;
write(a[i,j]:3)
end;
writeln
end;
writeln('номера строк:');
for j:=1 to m do 
write(a[n+1,j]:3);
end.

Код

A:
  6  5  7  1
  7  2  9  4
  7  4  8  4
  0  0  0  7
номера строк:
  3  1  3  4



0



vint-81

охотник

1011 / 535 / 650

Регистрация: 29.09.2014

Сообщений: 1,083

13.12.2015, 20:08

13

При заполнении матрицы Вы проходите по строкам и максимальный пытаетесь найти в строке…
вот такой вариант подойдет?

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const n=5;m=8;
type mas=array[1..n,1..m] of integer;
     rez=array[1..m] of integer;
var a:mas;r:rez;
    i,j,max:integer;
begin
 randomize;
 writeln('A:');
 for i:=1 to n do
  begin
   for j:=1 to m do
    begin
     a[i,j]:=random(11);
     write(a[i,j]:3)
    end;
   writeln
  end;
for j:=1 to m do
  begin
   max:=1;
   for i:=1 to n do if a[i,j]>=a[max,j] then max:=i;
   r[j]:=max
  end; 
writeln('HoMepa:');
for j:=1 to m do write(r[j]:3);readln
end.

ps сложно исправлять ошибки на картинке…

Добавлено через 4 минуты
или без массива решений

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
const n=5;m=8;
type mas=array[1..n,1..m] of integer;
var a:mas;
    i,j,max:integer;
begin
 randomize;
 writeln('A:');
 for i:=1 to n do
  begin
   for j:=1 to m do
    begin
     a[i,j]:=random(11);
     write(a[i,j]:3)
    end;
   writeln
  end;
writeln('HoMepa:');  
for j:=1 to m do
  begin
   max:=1;
   for i:=1 to n do if a[i,j]>=a[max,j] then max:=i;
   write(max:3)
  end; 
end.



1



0 / 0 / 0

Регистрация: 07.12.2015

Сообщений: 17

14.12.2015, 09:00

 [ТС]

14

vint-81, ооо спасибо! вообще идеально



0



Александр Устименко

Просветленный

(24306)


6 лет назад

var i, j, n, min, c: integer;
a: array [1..100,1..100] of integer;
begin
write (‘n = ‘);
read (n);
c:=1;
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=10+random (90);
write (a[i,j]:4);
if (i = 1) and (j = 1) then min:= a[1,1];
if a[i,j] < min then
begin
c:=i;
min:=a[i,j];
end;
end;
writeln;
end;
writeln (c);
end.

Dmitry

Оракул

(52381)


6 лет назад

циклом перебирай все строки массива, при нахождении нужной строки выводи ее индекс (индексом послужит шаг цикла)

пример

for I := 0 to 10(количество элементов массива) do
begin
выполняем код
end;

после выполнения кода смотрим какой индекс содержал наименьшее значение, то и выводим – принцип работы объяснил, а вот код пиши сам

Редактировать

Символы и основные операции над ними

Символы имеют тип char, занимают 2 байта и хранятся в кодировке Unicode (UTF-16).

var c1: char;
var c2 := 'z';

Для преобразования символа c в код используется функция Ord(c), для обратного преобразования кода i в символ используется функция Chr(i).

begin
  var c := 'ю';
  Print(Ord(c)); // 1102
  Print(Chr(1102)); // ю
end.

Классический способ определить символ, следующий за данным в кодовой таблице, – это преобразовать символ в код, прибавить к коду число и потом преобразовать полученный код снова в символ:

Аналогично определяется предыдущий символ

Методы типа char

Методы, встроенные в тип char, делятся на две категории:

  • проверяющие, принадлежит ли символ указанной категории: c.IsDigit, c.IsLetter, c.IsLower, c.IsUpper
  • преобразующие символ: c.ToUpper, c.ToLower, c.ToDigit.

Отметим, что c.IsDigit эквивалентно (c >= '0') and (c <= '9') и эквивалентно c in '0'..'9'
Для c.IsLower, c.IsLower, c.IsUpper такой простой аналогии нет. Дело в том, что в этих методах проверяются все символы, являющиеся буквами в каком-то алфавите народов мира (в частности, английские и русские)

Отметим также, что c.IsLower возвращает True только если это буква в нижнем регистре – для не букв возвращается False.

Строки

Введение

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

Основная причина – многие методы строк в .NET считают, что строки индексируются с нуля, а в Паскале строки индексируются с 1.

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

Индексация строк

Строки в Паскале индексируются с 1. К символам строк можно обращаться по индексам – s[i].

Например:

begin
  var s: string;
  s := 'тор';
  Print(s[1],s[2],s[3]);
end.

Символы строк можно менять:

begin
  var s := 'пир';
  s[1] := 'м';
  Print(s); // мир
end.

Можно использовать индексацию с конца: s[^i] обозначает i-тый символ с конца

begin
  var s := 'мир';
  s[^1] := 'г';
  Print(s); // миг
end.

Циклы по строкам

begin
  var s := 'привет';
  for var i:=1 to s.Length do
    s[i] := Chr(Ord(s[i])+1);
  Print(s);
end.  
foreach var c in s do
  Print(c);  

Операции +, *n и in

Строки можно складывать и умножать на целое положительное число

Пример. Генерация строки ‘abcdefghijklmnopqrstuvwxyz’

Идея. Начать с пустой строки. Всякий раз в цикле добавлять к строке символы от ‘a’ до ‘z’

Код

begin
  var s := '';
  for var c := 'a' to 'z' do
    s += c;
end.  

Методы Count, CountOf, Where

Чтобы посчитать количество символов в строке, удовлетворяющих определённому условию, используется метод Count. Если нужно посчитать, сколько раз встречается определенный символ, используется более простой метод CountOf

begin
  var s := 'абракадабра';
  s.CountOf('а').Print;
  s := 'а123бр45а67к89адабра';
  s.Count(c -> c.IsDigit).Print;
end.  

Если в строке надо отфильтровать только определенные символы, используется метод Where. Он возвращает последовательность символов, которую можно назад преобразовать к строке, используя метод JoinToString:

begin
  var s := 'а123бр45а67к89адабра';
  s := s.Where(c -> c.IsLetter).JoinToString;
end.  

s.ToWords и разбиение строки на слова

Метод s.ToWords разбивает строку на массив слов, используя пробел в качестве разделителя. Полученный массив можно преобразовать и слить в строку, используя метод JoinToString:

begin
  var s := 'как однажды жак звонарь головой сломал фонарь';
  var a := s.ToWords;
  Sort(a);
  s := a.JoinToString
end.  

По умолчанию JoinToString разделяет слова пробелами

Функция Pos и процедуры Delete, Insert

Pos(subs,s) возвращает позицию первого вхождения подстроки subs в сторке s или 0 если подстрока не найдена

Pos(subs,s,from) начинает искать подстроку в строке с позиции from.

Следующий код выводит позиции всех вхождений s1 в s:

begin
  var s := 'абракадабра';
  var s1 := 'бра';
  var p := Pos(s1,s);
  while p>0 do
  begin
    Print(p);
    p := Pos(s1,s,p+s1.Length);
  end;
end.

Формулировка задачи:

В двумерном массиве А[6,5] найти номер строки, для которой среднеарифметическое значение её элементов максимально.

Код к задаче: «Номер строки.»

textual

for i:=1 to 6 do begin
for j:=1 to 5 do begin
sum:=sum+a[i,j];

Полезно ли:

6   голосов , оценка 4.000 из 5

На занятии будет рассмотрен Строковый тип данных в Паскаль и примеры работы с ним

Содержание:

  • Символьный тип char в Паскале
    • Основные функции для работы с символами
  • Строковые переменные в Паскаль
  • Функции работы со строками в Pascal
  • Стандартные методы и запросы (pascalAbc.net)
    • Посимвольный ввод до пробела

Символьный тип char в Паскале

Символьной переменной соответствует тип char:

Инициализация символьной переменной:

Основные функции для работы с символами

Функция преобразует целое число, имеющее тип BYTE, в один символ ASCII-кода:

Пример: распечатать двойную кавычку по ее коду в ASCII-таблице

1
2
3
4
5
6
7
var a:char;
    i:byte;
begin
     i:=34; {код, соответствующей символу " в ASCII-таблице}
     a:=chr(i);
     writeln(a)
end.

Функция возвращает порядковый номер символа параметра в таблице ASCII:

Пример: Распечатайте часть таблицы ASCII, конкретнее — символы, соответствующие кодам 32-255

1
2
3
4
5
var i: integer;
begin
     for i:=32 to 255 do
         write(chr(i):3);
end.

Примеры:

var c := 'Ю';
var n := Ord(c); // n := c.Code
Print(n); // 1070
c := Chr(n);
print(c); // Ю

Символьные константы: #код – символ с определенным кодом:

#10 – новая строка (Linux)
#13#10 – новая строка (Windows)
#9 – tab 
Print('a'#10'b');

Методы класса типа char

char.IsLetter(с); // буква ли, boolean
char.IsDigit(с); // десятичное ли число, boolean
char.IsLower(с); // буква нижнего регистра, boolean
char.IsUpper(с); // буква верхнего регистра, boolean
char.IsPunctuation(с); // знак препинания, boolean
 
с := char.ToLower(с) ;
с := char.ToUpper(с);

Операции для типа char

c1 < c2;// сравнение по коду
c1 > c2;
с in ['a','e','i','o','u',’y’]; // c принадлежит гласным
с in ['a'..'z','A'..'Z’]; // c принадлежит английским буквам

Задание:
Запросите ввести два символа. Определите, принадлежат ли символы английским буквам, и если да, то гласные ли это буквы. Преобразуйте в верхний регистр ту букву, код которой меньше.

Пример вывода:

Введите два символа:
u z
u - английская буква, гласная
z - английская буква, не гласная
Буква u в верхнем регистре U

Некоторые выражения:

//c принадлежит диапазону:
c.InRange('a'..'z');  
 
//Трансформация символа в цифру: 
var n := Ord(c)Ord('0');
 
// Увеличение кода символа на n: 
c := Chr(Ord(c) + n);
   // или 
Inc(c,2);

Строковые переменные в Паскаль

Строковые переменные в Паскале имеют тип String

Объявление и инициализация строковой переменной:

1
2
3
4
5
var a:string;
begin
 a:='Привет всем!';
 writeln(a);
end.

Ввод значения строковой переменной с клавиатуры:

1
2
3
4
5
6
var a:string;
begin
 writeln('Введите слово');
 readln(a);
 writeln('Вы ввели слово ',a);
end.

Строка «рассматривается» компилятором, как массив букв:

для компилятора:

s[1]='Б'   s[2]='а'   s[3]='н'   s[4]='к'   s[5]='а'

Важно: Значения строковых переменных всегда заключаются в одинарные кавычки

Функции работы со строками в Pascal

Исходные данные Операция Результат
s1:='Мото';      s2:='роллер'
s3:=s1+s2;
s3=’Мотороллер’
s5:='Мотороллер';
k:=Pos('рол',s5);
k=5
s3:='Мотороллер';
l:=Length(s3);
l=10
s3:='астроном';
s4:=Copy(s3,3,4);
s4= ‘трон’
s5:='Коробочка';
Delete(s5,4,2);
s5=’Корочка’
s6:='Рука'; s7:='баш';
Insert(s7,s6,3);
s6=’Рубашка’
x:=2.73284;
Str(x:4:2,s8);
s8=’2.73′
s8='2.73';
Val(s8,x,Osh);
x=2.73

Пример: Подсчитать кол-во букв «f» в тексте.

Показать решение:

Паскаль PascalAbc.NET
1
2
3
4
5
6
7
8
9
10
11
var s:string[30];
    n,i:integer;
begin
 writeln('введите текст');
 readln(s);
 n:=0;
 for i:=1 to length(s) do
     if s[i]='f' then
        n:=n+1;
 write('в тексте букв f = ',n)
end.
1
2
3
4
5
6
7
8
begin
  var s := readString('введите текст');
  var n := 0;
  foreach var c in s do
    if c = 'f' then
      inc(n);
  Print(n);
end.
 

Операции со строками:

s1 + s2  // конкатенация s1 и s2
s1 += s2  
s1 < s2  // лексикографическое сравнение
  'abcd' < 'aad'
s * n    // конкатенация n копий строки s
s[a:b]       // срез (индексация с 1)
s[a:b:step]  // срез с шагом
s?[3:5]   ;   // безопасный срез (не вызывает ошибок)
s?[a:b:step] // безопасный срез с шагом
s1 in s

String 1. Дан текст. Удалить в нём все слова кот. Выполнить задание двумя способами: используя стандартные функции работы со строками, и, работая со строкой как с массивом символов.

Пример выполнения:

введите строку 
мой кот - хороший кот
Результат: мой  - хороший 

* Задание повышенной сложности: запросить у пользователя ввести подстроку, которую требуется удалить из исходной строки.

String 2. Составить программу проверки, есть ли в тексте буква s. Выдавать true (если найдено) или false (если не найдено).
Примеры использования логического типа (true и false) смотрите здесь.

Пример выполнения:

Введите строку:
Hello world
Результат: false
Введите строку:
Hello students
Результат: true

String 3. Имеется строка текста. Требуется написать программу, которая зашифровывала бы ее в другую строку — заменяя каждый символ текста символом, следующим по порядку в таблице ASCII. Тогда слово КОТ превратится в слово ЛПУ. Требуется составить и программу дешифровки.
Использовать функции для работы с символами: chr и ord pascal.

String 4. Дано предложение, определить количество слов в нём.
Подсказка: считать количество слов по количеству пробелов в строке.

* усложненный вариант: предусмотреть, что в начале или в конце введенной строки введен пробел

Пример: Найти количество цифр в строке.

Показать решение:

Паскаль PascalAbc.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const
  m = ['0'..'9'];
 
var
  s: string;
  i, k: byte;
 
begin
  read(s);
  k := 0;
  for i := 1 to length(s) do
    if s[i] in m then inc(k);
  writeln('цифр  = ', k);
  readln;
end.
1
2
3
4
5
6
7
8
begin
  var s := readString;
  var k := 0;
  foreach var c in s do
    if char.IsDigit(c) then
      k += 1;
  Print($'цифр  = {k}');
end.

Пример: Определить является ли данное слово перевертышем (палиндромом).

Показать решение:

Паскаль PascalAbc.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
var a,b,c:string;
    i:longint;
begin
write('введите слово:');
readln(a);
b:='';
for i:=1 to length(a) do
    b:=a[i]+b;
if a=b then
   write('перевертыш')
   else
   write('не перевертыш');
end.
1
2
3
4
5
6
7
8
9
10
// с помощью среза
begin
  var s := readString;
  var n := s.Length;
  var s1 := s[::-1];
  if s = s1 then
    print('перевертыш')
  else
    print('не перевертыш');
end.

String 5. Составить программу подсчета количества встречаемых в тексте сочетаний букв «ма».

String 6. Определить, встречается ли в тексте сочетание букв «ку».

Пример выполнения:

Введите строку:
Кума
Результат: да
Введите строку:
Дед
Результат: нет

String 7. Заменить данную букву в слове другой буквой (буквы вводит пользователь).

Пример выполнения:

Введите строку:
Барабулька
Введите букву, которую заменить:
а
Введите букву, на которую заменить:
у
Результат: Бурубульку

String 8. Дано предложение, определить количество слов, начинающихся с буквы «к».

String 9. Дано предложение, состоящее из букв и цифр. Определить слово с наибольшим количеством букв (не цифр). В качестве подсказки можете использовать предложенный ниже алгоритм:

Пример выполнения:

Введите строку:
1234567891011слово следующееСлово иСледСлово
Слово с максимальным количеством букв:
следующееСлово 

Алгоритм:

  • После того как строка считывается (вводится), измеряется ее длина (функция length).
  • Далее стока просматривается посимвольно в цикле while или for.
  • Если символ строки входит в множество букв (const letters=['a'..'z'];), то этот символ прибавляется к первому элементу массива слов строки (... array [1..100] of string).
  • Если символ равен пробелу, то увеличиваем счетчик для массива слов и переходим к следующей итерации цикла.
  • String 10. Дано предложение. Расположить слова в нем в порядке возрастания числа букв в словах. В качестве подсказки можете использовать предложенный ниже алгоритм:

    Алгоритм:

  • В цикле до конца длины строки выполняем: если текущий символ строки — не пробел, то формируем элемент массива arrayS (arrayS: array[1..100] of string; строковый массив — будущий массив из слов предложения). Добавляя каждую букву к элементу arrayS[k].
  • При достижении пробела переходим к следующему элементу arrayS[k] и начинаем формировать следующее слово.
  • После того, как массив из всех слов arrayS сформирован: выполняем сортировку массива по длине букв в словах.
  • String 11. Ввести имя, отчество и фамилию. Преобразовать их к формату «фамилия-инициалы».

    Пример:
    
    Введите имя, фамилию и отчество:
    Иван Алибабаевич Попов
    Результат:
    Попов И.А. 
    

    Примечание:
    Использовать функции: Pos, Copy, Delete

    String 12. Программа должна позволять ввести текст, и потом удалять в нем все восклицательные знаки, расположенные непосредственно перед запятой, и выводить измененный текст на экран.

    Пример:

    Входной текст: 
    Алгоритм — это  правила выполнения определенных действий!,
     предписание исполнителю! совершить последовательность действий!, 
    набор команд для компьютера!
    Выходной текст:
    Алгоритм — это  правила выполнения определенных действий, 
    предписание исполнителю! совершить последовательность действий, 
    набор команд для компьютера!
    

    Трудность низкая:
    Программа должна формировать в памяти вторую строковую переменную с измененным текстом, а потом выводить ее на экран.

    Трудность высокая:
    Программа должна преобразовывать исходную строку без использования дополнительных переменных, и затем выводить ее на экран.

    А теперь рассмотрим олимпиадное задание по Паскалю:

    Задача Цезарь: Шифр Цезаря заключается в том, что каждая буква исходной строки заменяется третьей после нее буквой в алфавите, который считается написанным по кругу (все символы текста латинские и прописные).

    * Решить ту же задачу, в которой сдвиг будет не на 3 позиции, а на k, причем отрицательное значение является признаком сдвига влево, положительное — вправо.

    Показать решение:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    var a:char;
        i,n:byte;
        s,s1:string;
    begin
    s1:='';
    readln(s);
    for i:=1 to length(s) do
        begin
         n:=ord(...); 
         n:=n+3;
         if n=123 then n:=97; {в ASCII 120 - x, 97 - a}
         if ...; {в ASCII 121 - y, 98 - b}
         if ...; {в ASCII 122 - z, 99 - c}
         a:=chr(...);
         s1:=...;
         end;
         writeln(s1)
    end.

    Стандартные методы и запросы (pascalAbc.net)

  • CountOf — количество вхождений
  • 'мама мыла раму'.CountOf('м').Print; // 4
  • Contains — содержит ли (логическая)
  • 'мама мыла раму'.Contains('б').Print; // False
  • IndexOf — индекс искомого вхождения
  • 'hello world'.IndexOf('w').Print; // 6
  • Remove — удаление вхождения
  • 'hello world'.Remove(' ').Print; // helloworld
  • Replace — замена вхождений символа на другой символ
  • 'hello world'.Replace('l','L').Print; // heLLo worLd

    и другие…

    Запросы LINQ со строками

    * LINQ (Language Integrated Query) — язык интегрированных запросов

  • Where — Фильтрация массива (последовательности) с условием
  • var sArr:=Arr('aab','bcd','efg');
    sArr.Where(w->w.Contains('b')).Print; // aab bcd
    sArr.Where(w->w.CountOf('a')=2).Print; // aab

    Задания: Предыдущие задания выполнить с использованием стандартных методов и запросов фильтрации.

    Посимвольный ввод до пробела

    Посимвольный ввод удобен для «мгновенной» обработки символов в строке.

    Пример: посимвольно считывать фамилию

    Решение:

    var name: array[1..n] of string;
        c:char;
    ...
    

    посимвольный ввод строк

    Для организации массива символьных строк:

    Пример: посимвольно считывать фамилии и заносить их в массив фамилий

    Решение:
    массив символьных строк

    String 13. Программа должна позволять ввести предложение до точки (.). Необходимо в введенном тексте вместо всех букв «ё» ставить буквы «е». Выполнить, работая со строкой посимвольно: программа должна формировать в памяти вторую строковую переменную с измененным предложением, а потом выводить ее на экран.

    Пример:

    Входной текст: 
    Алгоритм — это  правила выполнения определённых действий.
    Выходной текст:
    Алгоритм — это  правила выполнения определенных действий.
    

    String 14. с клавиатуры вводится число N, обозначающее количество студентов в группе, а затем – N строк, в каждой из которых – информация о студенте в формате:
    <Фамилия> <год рождения> <оценка>

    1. Все данные разделяются одним пробелом. Нужно подсчитать, сколько студентов получили отметку 5.
    2. Вывести фамилии студентов, у которых оценка 2.
    3. Вывести фамилии студентов, родившихся в 1996 году.

    Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

    проверь себя

    Добавить комментарий