Строки в Pascal

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

Комментарии

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

Ответ на от Гость

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.

Ответ на от Гость

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 букв. Проверить, можно ли из заданной последовательности символов составить Ваше имя и напечатать его. В противном случае напечатать текст “Нет имени”.

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

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