Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Простые типы данных. Символьный тип. Перечисляемые и интервальные типы




Упражнение № 6. Символьный тип

Пример 17. Напишите программу вывода последовательности символов: А АВ АБС ... АВ.. У2 на экран.

Решение. Последовательность символов строится по следующему правилу: пос­ледовательно выводятся начальные отрезки латинского алфавита, состоящие из 1 символа, потом из 2 символов и так далее, до тех пор, пока не будет выведен весь алфавит. Число таких отрезков равно количеству букв в алфавите. Так как символьный тип данных является порядковым типом, то можем использовать цикл с параметром.

Ргодгат Ехатр1е_17;

Уаг : СЬаг;

Вед±п

Рог 1: =1 а1 То 'г' Эо {число начальных отрезков алфавита} Рог з:='а' То 1 Эо {число символов в данном начальном отрезке} ТлГг±^е (□ ) ; КеасИп;

Еп<а.

Результат работы программы:

ааЪаЪсаЪсс!...ху2

Модифицируйте программу для вывода последовательности символов в виде пирамиды:

а

а Ь

а Ь с

а Ь с ... х у 2

Пример 18. Напишите программу, которая подсчитывает число цифр, входящих в исходный текст. Текст — это последовательность символов, ввод которой заканчи­вается нажатием клавиши <Еп1ег>.

Решение. Так как окончанием ввода последовательности служит нажатие клави­ши <Еп1ег> (ее обозначение — #10), будем вводить символы до тех пор, пока значение очередного символа не совпадет со значением #10. Анализируя каждый символ, будем увеличивать счетчик, если символ является цифрой.

Ргодгат Ехатр1е_18;

Уаг сЬ:СЬаг; к: 1п*:едег ;

Вед±п

Кеа<3 (сЪ) ; к: =0;

МЫ1е сЬ<>#10 Оо {пока не нажата клавиша <Еп1:ег>} Вед±п

(сЪ>= ' 0 ' ) Апс! (сЪ<= ' 9 ' ) ТЪеп 1пс(к);

Кеас! (сЬ) ; Епс1;

Юг:И:е1п (АС, ' Число цифр равно ' , к) ;

Епс1.

Модифицируйте программу так, чтобы она решала следующие задачи:

• определить, является ли введенная строка правильной записью целого числа;

• вычислить сумму цифр введеного числа.

Задания для самостоятельной работы

1. Напишите программу вывода последовательности символов на экран:

а) 2УУХХХ...АА...АА;

б) АВС...22ВС...222С...22...22.

2. Составьте программу, которая печатает !гие, если в заданном тексте буква А встречается чаще, чем В, и печатает /а1зе в противном случае.

3. Проверьте, правильно ли в заданном тексте расставлены круглые скобки (т.е. находится ли справа от каждой открывающей скобки соответствующая ей закрываю­щая скобка, а слева от каждой закрывающей — соответствующая ей открывающая).

4. Дана последовательность литер, имеющая следующий вид: ±йг± ... ± с1п

— цифры, п > 1). Вычислите значение этой алгебраической суммы.

5. Составьте программу, запрашивающую координаты ферзя на шахматном поле и показывающую поля доски, находящиеся «под боем».

6. Используя символьный тип данных, введите заданное вещественное число, за­писанное по правилам языка Паскаль, и присвойте его вещественной переменной х

Упражнение № 7. Вещественный тип

Пример 19. Напечатайте таблицу значений функции у = зт(х) на отрезке [0, 1] с шагом 0,1 (считайте, что при печати на каждое вещественное число отводится по 4 позиции строки).

Решение. Постановка задачи наталкивает нас на использование цикла с веще­ственным параметром, но цикл с параметром предполагает использование пере­менной порядкового типа, а тип Кеа1 таковым не является.

; Ргодгат Ехатр1е_19_1; {вариант 1} Чаг 1: Кеа1; Вед±п 1:=0;

ГОНИе л_<=1 Бо Вед±п

МгИ:е1п (1: 2 :1, ' ' , 31П (±) : 4 : 3) ; 1:=1+0.1;

Епс1;

КеасИп; Епс1.

Ргодгат Ехатр1е_19_2; {вариант 2} Чаг л.: ТпЬедег; Ведл.п л_:=0;

