Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

ЛАБОРАТОРНАЯ РАБОТА 4 символьный и строковый типы 1

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 1.6.2024

ЛАБОРАТОРНАЯ РАБОТА 4

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

          

1. Для заданных трех строк S1, S2 и S3 определить какая из этих строк удовлетворяет следующему свойству: строка является десятичной записью числа, кратного 9.

2. Для заданных трех строк S1, S2 и S3 определить какая из этих строк является палиндромом.

3. Для заданных трех строк S1, S2 и S3 определить какая из этих строк является десятичной записью числа, кратного 4.

4. Для заданных трех строк S1, S2 и S3 напечатать те латинские буквы, которые входят только в одну из этих строк.

5. Даны две строки S1 и S2. Создать строку, состоящую из латинских букв, не принадлежащих какой-либо строке S1 и S2.

6. Ввести две строки S1 и S2, состоящие только из цифр. Определить в какой строке сумма цифр большая.

7. Даны две строки S1 и S2. Создать строку, состоящую из символов, входящих либо в S1,

   либо в S2, но не в обе сразу.

8. Для двух заданных строк, состоящих только из цифр и начинающихся с 0, найти строку - сумму чисел, представленных данными строками.

9. Из данной строки удалить все цифры и малые латинские буквы.

10. Составьте программу, в результате выполнения которой в первой заданной строке удваивается каждый символ, принадлежащий также второй строке.

11. Составить программу, в результате выполнения которой из первой заданной строки удаляется каждый символ, не принадлежащий также второй строке.

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

13. В данной строке удвоить все цифры и малые латинские буквы.

14. Составить программу, в результате выполнения которой в первой заданной строке удваивается каждый символ, не принадлежащий второй строке.

 

15. Даны две строки. Создать строку, состоящую только из символов, общих для двух данных строк.

16. Для каждой цифры '0', '1', ... , '9' подсчитать количество вхождений в данную строку S.

17. Для каждой малой латинской буквы 'a', 'b' , 'c' , ... , 'z' напечатать количество вхождений в данную строку S.

18. Дана строка, состоящая из слов. Напечатать те слова, которые являются палиндромами.

19. Русский шифр 15-16 веков:

Все согласные буквы русской азбуки записывались в два ряда; одна половина букв вверху, другая половина внизу, причем в обратном порядке (одна буква под другой),

       Б В Г Д Ж З К Л М Н

       Щ Ш Ч Ц Х Ф Т С Р П

При зашифровке слов согласные взаимно заменялись, а остальные буквы вписывались без изменений. Написать программу шифровки и дешифровки текста.

*************************************************************************************

Примеры решения некоторых задач

*************************************************************************************

1.  Вывести в одну строку A B B C C C .... Z Z...Z.

var   i : char;

    k,j : integer;

begin

        k:=1;

        for i:= 'A' to 'Z' do

        begin

              for j:=1 to k do

               write(i);

               k:=k+1;

        end;

        writeln;

end.

Для решения задачи:

- формируем тело программы и описываем переменные;  

- цикл for i:='A' to 'z' do определяет, какую букву выводим на печать;

- цикл for j:=1 to k do определяет, сколько раз будет печататься буква;

- после вывода всех букв закрываем строку оператором writeln.

Переменные:

i - переменная цикла; определяет, какая буква выводится;

k - количество повторений буквы;

j - переменная цикла.

2. Дана строка символов. Удалить из нее все знаки препинания.

var   str : string;

       l, i : integer;

        m : set of char;

begin

        m:=['.',',','!',':',';','?','-'];

        writeln('Введите текст');

        readln(str);

        l:=length(str);

        writeln('Преобразованный текст');

       for i:=1 to l do

               if not(str[i] in m) then write(str[i]);

       writeln;

end.

Для решения задачи:

- формируем тело программы и описываем переменные;

- задаем значение множества m - множества знаков препинания;

- цикл for i:=1 to l do  осуществляет вывод строки без знаков препинания;

- после вывода закрываем строку оператором writeln.

Переменные:

i - переменная цикла;

l - длина строки;

str - строка текста;

m - множество знаков препинания.

3. Присвоить литерным переменным с2, с1 и с0 соответственно левую, среднюю и правую цифры трехзначного числа k.

var c0, c1, c2 : char;

         n0, k, d : integer;

begin

       writeln('Введите трехзначное число');

       readln(k);

       n0:=ord('0');

       d:=k div 100;              c2:=chr(n0+d);

       d:=k mod 100 div 10; c1:=chr(n0+d);

       d:=k mod 10;              c0:=chr(n0+d);

       writeln('c2= ', c2);

       writeln('c1= ',c1);

       writeln('c0= ',c0);

end.

4. Используя только литерный ввод, т.е. процедуру readln(c), где с - литерная переменная, ввести непустую последовательность цифр, перед которой может находиться знак "+" или "-" и за которой следует пробел, и, получив соответствующее число, присвоить его целой переменной k.

var c : char;

     sign, n0, k : integer;

begin

                                                                                            {определение знака числа:}

        sign:=1;

        readln(c);

        if c='-' then

                   begin sign:=-1;

                              readln(c)

                   end

                   else    if c='+' then readln(c);

                                                            {чтение цифр (первая - в c) и вычисление абсолютной вели-

                                                                чины числа k по схеме Горнера:}

        n0:=ord('0'); k:=0;

        repeat

                 k:=10*k+ord(c)-n0;

                  readln(c)

        until c=' ';

                                                                                                {учет знака:}

        k:=sign*k;

        writeln(k);

