Хелпикс

Главная

Контакты

Случайная статья





Задачи для дополнительного решения (на усмотрение учителя)



Задачи для дополнительного решения (на усмотрение учителя)

1. Выясните, какая из букв (первая или последняя) встречается в заданном слове чаще.

2. Сколько букв "у" в слове стоит на четных местах?

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

4. Вычеркните i-ую букву слова.

5. Вычеркните из слова Х те буквы, которые встречаются в слове Z.

6. Напишите программу, которая вводит строку и выводит ее, сокращая каждый раз на 1 символ до тех пор, пока в строке не останется 1 символ.

 

Подготовка к олимпиаде

Вводятся два очень длинных целых числа. Найти их сумму.

 

Описание переменных:

s1, s2, s3 - строковые представления первого, второго числа и их суммы;

n1, n2, n3 - текущие разряды первого и второго чисел и перенос из предыдущего разряда;

l1, l2 - длины введенных строк из чисел;

c - строковое представление суммы текущих разрядов.

Алгоритм решения задачи:

Под "очень длинными целыми числами" здесь подразумеваются такие, которые не помещаются даже в тип данных longint.

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

В цикле символы строки s1 перебираются с конца до первого (счетчик i). Каждый символ преобразуется в целое число. Также с конца берутся символы s2 (счетчиком служит l2) и преобразуются в целое. Числа складываются. Сумма записывается в начало строки s3 без старшего разряда, который сохраняется в отдельной переменной n3 и добавляется к сумме при следующем сложении разрядов.

Когда строка s1 заканчивается, надо проверить есть ли перенос из младшего разряда. Если есть, то надо продолжать складывать, пока перенос не станет равным нулю.

 

После того, как складывать уже нечего, надо дописать впереди s3 оставшуюся часть s2.

 

Программа на языке Паскаль:

var

s1, s2, s3: string;

n1, n2, n3, l1, l2, i: byte;

c: string[1];

begin

readln(s1);

readln(s2);

l1 := length(s1);

l2 := length(s2);

if l1 > l2 then begin

   s3 := s1; l3 := l1;

   s1 := s2; l1 := l2;

   s2 := s3; l2 := l3

end;

s3 := ''; n3 := 0;

for i := l1 downto 1 do begin

   val(s1[i],n1);

   val(s2[l2],n2); l2 := l2 - 1;

   str((n1+n2+n3) mod 10,c);

   s3 := c + s3;

   if n1+n2+n3 > 9 then n3:=1

   else n3 := 0;      

end;

while n3 = 1 do begin

   if l2 <> 0 then begin

       val(s2[l2],n2); l2 := l2 - 1;

       str((n2+n3) mod 10,c);

       s3 := c + s3;

       if n2+n3 < 10 then n3:=0;

   end

   else begin

       s3 := '1' + s3;

       n3 := 0;

   end;

end;

if l2 <> 0 then

   s3 := copy(s2,1,l2) + s3;

writeln(s3);

end.

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

 

 

Примеры решения задач смотри также здесь http://pas1.ru/taskstring

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.