ИИНе ±<=10 По Вед±п

ДОгл_1:е1п (1, ' ' , 51П (1 /10) : 4 : 3) ; 1пс (1);

Епс1;

КеасИп; Епс1.

На первый взгляд работа этих программ должна быть одинаковой, но, запустив программы, мы обнаружим, что первая программа выдает значения функции §т(х) для всех значений х от 0 до 0,9, а вторая программа — для всех значений х от 0 до 1. Почему это происходит?

Пример 20. Дано х, принадлежащее интервалу от —1 до 1. Составьте программу

х2 х3

вычисления суммы ряда х —— + —— ... с заданной точностью Е. Нужная точность

считается полученной, если очередное слагаемое оказалось по модулю меньше, чем данное малое положительное число Е (это и все последующие слагаемые учитывать не надо). х

Решение. На первый взгляд программа должна вычислять очередное слагаемое — и прибавлять его к сумме, полученной на предыдущем этапе. При нахождении значения хп можно воспользоваться циклом с параметром, но, с другой стороны, чтобы вычислить значение хп, достаточно значение хп~х (найдено на предыдущем шаге) умножить на х. Ргодгат Ехатр1е_20; Уаг х,зЪ,з1,у,е:Кеа1;

п, 2 : 1п-Ьедег; Вед±п

ДОгл_1:е (' Введите х, принадлежащее (-1,1)'); КеасИп (х); ДОгл-Ъе ( 'Введите погрешность вычисления' ) ; КеасИп (е) ; у: =0; п:=1; 2:= 1; з"Ь:=х; з1:=х; КереаЪ

1пс(у,2*з1); 1пс (п) ; г:=-г; 3"Ь: =з-Ь*х; з1:=з1:/п; 11п"Ы1 з1<е; ДОгл_1:е1п (у) ; КеасИп; Епс1.

Задания для самостоятельной работы

1. Даны действительные положительные числа а, Ь, с, х, у. Выяснить, пройдет ли кирпич с ребрами а, Ь, с в прямоугольное отверстие со сторонами х, у. Просо­вывать кирпич разрешается только так, чтобы каждое из его ребер было перпенди­кулярно или параллельно каждой из сторон отверстия.

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

а) вычислить с — наибольший общий делитель натуральных чисел аи Ь;

б) найти и — первый отрицательный член последовательности со8(с1§ п), где п = 1, 2, 3,

I2 I2 I2

в) вычислить р = (1 - — )(1 - - )...(1--------------- ), п > 2 ;

2 3 п

г) вычислить у = со$(1 + со8(2 + ...+ со$(39 + со$ 40)...)).

3. Квадратное уравнение Ах2 + Вх+ С = 0 задается его коэффициентами. Соста­вить диалоговую программу нахождения корней квадратного уравнения.

4. Вычислить значение выражений:

а) 8Ш X + 81П 81П X + ... + 81П 81П .„8тх ;

п раз

б) 81П X + 81П12 + ... + $тх" ;

Г)

в) 81ПХ + 81П2 X + ... + 81ПЛ X ; С08 1 С08 1 + С08 2 С08 1 + ... + С08 п

81п 1 81п 1 + 81п 281п 1 + • • • + 81п п

т

5. Представить обыкновенную дробь — ут < п) в виде цепной дроби

п

т 1 . Например, 1 = 1

" Ч- 7

а2+...— 2 + -

3 +

ак 2

6. Вычислить

1 +

5 +______ 1

... +----------------- г

101 + 7^

7. Рассмотрим бесконечную последовательность уь у2, З'3. ..., образованную по следующему закону:

х + т - 1

У1 =

у,- = —((/и - 1)у,_, + -4т) (/ = 2, 3,...), т у™;'

где х — данное действительное число, т — натуральное число. Эта последователь­ность позволяет получить сколько угодно точные приближения числа у[х(х > 0). Составить программу для вычисления значения с заданной точностью Ь (Е = \х-уГ\).

1 11 11

8. Вычислить! - 2 + — -... + ^^ ~ 10000 следующими четырьмя способами:

а) последовательно слева направо;

1 1 111

б) последовательно слева направо вычисляются 1 + ^ + ••• + ^^ и 2 + 4 +

