Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник.docx
Скачиваний:
36
Добавлен:
21.12.2018
Размер:
2.15 Mб
Скачать

Поменять слова местами

Задача:

Поменять местами слова в строках, состоящих из двух слов.

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

s – массив введенных строк;

f_word, s_word – первое и второе слово в каждой строке;

k – позиция пробела-разделителя слов в строке.

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

  1. Считывается очередная строка в текущий элемент массива.

  2. Определяется позиция пробела с помощью функции pos.

  3. В переменную f_word копируется часть строки с первого символа до пробела.

  4. В переменную s_word копируется часть строки от пробела (не включая его) до ее конца.

  5. В текущий элемент массива записывается строка, состоящая сначала из второго слова, пробела и затем первого слова.

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

var

s: array[1..5] of string;

f_word, s_word: string;

k,i: byte;

begin

writeln('Введите пять строк с двумя словами в каждой.');

for i:=1 to 5 do begin

readln(s[i]);

k:= pos(' ',s[i]);

f_word:= copy(s[i],1,k-1);

s_word:= copy(s[i],k+1,length(s[i]));

s[i]:= concat(s_word,' ',f_word)

end;

for i:=1 to 5 do

writeln(s[i]);

readln

end.

Определение различных цифр, входящих в число

Задача:

Какие различные цифры входят в целое число.

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

n – анализируемое число;

digits – массив различных цифр, из которых состоит число n;

q_digits – количество цифр в массиве;

digit – извлеченная из числа цифра;

flag – проверка наличия цифры в массиве (если цифра в массиве уже есть, то она не будет в него добавлена.

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

  1. Избавляемся от знака числа с помощью функции abs.

  2. Обнуляем количество цифр в массиве (изначально массив пуст).

  3. После извлечения очередной цифры числа с конца (n mod 10) предполагаем, что ее еще нет в массиве (flag:= false).

  4. Перебираются элементы массива цифр. Если текущая извлеченная цифра уже есть в нем, то меняем значение флага. Для первой извлеченной цифры данный цикл не работает, что правильно.

  5. Если флаг остался в значении false, то увеличиваем количество цифр в массиве на единицу и записываем очередную цифру в массив.

  6. Избавляемся от последней цифры числа (n div 10).

  7. Цифры в массив записаны в обратном порядке. Для их вывода на экран в порядке следования в числе следует использовать вариант цикла for с downto.

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

var

n: longint;

digits: array[1..10] of byte;

q_digits: byte;

digit: byte;

i: byte;

flag: boolean;

begin

write('Input number: ');

readln(n);

if n < 0 then

n:= abs(n);

q_digits:= 0;

repeat

digit:= n mod 10;

flag:= false;

for i:=1 to q_digits do

if digit = digits[i] then begin

flag:= true;

break

end;

if flag = false then begin

q_digits:= q_digits + 1;

digits[q_digits]:= digit;

end;

n:= n div 10

until n = 0;

for i:=q_digits downto 1 do

write(digits[i]:3);

readln

end.

Извлечение цифр числа

Задача:

Определить из каких цифр состоит число

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

var

n:integer;

begin

write('Type integer: ');

readln(n);

if n<0 then

n:=-n; // уничтожение знака числа

repeat

writeln(n mod 10); // вывод последней цифры числа

n:= n div 10; // удаление последней цифры числа

until n=0;

readln

end.