Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

программирование_занятие_6

.doc
Скачиваний:
9
Добавлен:
14.05.2015
Размер:
901.63 Кб
Скачать

«Решение задач на обработку чисел и строк».

Структурированные типы данных. Cтрока

1 Определение. Строковый (литерный). Базовый.

2 Способы представления (хранения).

BASIC PASCAL

<им.пер.>$ <им.пер.>:string[12];

BASIC Использование специальной области памяти, размер которой (по умолчанию 200 байт) может быть изменен оператором clear .

PASCAL Задается как одномерный массив знаков (см. ТД "массив").

В нулевом элементе массива хранится фактическая длина строки.

* Как исключение, ввод и вывод происходит как с базовыми элементами.

3 Основные операции.

BASIC PASCAL

конкатенация (слияние) =a$+b$ =concat(a,b,...)

выделение подстроки слева =left$(a$,x)

выделение подстроки справа =right$(a$,x)

выделение подстроки =mid$(a$,m,x) =copy(a,m,x)

замена части строки внутри строки mid$(a$,m,x)=

вставка строки внутрь строки insert(q,z,p)

удаление части строки delete(s,p,n)

4 Связь с данными других типов.

BASIC PASCAL

определение длины строки =len(a$) =lenth(a)

поиск подстроки в строке =instr(a$,b$) =pos(b,a)

представление чисел строкой цифр =str$(x) str(v:d:s,z);

{ =bin$(x) =oct$(x) =hex$(x) }

превращение строки цифр в число =val(a$) val(s,v,c)

-----------------------------------------------------------------------

2004 A09

программы

Определите значение целочисленных переменных x, y и t после выполнения фрагмента программы:

Бейсик

Паскаль

Алгоритмический

x=5 y=7 t=x ' MOD -  стандартная операция, вычисляющая остаток от деления нацело первого аргумента на второй ` x= y MOD x y=t

x:=5;

y:=7; t:=x; x:= y mod x; {mod -  стандартная операция, вычисляющая остаток от деления нацело первого аргумента на второй} y:=t;

x:=5;

y:=7; t:=x; x:=mod (y,x); | mod - стандартная функция, вычисляющая      остаток от деления нацело первого аргумента на второй| y:=t;

1)

x=2, y=5, t=5

2)

x=7, y=5, t=5

3)

x=2, y=2, t=2

4)

x=5, y=5, t=5

1

2005 А07

программа

Определите значение целочисленных переменных a и b после выполнения фрагмента программы (ниже представлена одна и та же программа, записанная на разных языках программирования):

Бейсик

Паскаль

Алгоритмический

a=42 b=14 a=a\b b=a*b a=b\a

\ — стандартная операция, вычисляющая результат деления нацело первого аргумента на второй

a:=42;

b:=14; a:=a div b; b:=a*b; a:=b div a; {div — 

стандартная операция, вычисляющая результат деления нацело первого аргумента на второй}

a:=42

b:=14 a:= div(a, b) b:= a*b a:= div(b, a) | div —

стандартная функция, вычисляющая результат деления нацело первого аргумента на второй|

1)

a = 42, b = 14

2)

a = 1, b = 42

3)

a = 0, b = 588

4)

a = 14, b = 42

2004 С05

прогр

Во входном файле text.dat содержится текст на английском языке, заканчивающийся точкой (другие символы “.” в этом файле отсутствуют). Требуется написать программу на языке Паскаль или Бейсик, которая будет определять и выводить на экран английскую букву, встречающуюся в этом тексте чаще всего, и количество там таких букв. Строчные и прописные буквы при этом считаются не различимыми. Если искомых букв несколько, то программа должна выводить на экран первую из них по алфавиту. Например, пусть файл содержит следующую запись: It is not a simple task. Yes! Чаще всего здесь встречаются буквы I, S и T (слово Yes в подсчете не учитывается, так как расположено после точки). Следовательно, в данном случае программа должна вывести два символа, разделенных пробелом: I 3

2009 А05

программа

Определите значение переменной c после выполнения следующего фрагмента программы.

Бейсик

Паскаль

Алгоритмический

a = 5

a = a + 6

b = – a

c = a – 2 * b

a:=5; a:=a+6; b:= –a;

c:=a–2*b;

a:=5 a:=a+6 b:= –a

c:=a–2*b

1)

c = –11

2)

c = 15

3)

c = 27

4)

c = 33

4

2009 B02

Программа

Запишите значение переменной b после выполнения фрагмента алгоритма:

Примечание: знаком := обозначена операция присваивания.

знаком * обозначена операция умножения.

511

2009 С01

программа

Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (x,y – действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно.

ПРОГРАММА

НА ПАСКАЛЕ

ПРОГРАММА

НА БЕЙСИКЕ

ПРОГРАММА

НА СИ

var x,y: real;

begin

readln(x,y);

if y<=1 then

if x>=0 then

if y>=sin(x) then

write('принадлежит')

else

write('не принадлежит')

end.

INPUT x, y

IF y<=1 THEN

IF x>=0 THEN

IF y>=SIN(x) THEN

PRINT "принадлежит"

ELSE

PRINT "не принадлежит"

ENDIF

ENDIF

ENDIF

END

void main(void)

{ float x,y;

scanf("%f%f",&x,&y);

if (y<=1)

if (x>=0)

if (y>=sin(x))

printf("принадлежит");

else

printf("не принадлежит");

}

Последовательно выполните следующее:

1) Приведите пример таких чисел x, y, при которых программа неверно решает поставленную задачу.

2) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы.)

2005 С03

2009 С02

программа

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