+••• + ^000 > затем второе значение вычитается из первого;

в) последовательно справа налево;

г) последовательно справа налево вычисляются суммы, выписанные в б), затем — вычитание.

Почему при вычислениях на ЭВМ каждым из этих способов получаются разные результаты?

9. Вычислить приближенное значение бесконечной суммы:

1 1 1

а) 1 • 2 + 2 • 3 + 3 • 4 + " '

1 1 1

б) 1-3 + 2- 4 + 3- 5+ "'

ч 1 11

в) + + + ••• 4-23 2-3-4 3-4-5

10. Дано действительное число х, вычислить:

X X^ X^ X^

а) и - 31 + 5Г (2п + 1)!+-~1

у2 у. 4 уб у2п

б)С08т = 1-_ + _--_♦._♦<-,>•_♦._.

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

11. Составить программу перевода действительного числа а (0 < а < 1)в двоич­ную систему счисления.

12. Дано 100 вещественных чисел. Вычислить разность между максимальным и минимальным из них.

13. Дано 200 вещественных чисел. Определить, сколько из них больше своих соседей», то есть предыдущего и последующего чисел.

Упражнение № 8. Перечисляемые и интервальные типы

Пример 21. Напишите программу, которая переменной I присваивает значение 1гие, если первая дата предшествует (в рамках года) второй дате, и значение /аЬе в про­тивном случае.

Решение. Так как в условии задачи оговаривается, что обе даты должны нахо­диться в рамках года, то дата должна задаваться днем и месяцем. Число дней любо­го месяца года не может быть более 31, число месяцев в году равно 12. Значение переменной / равно /гае, если номер первого месяца меньше второго, значение первого дня меньше второго при условии, что номера месяцев совпали.

Ргодгат Ехатр1е_21;

Уаг <31, <32 :1. .31;

т1,т2:1..12;

1::Воо1еап;

Вед±п

МгНе ( 'Введите первую дату (день, месяц)');

КеасИп (<31,т1) ;

ЭДгл-Ъе (' Введите вторую дату (день, месяц) ');

КеасИп (с!2,т2) ;

1: : = (гп1<ш2) Ог ( (ш1=ш2) Ап<3 (<31<<32) ) ;

Мг:11:е1п (1:) ;

Еп<1.

Модифицируйте программу так, чтобы осуществлялась проверка корректности введенных дат.

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

Решение. По условию задачи все символы делятся на следующие группы:

• гласные буквы английского алфавита;

• согласные буквы английского алфавита;

• символы, не являющиеся буквами английского алфавита.

Ргодгат Ехатр1е_22;

Уаг сЪ: СЪаг;

Ведл.п

ЭДгл_1:е (' Введите символ');

КеасИп (сЬ);

Сазе ирсазе(сЬ) 01:'

'А', !Е', 'I', 'О', ' И' : ДОгл_1:е1п ( ' Это гласная буква английского алфавита');

'А'..'2': ДОгл_1:е1п ( ' Это буква английского алфавита');

