2017-01-25

04. Программы для работы со строками на PascalABC

Задача 1

Написать программу, в которую на вход подается исходная строка, в которой одно из слов неправильное - его нужно заменить словом-заменителем. Неправильное слово (слово-образец) и слово-заменитель также вводятся с клавиатуры.

Решение:

program poisk_podstroki;

  var
     str:string;
     word1, word2: string[50];
     len, position:integer;
   
begin

    writeln('Введите слово образец:');
    readln(word1);

    writeln('Введите слово заменитель');
    readln(word2);

    writeln('Введите исходную строку');

    readln(str);
    len:=length(word1);
    position:=pos(word1, str);


    while position <> 0 do          //пока в строке str есть слово-образец
    begin
           delete(str,position,len);
           insert(word2,str, position);
           position:=pos(word1,str);       
//новый поиск подстроки word1
    end;

         writeln(str);
end.

------------------------------------------------------

Задача 2

Ввести строку и определить является ли она палиндромом (Палиндром - строка, которая может быть прочитана одинаково как слева направо, так и справа налево: казак, шалаш, мадам, наворован, потоп, летел, кабак, .....)

 

Решение:

program palindrom;
var str: string[30];
k,i,n:integer;
ft:boolean;
begin
    readln(str);
    n:=length(str);
    ft:=true;
    for i:=1 to n div 2 do
        if str[i]<>str[n-i+1] then
        ft:=false;

    if ft=true then
       writeln('Палиндром')
    else
        writeln('Не палиндром');
end.

-------------------------------------------------------------------------------------------

Задача 3

Дана строка символов. Группа символов между пробелами считается словом. Подсчитать количество слов в строке.

Решение.  Из условия понятно, что задачу можно решить, перебирая строку посимвольно. Сравнивая каждый символ с пробелом, можно подсчитать их количество. Количество слов будет на одно больше. Например, строка "Мама мыла раму" содрежит два пробела и три слова. Программу можно записать так:

program podschet_strok;
var st:string[30];
    i,k:integer;
begin
    readln(st);
    for i:=1 to length(st) do
    if st[i]=' ' then k:=k+1;
    writeln('количество слов в строке равно ',k+1);
end.

------------------------------------------------------------------

Задача 4

Из введенной с клавиатуры строки удалить все лишние пробелы (между словами оставить строго по одному пробелу)

Решение:

 

program del_probel;
var
str:string; p:integer;
begin
    readln(str);
    while true do
    begin
        p:=pos('  ',str);
        if p<>0 then
           delete(str,p,1)
        else
        break;
    end;
     writeln(str);
end.

Эта же задача в видеоформате:

 

-------------------------------------------------------------------------------------------

 


article

Авторизация
Логин:
Пароль:

Добро пожаловать,
гость сайта!

Статистика по сайту:

Сегодня сайт уже посетили 88 чел.

Количество всех статей на сайте: 464.

Количество online-тестов: 210.