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

Заполнение массива и вычисление суммы элементов

Задача:

Требуется заполнить массив числами, которые вводит пользователь, и вычислить их сумму. Если пользователь вводит ноль или превышен размер массива, то запросы на ввод должны прекратиться.

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

Для решения подобного рода задач иногда бывает уместно использовать цикл с постусловием (repeat).

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

const n = 10;

var

arr: array[1..n] of integer;

sum: integer;

i: byte;

begin

i := 1;

sum := 0;

repeat

write ('Число: ');

readln(arr[i]);

sum := sum + arr[i];

i := i + 1

until (arr[i-1] = 0) or (i > n);

for i := 1 to n do

write (arr[i],' ');

writeln;

writeln ('sum = ', sum);

readln

end.

7.Строки Поменять слова местами

Задача:

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

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

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.

Сортировка данных строки

Задача:

Дана строка, состоящая из слов и чисел, отделенных друг от друга пробелами. Сформировать три строки, одна из которых содержит только целые числа, встречающиеся в исходной строке, вторая - только вещественные числа, а третья – оставшиеся слова.

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

fullstr – заданная строка;

s – очередное первое слово в строке;

s_int, s_rl, s_str – строки целых чисел, вещественных чисел и слов соответственно;

int – очередное целое число;

rl – очередное вещественное число;

space – очередной пробел в заданной строке;

err – будет хранить 0, если очередное слово удается преобразовать в число.

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

{2} Избавляемся от пробелов в начале и конце строки, а также повторяющихся пробелов.

{3} Находим позицию первого пробела. Копируем первое слово. В зависимости от того, во что удалось преобразовать слово, добавляем его в соответствующую переменную. Удаляем это слово из исходной строки.

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

var

fullstr,s,s_int,s_rl,s_str: string;

int: integer;

rl: real;

space,err: integer;

begin

{1} writeln('String:');

readln(fullstr);

{2} while fullstr[1] = ' ' do

delete(fullstr,1,1);

while fullstr[length(fullstr)] = ' ' do

delete(fullstr,length(fullstr),1);

while pos(' ',fullstr) <> 0 do

delete(fullstr,pos(' ',fullstr),1);

{3} s_int := '';

s_rl := '';

s_str := '';

while fullstr <> '' do begin

space := pos(' ',fullstr);

if space = 0 then

space := length(fullstr) + 1;

s := copy(fullstr,1,space-1);

val(s,int,err);

if err = 0 then

s_int := s_int + s + ' '

else begin

val(s,rl,err);

if err = 0 then

s_rl := s_rl + s + ' '

else

s_str := s_str + s + ' ';

end;

delete(fullstr,1,space);

end;

{4} writeln('Integers: ',s_int);

writeln('Real: ',s_rl);

writeln('Words: ',s_str);

readln

end.