Е1зе ДОгл_1:е1п ( 1 Этот символ не является буквой английского алфавита');

Епс!.

Обратите внимание на то, что константы здесь в первом случае перечисляются через запятую, а во втором используется интервал значений.

Пример 23. «Вечный календарь». Установлено: если исследуемая дата лежит в диапазоне от 1582 до 4902 г., в этом случае номер дня недели (воскресенье имеет номер 0\ понедельник — 1} ..., суббота — 6) равен остатку от деления на 7 значения выражения [2,6т — 0,2] + с1 + у + [у/4] + [с/4] — 2с, где (1 — номер дня в месяце (1, 2,...); т — номер месяца в году, нумерация начинается с марта (март имеет номер 1, апрель — номер 2, ..., декабрь — номер 10, январь и февраль считаются месяцами с номером 11 и 12 предыдущего года); у — две младшие цифры года; с — две старшие цифры года; [х] означает целую часть числа х.

Вычислить число пятниц, приходящихся на 13 число XX столетия.

Ргодгат Ехатр1е_23;

Туре топ1:11= (тагсЪ, аргЫ, тау, ^пе, ^1у,

аидиз-Ь, зер-ЬетЪег, ос-ЬоЪег, поVетЪе^, с1есетЪег, ^апиа^у, ^еЬгиагу) ;

с1ау=1. . 31; уеаг=1582..4902;

меек= (зипс1ау, топс1ау, "Ьиезс1ау, мес1пезс1ау, ^Ъигзс1ау, :Ег1с1ау, за"Ьигс1ау) ; СопзЪ Ь=20; с!: с1ау=13; с1_м: меек= ^г1с!ау; Уаг к:1п"Ьедег; {для подсчета количества пятниц} . у: уеаг; Мос1_у: 0 . . 99; 1П*:_у: 15 . . 49; ш: топ-ЬЪ; п:-5 0..1000; Вед1п к: = 0;

Гог у:=(Ь-1)*100 То Ъ*100-1 Во {просмотрим все годы столетия} Гог ш:= таг-ЬЪ То ^еЬгиагу Во {просмотрим все месяцы года} Вед±п

Мос1_у:=у Мое! 100; {найдем две последние цифры года} 1П"Ь_у:=у ^^V 100; {найдем две первые цифры года} п: ="Ьгипс (2 . 6* (Ог<1 (ш) +1) -0 .2) +<1+Мос1_у+1:гипс (Мос1_у/4) + Ъгипс (л_п1:_у/4 ) -2*1п1:_у; IЁ п Мое! 7=Огс1(с1_м) ТЬеп 1пс(к);

Епй;

ЮгИ:е1п ( 1 число пятниц, приходящихся на !,с1, 1 число в 1 , Ъ, 1 сто­летии равно 1,к); Епс1.

Пример 24. Найти к-е простое число в арифметической прогрессии 11, 21, 31, 41, 51, 61, ....

Решение. Для решения поставленной задачи необходимо просматривать числа последовательности и проверять каждое из них на свойство простоты. Поскольку нам не известно, сколько членов последовательности необходимо просмотреть, мы должны просматривать этот ряд до тех пор, пока не найдем А;-е простое число; для этого воспользуемся циклом с условием.

Ргодгат Ехатр1е_24; Уаг к: 1п1:едег;

п, р,с1: Ьопд1п"Ь; Вед±п

Мг1-Ье1п ( 1 Введите номер числа1);

Кеас11п (к) ;

п:=0; р:=1;

ШНе п<к Во

Вед1п

1пс (р, 10) ; с1: =2;

Ш1е (р Мое! ЙО0) Апс! (сКзягЪ (р) ) Во 1пс(й); с1>=здг"Ь (р) ТЪеп 1пс(п);

Еп4;

Мг1-Ье1п (р) ;

КеасИп;

Епс1.

В этом решении мы смогли записать условие «Кзяг*: (р) , так как типы 1п^:едег и Кеа1 совместимы.

Задания для самостоятельной работы

1. Имеются описания

Уаг х,у: (п±пЪег, зргл_пд, зиттег, аи-Ьишп) ;

Ь: (со1с1, магт);

а) Допустимы ЛИ присваивания: х:=зрг1пд;1::=магт;1::=11о-Ь;у:=х;у:=1:?

б) Вычислить значения выражений:

зрг л. пд< зиттег;

аи-Ьитп<отл.п'Ьег;

Зисс(зрГ1пд);

Ргес! (аи'Ьитп) ;

0г<1 (зргл-пд) ;

мл_п1:ег<=зиттег ;

зргл_пд<>магт;

Ргес1 (зргл_пд) ;

Ргес1 (со1с!) ;

Рге<1 (аи-Ьитп)+0гс1 (со1<1) ;

в) Допустим ли оператор цикла с заголовком Еог х:=зргл.пд То аиЪитп Эо?

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

3. Даны описания следующих переменных:

Уаг т, т1: ^апиагу, ^еЬгиагу, та гей, аргИ, тау, :)ипе, зи1у, аидизЪ, зер"ЬетЪег, осЬоЪег, поVетЪе^, с!есетЪег) ;

к: 1..тахл_п1:; п: 1..12;

Присвоить переменной т\\

а) название месяца, следующего за месяцем т;

б) название к-то месяца после месяца т.