end.

5. Дана строка символов. Выделить подстроку между первой и последней точкой.  

var str, s1 : string;

      i, m, j : integer;

begin

       writeln('Введите текст');

       readln(str);

       s1:=str;

       i:=pos('.',s1);

       j:=i; m:=0;

       if (i<>0) then

                      begin

               while i<>0 do

               begin

                                 delete(s1,1,i);

                                 m:=m+1;

                                 i:=pos('.',s1);

                          end;

                          if m<>j then

                            begin

                                          s1:=copy(str,j+1,m-j-1);

                                          writeln('Часть текста между 1-й и последней точкой');

                                          writeln(s1);

                                       end

                                       else writeln('В тексте только одна точка');

           end

           else writeln('В тексте нет ни одной точки');

end.

Для решения задачи:  

- формируем тело программы и описываем переменные;

- вводим строку str и присваиваем значение вспомогательной переменной s1:=str;

- определяем местоположение первой точки в тексте; если точка есть, то вырезаем из s1 текст до нее;

- ищем последнюю точку в цикле while i<>0 do; если она есть, то значение переменной l указывает на ее местоположение;

- в зависимости от присутствия точек выделяем подстроку s1:=copy(str,j+1,m-j-1) и выводим результат на экран.

Переменные:

i - номер позиции, которая соответствует точке;

J - местоположение первой точки;

m - местоположение последней точки;

str - строка текста;

s1 - вспомогательная переменная.

6. Дана строка символов. Определить, является ли она записью десятичного числа, кратного трем.

   Необходимо удостовериться, что введенная строка состоит только из цифр, т.е. может быть преобразована в десятичное число. Само преобразование цифры в число сделать очень просто. Поскольку коды символьных переменных - цифр - следуют один за другим, то функция ord в выражении ord(s1[i])-ord('0') поможет нам сделать это.

var  s1 : string;

       k, i, m : integer;

begin

        writeln('Введите текст до точки');

        readln(s1);

        m:=length(s1);

        k:=0; i:=1;

        repeat

               case s1[i] of

               '0'..'9' :  k:=k+(ord(s1[i])-ord('0'));

               '  ' : ;

               else k:=-1;

               end;

               i:=i+1;

        until (i>m) or (k<0);

        if k mod 3 = 0             

                      then writeln('Это десятичное число, кратное 3')

                      else writeln('Это не десятичное число, кратное 3')            

end.

Для решения задачи:  

- формируем тело программы и описываем переменные;

- вводим строку s1;

- организуем в строке поиск цифр до тех пор, пока не встретим конец строчки или не обнаружим наличие ошибки в арифметическом выражении;

- в зависимости от значения суммы цифр введенного числа выводим результат на экран.

Переменные:

i - переменная цикла;

s1 - строка цифр;

m – длина строчки;

k - счетчик цифр.

7. Программа. Напечатать заданную непустую строку:

     а) удалив из нее все цифры и удвоив знаки "+" и "-";

var s : string;
   
 i : integer;
begin
        writeln('Введите строку:');
        readln(s);
        for i:=1 to length(s) do
               if (s[i]='+')or(s[i]='-') then write(s[i],s[i])

                                                  else  if (s[i]<'0')or(s[i]>'9') then write(s[i]);

        writeln

end.

     б) удалив из нее все знаки "+", непосредственно за которыми идет цифра;

var a, b : char;                                  {a - очередная литера строки,

                                                          b - следующая}

         s : string;

          i : integer;

begin

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

       readln(s);

       for i:=1 to length(s) do

       begin

             a:=s[i];

             if a<>'+' then write(a)

                            else   if i<length(s) then begin

                                                                    b:=s[i+1];

                                                                    if (b<'0') or (b>'9') then write(a)

                                                                    end

                                                           else write(a);

       end;

       writeln

end.




1. Социальная политика государства- основные цели направления и механизмы ее реализации Вопрос 1
2. Европеское право
3. Организация и управление на предприятиях для студентов технических специальностей заочного факультет
4. Порядок проходження служби в митних органах
5. новоприбылых талантов выражение Стасова созревшее в 1880е годы окружала уже иная действительность.
6. 1 Характеристика лесоперерабатывающей отрасли
7. Сказка и правда
8. Тема фэнтези в произведениях Святослава Логинова
9. реферат дисертації на здобуття наукового ступеня доктора біологічних наук Дніпропетров
10. Тайвань
11. гормоны Состоят только из железистых клеток и не имеют выводных протоков
12. Список славянских богов
13. . ПОНЯТИЕ И ВИДЫ ЦЕННЫХ БУМАГ [3] 2
14. Валовая и товарная продукция сельского хозяйства
15. Конституция России и политический плюрализм
16. Реферат на тему- Театр як вид мистецтва Театр від грец
17.  СТОИМОСТЬ ОСНОВНЫХ ФОНДОВ на конец года; по полной учетной стоимости; миллионов рублей; 1990 1995 гг
18. таможенная граница которая совпадала с государственной границей
19. лаковий язик глосит збільшення лімфатичних вузлів мигдаликів до 2 ступеня
20. Правила соответствия между классическим и квантовым статистическим описаниями