Строки в Pascal

Строковый тип данных, процедуры и функции для работы со строками в Pascal. Массивы символов.

Комментарии

Написать программу, которая удлиняет все встреченные буквы «и» во введенной фразе на величину, равную количеству найденных «и» на данных момент.

Ответ на от Гость (не проверено)

program stroki;
var
  s: string;
  i: byte;
begin
  write('введите строку: '); read(s);
  writeln;
  i := 1;
  while i <= length(s) do
   begin
   if (s[i] in ['/','\']) then
    begin
    delete(s, i, 1);
    i := i - 1;
    end;
   inc(i);
   end;
  writeln(s);
  writeln(); 
  writeln(); 
end. 

Ответ на от Гость (не проверено)

var
  s: string;
  i: integer;
  f: boolean;
 
begin
  write('Текст: ');readln(s);
  for i := 1 to length(s) - 2 do
  begin
    if (s[i] = 'o') and (s[i + 1] = 'n') and (s[i + 2] = 'e') then 
    begin
      f := true;
      break;
    end;
  end;
 
  if f then writeln('Есть!') else writeln('Нет!');
 
end.

Ответ на от Гость (не проверено)

var
  s: string;
  f: boolean;
  ch: set of char := ['a'..'z','0'..'9','а'..'я',' ','A'..'Z','А'..'Я'];
begin
  readln(s);
  for var i:=1 to length(s) do
    if (s[i] in ch) then f:=false
    else 
      begin
      f:=true;
      break;
      end;
 
 
    writeln;
    if f then writeln('Содержит!') else writeln('Не содержит!');
 
 
end.

Ответ на от Гость (не проверено)

// Если есть одинаковое кол-во максимальных букв - выводит первое из списка)
var
  s: string;
  max_c, k: integer;
  max_b: char;
  mas1: array [1..1000] of char;
  mas2: array [1..1000] of integer;
 
begin
  readln(s);
  k := 2;
  for var i := 1 to 1000 do mas2[i] := 1;
 
  mas1[1] := upcase(s[1]);
 
  for var i := 2 to length(s) do
  begin
    if s[i] = ' ' then
    begin
      mas1[k] := upcase(s[i + 1]);inc(k); end;
  end;
 
 
  for var i := 1 to k - 1 do
    for var j := i + 1 to k do
    begin
      if mas1[i] = mas1[j] then inc(mas2[i]);
    end;
 
  max_c := -1;
  for var i := 1 to k do
  begin
    if max_c < mas2[i] then max_c := mas2[i];
  end;
 
  for var i := 1 to k do
    if max_c = mas2[i] then begin max_b := mas1[i];break; end;
 
  writeln;
  writeln('Буква: ', max_b, '. Кол-во: ', max_c);
end.

Ответ на от Гость (не проверено)

В данном случае буквы в строке могут использоваться многократно. При тестирование в Linux на FreePascal корректно отображается если вводимая строка на английском языке.

var
    s, w: string;
    ls, lw, i, j, let: byte;
begin
    readln(s);
    ls := length(s);
    randomize;
    for i:=1 to 7 do begin
        lw := random(4) + 2;
        w := '';
        for j:=1 to lw do begin
            let := random(ls)+1;
            if s[let] <> ' ' then
                w := w + s[let];
        end;
        writeln(w);
    end;
end.

1- Верно ли, что в строке записано число. 2- Подсчитать кол-во гласных букв в тексте.

Ответ на от Гость (не проверено)

var
  s: string;
  i: integer;
  c: set of char;
 
begin
  readln(s);
  c := ['0'..'ф9'];
  for i := 1 to Length(s) do
    if s[i] in c then begin writeln('Верно!'); break; end;
end.

Ответ на от Гость (не проверено)

var
    s, w: string;
    l,i: byte;
    count: byte;
begin
    readln(s);
    l := length(s);
    w := '';
    count := 0;
    for i:=1 to l do
        if s[i] <> ' ' then w := w + s[i]
        else
            if w <> '' then begin
                writeln(w);
                w := '';
                count := count + 1;
            end;
    if w <> '' then begin // последнее слово после которого нет пробела
        writeln(w); 
        count := count + 1;
    end;
    writeln(count);    
end.

 

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

  1. Нормализовать строку
  2. Для 1 варианта: после 1-го и 4-го слов вставить их порядковые номера

Для 2 варианта: после 2-го и 5-го слов вставить их порядковые номера

Вход: __I__develop_____software__with___friendly___user_interface
Нормализованная строка: I_develop_software_with_friendly_user_interface
Выход: 1 вариант: I[1]_develop_software_with[4]_friendly_user_interface
2 вариант: I_develop[2]_software_with_friendly[5]_user_interface

Рекомендации: для приведения числовой переменной к переменной строкового типа использовать готовую стандартную функцию IntToStr.

Пример использования:

Program Example74;
 
{ This program demonstrates the IntToStr function }
 
Uses sysutils;
 
Var s:string;
	i,f: byte;
 
Begin
  f:=3;
  s:='';
  for i:=1 to 7 do 
  begin
	f:=f*2;
	s:=s + '[' + IntToStr(f) + ']';
  end;
  writeln(s);
End.

Ответ на от Гость (не проверено)

Если правильно понял условие, то вот:

var
strk: string;
i: longint;
 
begin
write('LINE: ');
readln(strk);
for i := 1 to length(strk) do
if length(strk) < 4 then break else
if ((strk[i] = 'b') and (strk[i + 1] = 'a') and (strk[i + 2] = 'l') and (strk[i + 3] = 'l')) then
insert('on', strk, i + 4);
writeln('LINE(NEW): ', strk);
end.

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

Ответ на от Гость (не проверено)

uses
  crt;
 
var
  slovo: array [1..250] of string;
  stroka: string;
  i, j, k: integer;
 
begin
  write('Vvedite danie: ');
  readln(stroka);
  j := 1;
  k := 0;
  slovo[j] := '';
  for i := 1 to length(stroka) do
  begin
    if stroka[i] <> ' ' then
      slovo[j] := slovo[j] + stroka[i]
    else j := j + 1;
  end;
 
 
  for j := j downto 1 do
    if slovo[j][1] = slovo[j][length(slovo[j])] then k := k + 1;
 
  writeln('Otvet = ', k);
  readkey();
end.

В строке S все слова, которые начинаются на гласную букву, изменять следующим образом: поменять местами первый и последний символы. Слова разделены хотя бы одним пробелом.

Ответ на от Гость (не проверено)

var
	s:string;
	i,n:integer;
	c:char;
begin
	write('Введите строку: ');
	read(s);
	while i<length(s) do
	begin
		inc(i);
		if (s[i] in ['A','a','E','e','I','i','O','o','U','Y',
		             'А','а','Е','е','Ё','ё','И','и','О','о',
		             'У','у','Ы','ы','Э','э','Ю','ю','Я','я'])
			and ((i=1) or (s[i-1]=' ')) then
		begin
			n:=i;
			c:=s[i];
			repeat
				inc(i);
			until (s[i]=' ') or (i=length(s));
			if s[i]=' ' then
			begin
				s[n]:=s[i-1];
				s[i-1]:=c;
			end
			else
			begin
				s[n]:=s[i];
				s[i]:=c;
			end;
		end;
	end;
	write('Новая строка:   ');
	writeln(s);
end.

Ответ на от Гость (не проверено)

uses
  crt;
 
var
  stroka: string;
  z, d, tsz, i: integer;
 
begin
  write('Vvedite stroku: ');
  readln(stroka);
  z := 0; d := 0; tsz := 0;
  for i := 1 to length(stroka) do
    case stroka[i] of
      '*': z := z + 1;
      ':': d := d + 1;
      ';': tsz := tsz + 1;
    end;
  writeln('Kolichestvo (*  :  ;) sootvetstvenno: ', z, ' ', d, ' ', tsz);
end.

Ответ на от Гость (не проверено)

program Schet3;
 
var
  t: string;
  s1, s2, s3: char;
  i, r, y, u: integer;
 
begin
  readln(t);
  readln(s1);
  readln(s2);
  readln(s3);
  r := 0;
  y := 0;
  u := 0;
  for i := 1 to length(t) do
  begin
    if t[i] = s1 then    
      r := r + 1;
    if t[i] = s2 then  
      y := y + 1;
    if t[i] = s3 then  
      u := u + 1;
  end;
  writeln(s1, ' в тексте ', r);
  writeln(s2, ' в тексте ', y);
  writeln(s3, ' в тексте ', u);
end.

Дана строка символов, состоящая из цифр от 0 до 9 и пробелов. Группы цифр, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами. Рассматривая эти слова как числа, определить и напечатать сумму чисел, оканчивающихся на цифры 3 или 4.

Ответ на от Гость (не проверено)

uses crt;
var
 s,s1: string;
 sum, probel, i,b: integer;
 a: longint; {вдруг число большое будет}
begin
 clrscr;
 readln(s);
 s:=s+' '; {добавляем пробел, чтоб читалось и последнее число}
 sum:=0;
 s1:='';
 probel:=1;
 while probel <> 0 do
  begin
   probel:=pos(' ',s);
   if probel=1 then delete(s,1,1) else  
   begin
   for i:=1 to probel-1 do
    begin
     s1:=s1+s[i];  {получили строку с числом}
    end;
   val(s1,a,b);  {эта процедура возвращает в а число в строке, b для сообщения об ошибке}
   if (a mod 10 = 3) or (a mod 10 = 4) then
    sum:=sum+a;
   delete(s,1,probel); {удаляем то, что уже обработали, включая пробел}
   s1:='';
   end;
  end;
  write(sum);
  readln
 end.

Может есть и более простые способы, но я сам чайник-новичок)

Ответ на от Гость (не проверено)

program zadacha_4;
uses crt;
const n = 60;
var str : string[n];
ch:char;
i : integer;
cnt,tek : integer;
begin
clrscr;
readln(str);
ch:= str[1];
tek:=0;
cnt:= 1;
for i:=2 to n do
 begin
 if str[i] = str[i-1] then
  begin
  inc(cnt);
  end
 else
  begin
  if cnt>tek then
   begin
   tek := cnt;
   ch := str[i-1];
   cnt := 1;
   end
  else cnt := 1;
  end;
 end;
writeln;
writeln(ch,' - dlina=',tek);
readln;
end.

Написать программу: Во введённой строке символов, содержащий прописные буквы русского алфавита, подсчитать количество различных (без повторений) букв

  1. Написать программу, которая печатает в алфавитном порядке множество символов, входящих в строку.
  2. Напечатать все прописные русские согласные буквы (все, кроме гласных и й,ь,ъ), входящие в текст.

Написать программу которая выводит все символы расположеные после второго пробела (Через pos и length )

Составить программу, которая подсчитывает, сколько содержится цифр в строке длиной 20 символов.

Дан текст, состоящий из 20 букв. Проверить, можно ли из заданной последовательности символов составить Ваше имя и напечатать его. В противном случае напечатать текст “Нет имени”.

Дана строка символов длиной не более 255 символов. Группы символов, разделенные пробелами и не содержащие пробелов внутри себя, будем называть словами. Найти количество слов, у которых первый и последний символы совпадают между собой.

Дана строка символов (2-3 строки) в файле F1, состоящая из слов, отделенных друг от друга пробелами. Составить функцию, удаляющую из строки слово с номером М (М вводить в диалоге и включить в список параметров функции). Новую строку записать в файл F1 после исходной.

Написать программу, которая считает слова, которые начинаются и заканчивается на гласную.