4. В старояпонском календаре был принят 60-летний цикл, состоящий из пяти 12-летних подциклов. Подциклы обозначались названием цвета: зеленый, крас­ный, желтый, белый и черный. Внутри каждого под цикла годы носили название животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезья­ны, курицы, собаки и свиньи. Напишите программу, которая по номеру года опре­деляет его название по старояпонскому календарю (1984 — год зеленой крысы).

5. Дано неотрицательное число к, не превышающее десяти тысяч. Напечатать фразу «к ворон» русскими словами. (Пример: если к = 23, то должно быть напечатано «двад­цать три вороны»; если к = 3651, то «три тысячи шестьсот пятьдесят одна ворона»).

6. Имеются описания Уаг с!: 1 0 1 . . 1 9 1 ; к: 0 . . 9; п : 1п1:едег; Ответьте на следующие вопросы:

а) Какие значения может принимать переменная дГ? Каков ее базовый тип? Допустимы ЛИ присваивания: с!: = 1 7 1 ; с!: = 1 а 1 ; с!: = 7 ?

б) Какие значения может принимать переменная к? Каков ее базовый тип? Допустимы ли присваивания: к: =5; к: =10; к: =-0; к: = ' 5 ' ?

в) Верно ли, что к значениям ограниченного типа можно применять те же операции, что и к значениям базового типа?

г) Есть ли ошибки в операторе:

к+п>7*к ТЪеп к:=аЪз(п) Мое! 10 Е1зе с!: =сЬг (к+Огс! ( Л0 ' ) ?

7. Укажите ошибки в следующем разделе типов: СопзЪ п=180; р1=3.1415;

Туре з1дп=('а', 'Ъ', 'с', 'с1') ;

д1= (а, 'е, о, и) ; зд1=(Ъ..с1, д) ; 1од=Воо1еап; з1дп='0'..'9';

8. Найдите ошибки в следующей программе:

Ргодгат т1з1:аке__1;

Туре топ1:Ъ= (^ апиагу, ^еЬгиагу, тагсЪ, аргИ, тау, ;]ипе, зи1у, аидизЪ, зер'ЬетЪег, ос-ЬоЪег, пс^етЪег, с!есетЬег) ; аи1:итп=зер1:етЬег. .поVетЬе^/ Уаг тгаиЪитп; с!:'0'..'9'; к:0..9; Ведхп

КеасИп (т, <3, к)

I^ т>зер1:етЬег ТЬеп с!:=к Е1зе к:=Огс1(ш)- 8; МгИ:е1п (к,с!+к) ; Епа..

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

Ргодгат т1з1:аке_2;

Туре топ1:Ъ= (^ апиагу, ^еЬгиагу, тагсЪ, аргИ, тау, ^ипе, зи1у аидизЪ, зер^етЬег, ос^оЬег, поVетЪе^, с!есетЬег) / м1п1:ег=с1есетЪег. .^еЬгиагу; зрг1пд=таг1:Ь. . тау; Уаг т:топ1:Ь; к:1..12; Вед1п

ДОгИ:е ('Введите месяц'); КеасИп (т) ;

т>зрг1пд ТЬеп т:=:]ипе; Гог к:=Огс! (^апиа^у) То Огс1(т) Бо т:=зисс(т); ДОг11:е1п (т) ; Еп<3.

10. День учителя ежегодно отмечается в первое воскресенье октября. Дано нату­ральное число п, обозначающее номер года. Определите число, на которое прихо­дится День учителя.

11. Рассмотрим некоторое натуральное число. Если это не палиндром, то изме­ним порядок его цифр на обратный и сложим исходное число с получившимся. Если сумма не палиндром, то над ней повторяется то же действие и т.д., пока не получится палиндром. Даны натуральные числа к, т, 1 (к< 1). Проверить, верно ли, что для любого натурального числа из диапазона от к до 1 процесс завершается не ^позднее, чем после т таких действий.

12. Найдите 100 первых простых чисел.

13. Дано натуральное число п, целые числа аь а2, ап. Рассмотрите отрезки последовательности аъ а2, ап (подпоследовательности идущих подряд членов), состоящих из:

а) полных квадратов;

б) степеней пятерки;

в) простых чисел.

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







Дата добавления: 2014-11-10; просмотров: 625. Нарушение авторских прав


Рекомендуемые страницы:


Studopedia.info - Студопедия - 2014-2019 год . (0.02 сек.) русская версия | украинская версия