Решение задач со строковыми переменными При решении таких задач бывает необходимо: найти определенные символы (цепочки символов) поиск, подсчет



Дата20.12.2012
Размер60.7 Kb.
ТипРешение
4. Решение задач со строковыми переменными


  1. При решении таких задач бывает необходимо:

  • найти определенные символы (цепочки символов) – поиск, подсчет

  • найти длину определенных цепочек символов (слов) – поиск, длина слов

  • заменить определенные символы другими – шифровка и т.д.


Для решения задач со строковыми переменными необходимо уметь «вырезать» часть строковой переменной (слов), подсчитывать длину строковых переменных, производить операции сравнения, сложения строковых переменных:

copy(строковая переменная, начало позиции, количество позиций) – возвращает часть строковой переменной. Например copy(a,2,5) – возвращает («вырезает» от строковой переменной а начиная со 2-го символа 5 символов.

length(строковая переменная) – возвращает длину строковой переменной. Например, legth(a) – подсчитывает длину строковой переменной а.

Строковые переменные можно сравнивать, производить сложение:

‘стол’<=’столик’ будет истинна

‘12’<’2’

Если строковым переменным a:=’ого’ b:=’род’, то a+b будет равно ‘огород’
Также некоторые задачи решить проще, когда числовые переменные представить как строковые переменные. В этом случае нужно уметь преобразовывать строковые переменные в числовые и обратно.

val(строковая переменная, числовая переменная, code) – преобразует строковую переменную в числовую. Например, val(a, x, code) – преобразует строковую переменную а в числовую x

Здесь code – код ошибки, целая переменная (необходима, если текстовую переменную невозможно перевести в число). Надо просто указать в описании переменных и написать в функции val.

str(числовая переменная, строковая переменная) - преобразует числовую переменную в строковую. Например, str(x, a) – преобразует строковую переменную а в числовую x.
Рассмотрим типовые алгоритмы решения задач.
4.1. Классическая задача. Определить, является ли слово палиндромом (читается одинаково слева направо и наоборот). Пример входных и выходных данных:

input.txt

output.txt

шалаш

да


Составьте алгоритм.
Обозначения:

a – слово (строковая переменная)

n – длина слова

k – флажок несовпадения

i – счетчик циклов
program z4_1;

var f1,f2: text;

a: string;

k,n,i: integer;

begin

assign (f1, 'input.txt'); reset (f1);

assign (f2, 'output.
txt'); rewrite (f2);
read (f1,a);

k:=0; {флажок несовпадения принимает значение 0}

n:=length(a); {определяем длину слова}

for i:=1 to (n div 2) do {цикл от начала до середины слова}

if copy(a,i,1)<>copy(a,n-i+1,1) then k:=1; {сравниваем первую и последнюю букву, вторую и предпоследнюю и т.д., если хотя бы одна пара не равна, то флажок k принимает значение 1}

if k=0 then write (f2,'yes') else write (f2,'no');
close (f1); close (f2);

end.
Данный алгоритм лучше написать с использованием цикла с условием, чтобы при обнаружении первого же несовпадения прекратить цикл.

Задание: Перепишите решение задачи с использованием цикла с условием while ... do....
4.2. Заменить слово в предложении другим словом. Входные данные: предложение, заменяемое слово и слово-заменитель - каждая в новой строке. Выходные данные: предложение с замененными словами. Пример:

input.txt

output.txt

Саша сушил сушки, Миша сушил миску

сушил

кушал

Саша душил сушки, сушка душил Сашу



Алгоритм решения:

  1. Вводим строковые переменные: предложение, заменяемое слово, слово заменитель

  2. Разбираем строковую переменную предложения на слова

  3. Запоминаем каждое слово в строковом массиве

  4. Выводим слова по одному в выходной файл, если встречается заменяемое слово, выводим слово заменитель


Задание: Составьте блок-схему
Обозначения:

а – предложение

а1 – заменяемое слово

а2 – слово заменитель

b – строковый массив, в котором сохраняются отдельные слова предложения

k – количество слов

n –количество знаков в предложении

i – счетчик цикла
program z4_2;

var f1,f2: text;

b: array [1..20] of string;

a,a1,a2: string;

k,n,i: integer;

begin

assign (f1, 'input.txt'); reset (f1);

assign (f2, 'output.txt'); rewrite (f2);
readln (f1,a); readln (f1,a1); readln (f1,a2); {считываем предложение, заменяемое слово, слово заменитель каждый раз с новой строки}

k:=1; {начальное значение количества слов}

n:=length(a);

for i:=1 to n do if copy(a,i,1)=' ' then k:=k+1 else b[k]:=b[k]+copy(a,i,1); {подсчет количества слов и заполнение массива b словами исходного предложения}

for i:=1 to k do {цикл вывода слов предложения по порядку в файл}

begin

if b[i]=a1 then b[i]:=a2; {если встречается заменяемое слово вставляем слово заменитель}

write(f2, b[i], ' ');

end;

close (f1); close (f2);

end.
4.3. Найдите в предложении самое длинное и короткое слово. Входные данные: предложение, выходные данные: самое короткое слово, самое длинное слово

Пример:

input.txt

output.txt

решение задач со строковыми переменными

со

переменными


Алгоритм решения:

  1. Вводим строковое переменное - предложение

  2. Разбираем строковую переменную предложения на слова

  3. Запоминаем каждое слово в строковом массиве

  4. Производим перебор слов по порядку со сравнением длины и присвоением, соответственно, вспомогательным переменным min, max. (См. задачу 3.3.)


Задание: Составьте блок-схему и программу.
Обозначения:

а – предложение

b – строковый массив, в котором сохраняются отдельные слова предложения

k – количество слов

n –количество знаков в предложении

i – счетчик цикла

min, max – вспомогательные переменные
4.4. Классическая задача. Определить является ли число числом Армстронга. Число Армстронга – число сумма цифр, возведенных в n-ую степень (n – количество цифр числа), равна самому числу.

Например: 153=13+53+33 Пример входных и выходных данных

input.txt

output.txt

153

да


Идея решения:

  1. Число вводим в виде строковой переменной (т.е. как текст)

  2. Разбираем строковую переменную на отдельные символы (цифры)

  3. Преобразовываем каждый отдельный символ в число

  4. Находим сумму степеней цифр

  5. Преобразовываем исходное число от текстового типа в числовой

  6. Производим сравнение самого числа и суммы цифр - если равны выводим в файл «да», если нет – выводим «нет».


Задание: Составьте блок-схему
Обозначения:

а – число (как текст)

n – количество цифр

st – степень

s – сумма цифр

i, j – счетчик цикла
program z4_2;

var f1,f2: text;

a: string;

i,j,n,s,st,x,code: integer;

begin

assign (f1, 'input.txt'); reset (f1);

assign (f2, 'output.txt'); rewrite (f2);

read (f1,a); {считываем число а из входного файла как текст}

n:=length(a); {вычисляем количество цифр}

s:=0; {начальное значение суммы цифр}

for i:=1 to n do

begin

val(copy(a,n-i+1,1),x,code); {преобразовываем отдельный знак (цифру) в число}

st:=1; {далее идет вычисление степени, т.к. в турбопаскале нет фуекции степени}

for j:=1 to n do st:=st*x;

s:=s+st; {вычисляем сумму цифр}

end;

val(a,x,code); {преобразование исходного числа из текстового типа в числовое}

if s=x then write(f2,'yes') else write(f2,'no'); {сравнение числ и суммыцифр и вывод в выходной файл}

close (f1); close (f2);

end.

Для самостоятельного решения
4.4. Немного изменим условие задачи 4.1. Определить, является ли предложение палиндромом (читается одинаково слева направо и наоборот). Пример входных и выходных данных:

input.txt

output.txt

А лис, он умен - крыса сыр к нему носила

да

В этом случае необходимо исключить знаки препинания и пробелы
4.5. Попробуйте решить задачу 4.2. без использования вспомогательного массива.
4.6. Найти цифровой корень числа. Цифровой корень числа получается при сложении цифр числа, затем при сложении цифр вновь полученного числа и так до тех пор, пока в сумме не будет получена одна цифра. Пример входных и выходных данных:

input.txt

output.txt

123456

3


4.7. Составить программу перевода числа из двоичной системы счисления в десятичную.

Пример входных и выходных данных:

input.txt

output.txt

1001010

74


4.8. Составить универсальную программу перевода числа из n-й системы счисления в десятичную.

Пример входных и выходных данных:

input.txt

output.txt

1001010

74

Похожие:

Решение задач со строковыми переменными При решении таких задач бывает необходимо: найти определенные символы (цепочки символов) поиск, подсчет iconРешение задач на последовательности При решении таких задач бывает необходимо: каким-либо образом сортировать последовательности
Прежде всего рассмотрим общую структуру программы при решении задач на обработку последовательности чисел (массивов) на примере заполнения...
Решение задач со строковыми переменными При решении таких задач бывает необходимо: найти определенные символы (цепочки символов) поиск, подсчет iconРешение задач на условие делимости чисел При решении таких задач для определения делимости используются операции mod (остаток от деления) или div (целочисленное деление)
Алгоритм решения таких задач заключается в переборе возможных значений с проверкой условия делимости
Решение задач со строковыми переменными При решении таких задач бывает необходимо: найти определенные символы (цепочки символов) поиск, подсчет iconРешение геометрических задач по планиметрии
При решении большинства задач не обойтись без привлечения разнообразных фактов теории доказательств тех или иных утверждений. Но...
Решение задач со строковыми переменными При решении таких задач бывает необходимо: найти определенные символы (цепочки символов) поиск, подсчет iconОбобщённый метод интервалов при решении неравенств
При решении многих задач, в том числе и задач Единого Государственного экзамена (егэ) часто возникает необходимость либо непосредственно...
Решение задач со строковыми переменными При решении таких задач бывает необходимо: найти определенные символы (цепочки символов) поиск, подсчет iconПояснительная записка Курс рассчитан на 17 часов
Для успешного решения геометрических задач необходимо свободно владеть всем теоретическим материалом. Но и при хорошем знании теории...
Решение задач со строковыми переменными При решении таких задач бывает необходимо: найти определенные символы (цепочки символов) поиск, подсчет iconРешение задачи: «Найдите катеты прямоугольного треугольника, если известно, что один из катетов на 4 см меньше другого, а гипотенуза равна 20 см»
Цель: Показать применение квадратных уравнений при решении задач, в измерительных работах на местности; выработать у учащихся навыки...
Решение задач со строковыми переменными При решении таких задач бывает необходимо: найти определенные символы (цепочки символов) поиск, подсчет iconРешение задач по теме «Кинематика»
Цель урока: Научить учащихся применять теоретические знания при решении задач с последующей проверкой в виртуальной лаборатории
Решение задач со строковыми переменными При решении таких задач бывает необходимо: найти определенные символы (цепочки символов) поиск, подсчет iconСеминар «Решение задач нового типа егэ (кодирование звука и логические цепочки)»
«Решение задач нового типа егэ (кодирование звука и логические цепочки)». Методические материалы и технология решения. Для учителя...
Решение задач со строковыми переменными При решении таких задач бывает необходимо: найти определенные символы (цепочки символов) поиск, подсчет iconРешение задач Класс: 7 Тип: комбинированный Учитель: Максименко Ирина Петровна
Дидактические: закрепить знания учащихся по теме «Давление», проверить умение применять их при решении задач, дать понятие о давлении,...
Решение задач со строковыми переменными При решении таких задач бывает необходимо: найти определенные символы (цепочки символов) поиск, подсчет iconУрок по алгебре и началам анализа в 11 классе по теме «Применение определенного интеграла при решении практических задач»
Решать определенные интегралы с применением их при нахождении площадей фигур, скорости объекта
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org