V. ОБРАБОТКА СИМВОЛЬНЫХ И СТРОКОВЫХ ВЕЛИЧИН

 

В стандарте языка Паскаль описаны два типа переменных для литерных величин. Это - String и Char. Переменная типа Char может содержать в себе только один единственный символ, тип String предназначен для хранения строковых величин до 255 символов длиною.

При описании переменной этого типа можно указать максимальное число символов, которое можно занести в нее (это число не должно превышать 255). Например:

Var S : String[30]; {максимальная длина строки S – 30 символов}

St: String; ]; {максимальная длина строки St – 255 символов}

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

 

Пример 1.

Вывести посимвольно строку 'primer'

Program pr1;

Var st: string[6]; i: integer;

BEGIN

st:='primer';

for i:=1 to 6 do write(st[i], ' ');

END.

В результате работы данной программы на экран будут распечатаны следующие значения: p r i m e r

Таким образом, первым символом st[1] в переменной st является буква p, вторым символом st[2] является r , третьим – i и т.д.

Две строковые величины можно объединять. Эта операция называется конкатенацией и обозначается знаком "+".

Например, результатом выполнения следующих команд:

R:='kadabra';
H:='abra';
S:=H+R;

в переменной S будет значение 'abrakadabra'.

Для конкатенации результат зависит от порядка операндов (в отличие от операции сложения).

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

Код символа в Паскале можно определить при помощи функции Ord(C), где С - либо непосредственно указанный символ, либо переменная символьного типа, либо один символ строковой переменной.

Есть и обратная функция, которая возвращает символ по известному коду. Это функция Chr(N), где N - выражение, приводящее к целому числу в интервале от 0 до 255 (возможные значения кода символа). Очевидно, что Chr(Ord(C))=C, Ord(Chr(N))=N.

 

Пример 2.

Вывести на экран кодовую таблицу:

Program Pr2;
Var I : Byte;
BEGIN

For I:=32 to 255 do Write(I:4, '-',Chr(I))

END.

Цикл в программе начинается с 32 потому, что символы с кодами от 0 до 31 являются управляющими и не имеют соответствующего графического представления.

В Паскале используются следующие процедуры и функции для обработки строковых величин:

ФункцияConcat(S1[,S2,…,SN]): string – сцепляет (объединяет) строки S1, S2,…, SN. Параметры, указанные в квадратных скобках, не являются обязательными.

ФункцияCopy(S: string; Index, Count: integer): string– копирует из строки S количество Count символов, начиная с символа с номером Index.

ФункцияLength(S: string):byte – определяет длину строки S.

ФункцияPos(SubS, S: string):byte – отыскивает в строке S первое вхождение подстроки SubS и определяет номер позиции, с которой она начинается. Если подстрока не найдена, то выдается 0.

ФункцияUpCase(C: char):char – преобразует строчную латинскую букву в прописную. Любые другие символы возвращаются без преобразования.

ПроцедураDelete(var S: string; Index, Count: integer) – удаляет количество Count символов из строки S, начиная с символа с номером Index.

Процедура Insert(SubS: string; var S: string; Index: integer) – вставляет подстроку SubS в строку S, начиная с символа с номером Index.

Процедура Str(X [:Width [:Decimals]]; Var S: string) – преобразует число Х в строку символов S. Параметры Widthи Decimals задают формат преобразования (общую ширину поля и количество символов в дробной части соответственно).

Процедура Val(S: String; var X; var Code: integer) – преобразует строковое значение S в его численное представление X типа Realили Integer. Параметр Code содержит признак ошибки преобразования (0 – нет ошибки),

 

Пример 3.

Задан список из 6 слов. Определить, сколько слов списка начинается на букву «п».

Program Pr3;

Var s: string[20]; i,k:integer;

BEGIN

k:=0; for i:=1 to 6 do begin

writeln('Введите слово'); readln(s);

if s[1]='п' then k:=k+1;

end;

writeln(k);

END.

 

Пример 4.

Определить, является ли введенная строка "перевертышем".

Перевертышем называется такая строка, которая одинаково читается с начала и с конца. Например, "казак" и "потоп" - перевертыши, "канат" - не перевертыш".

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

Program Pr4;
Var
S,B : String; I : Byte;
BEGIN

Writeln('Введите строку'); Readln(S);
B:=''; {Переменной B присваиваем значение "пустая строка"}
For I:=1 to Length(S) do {перебираем символы строки}
B:=S[I]+B; {Символы строки S присоединяются к переменной B слева}
If B=S Then Writeln('Перевертыш') Else Writeln('Не перевертыш')

END.

 

Пример 5.

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

Program Pr5;
Var S : String; I,X,A,C : Integer;

BEGIN

Writeln('Введите натуральное число');

Readln(S); {Число вводится в строковую переменную}

A:=0; For I:=1 To Length(S) Do Begin

Val(S[I],X,C); {Цифра преобразуется в число}

A:=A+X {Числа суммируются}

End;

Writeln('Сумма цифр равна ',A)

END.

 

Пример 6.

Во введенной строке заменить все вхождения подстроки 'ABC' на ‘KLMNO’.

Program Pr6;
Var S : String; A : Byte;

BEGIN

Writeln('Введите строку'); Readln(S);
While Pos('ABC',S)<>0 Do {пока подстрока 'ABC' содержится в строке S }
Begin

A:=Pos('ABC',S); {определяем позицию вхождения подстроки 'ABC' в строку S}

Delete(S,A,3); {удаляем из строки S 3 символа, начиная с позиции А }

Insert('KLMNO',S,A) {вставляем в строку S на это место подстроку 'KLMNO'}

End;
Writeln(S)

END.

 

Пример 7.

Во введенной строке подсчитать процент вхождения символа ‘o’ и символа ‘e’ (создать функцию для определения процентного содержания заданного символа в строке)

Program Pr7;

{функция, определяющая процент вхождения символа с в строку st}

Function proc_char(st:string;c:char):real;

Var k, n, I:integer; {k –количество заданных символов, n – длина строки,

I - номер очередного символа строки}

Begin

n:=length(st); {вычисляем длину строки}

k:=0; for I:=1 to n do {перебираем символы строки}

if st[I]=c then k:=k+1; {если очередной символ строки равен заданному

символу, то увеличиваем счетчик k}

proc_char:=k/n*100; {определяем процент заданных символов}

End;

Var st: string;

p1,p2: real;

BEGIN {основная программа}

write('st=');readln(st); {вводим строку}

p1:=proc_char(st,'o'); {определяем процентное содержание символа ‘o’}

p2:=proc_char(st,'e'); { определяем процентное содержание символа ‘e’}

writeln('o-', p1:2:1,'%'); {вывод результата}

writeln('e-', p2:2:1,'%');

readln;

END.

 

Пример 8.

Задан список из 8 слов. Найти самое короткое слово в списке. Если таких слов несколько, то распечатать их в один столбец.

Решение поставленной задачи сводится к нескольким этапам: ввести список слов в виде массива строковых переменных; подсчитать длину каждой строки; определить наименьшую из длин; распечатать те строки массива, длина которых совпадает с наименьшей.

Program Pr9;

Var s: array[1..8] of string[20];

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

i, min: integer;

BEGIN

for i:=1 to 8 do begin

writeln('Введите слово'); readln(s[i]);

n[i]:=length(s[i]);

end;

min:=n[1]; for i:=2 to 8 do if min>n[i] then min:=n[i];

for i:=1 to 8 do if n[i]=min then writeln(s[i]);

END.

 

В данной программе для обозначения слов используется массив строковых переменных s, для обозначений соответствующих им длин слов – целочисленный массив n. Наименьший элемент массива n хранится в виде переменной min.

 

Пример 9.

Задана строка из двух слов, разделенных пробелом. Поменять в данной строке слова местами.

Program Pr10;

Var s: string[40];

s1,s2: string[20];

i,n: integer;

BEGIN

writeln('Введите строку');

readln(s);

n:=length(s); i:=pos(' ', s);

s1:=copy(s, 1, i); s2:=copy(s, i+1, n-i); s:=s2 + ' ' + s1;

writeln(s);

END.

В данной программе переменная s служит для обозначения строки из двух слов, переменные s1 и s2 – для обозначения первого и второго слова строки соответственно. Алгоритм решения заключается в том, что сначала с помощью функции pos выясняется, каким по счету символом в строке s находится пробел. Далее в строке выделяются две подстроки: одна включает все символы левее пробела (первое слово), другая – правее пробела (второе слово). В конце программы слова сцепляются в обратном порядке с использованием разделяющего их пробела.

 

ЗАДАНИЯ

1. Зашифровать введенную с клавиатуры строку, поменяв местами первый символ с третьим, второй с четвертым и т. д. Провести дешифровку.

2. В заданном тексте удалить часть текста, заключенную в скобки (вместе со скобками).

3. Напечатать самое длинное слово из заданного текста (слова разделены пробелами).

4. Определить, какой процент слов в тексте содержит букву О (слова разделены пробелами).

5. Сколько раз в тексте встречается заданное слово (слова разделены пробелами).

6. В тексте вставить между словами вместо одного пробела запятую и пробел.

7. Определить, какой процент слов в тексте начинается на букву “К”. Слова разделены пробелами.

8. Определить длину каждого слова из заданного текста (слова разделены пробелами).

9. В заданном наборе слов найти слово максимальной длины.

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

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

12. Удалить из введенной строки все цифры, кратные 3.

13. Определить, имеются ли во введеной строке следующие подряд две "4".

14. Введенную строку букв и цифр преобразовать так, чтобы после каждой цифры следовал пробел.

15. Изменить введенную строку так, чтобы каждая из цифр увеличилась на 1 (9 заменить 0).

16. Преобразовать введенную строку так, чтобы сначала были расположены цифры, потом буквы.

17. Подсчитать количество букв О и А во введенной строке.

18. Подсчитать количество цифр во введенной строке, кратных 3

19. Преобразовать введенную строку цифр, поставив перед каждой цифрой "5" цифру "6".

20. Вводятся две строки. Определить количество букв «а» в каждой из них (создать функцию, подчитывающую количество заданных символов в строке)

21. Вводятся две строки. Из каждой из них удалить буквы "о"(создать процедуру, удаляющую указанный символ из строки).

22. Преобразовать введенную строку так, чтобы выводимые части строк начинались с больших букв.

23. Найти сумму цифр введенной строки, содержащей цифры и буквы.

24. Составить программу, заменяющую окончания строк: "ion" -> "ed"

25. Вводится цена в центах. Вывести ее значение в виде долларов и центов.

26. Определить, содержатся ли во введенной строке одинаковые символы.

27. Подсчитать количество больших и маленьких букв во введенной строке.

28. Создать функцию пользователя, определяющую наименьшую цифру введенного натурального числа.

29. Создать функцию пользователя, определяющую количество четных цифр введенного числа.

30. Создать процедуру, определяющую количество букв и количество цифр во введенной строке.

31. Введены 3 строки. Подсчитать сумму цифр, кратных 3, в каждой из них (создать функцию, подсчитывающую сумму цифр, кратных 3, в строке).

32. Даны 2 строки. Определить сумму цифр в каждой из них (создать функцию, подсчитывающую сумму цифр)

33. Создать процедуру, позволяющую изменить введенную строку, добавив справа заданное количество заданных символов.

34. Создать процедуру, позволяющую из заданной строки удалить пробелы.

35. Создать процедуру, позволяющую записывать введенное слово в зеркальном отображении.

36. Создать процедуру, которая позволяет введенный текст разбить на строки по k символов.

37. Создать процедуру, которая позволит во введенной строке через каждые n символов вставить k пробелов.

38. Создать процедуру, которая в заданном тексте заменяет слово А1 на слово А2 (длины слов не совпадают).

39. Создать процедуру, которая во введенном слове заменяет один символ другим.

40. Создать процедуру, которая в тексте убирает лишние пробелы между словами, оставив по одному.

41. Вводятся три строки. Зашифровать каждую из них, заменив все буквы "с" на "о"(создать процедуру, заменяющую в заданной строке один символ другим)

42. Преобразовать три введенные строки, чтобы после каждой цифры следовал символ ‘!’ (создать процедуру, вставляющую пробел после каждой цифры в строке)

43. Дано предложение. Все пробелы в нем заменить на символ "_"(создать соответствующую процедуру).

44. Дано предложение. Удалить из него буквы «р» и «с»(создать процедуру, удаляющую из строки заданный символ).

45. Вводятся 2 строки. Заменить в каждой из них цифры символом «*» (создать соответствующую процедуру).

46. Вводятся 2 строки. Удалить из каждой строки все цифры, кратные 3(создать соответствующую процедуру).

47. Создать процедуру, позволяющую изменить введенную строку, добавив слева заданное количество заданных символов.

48. Преобразовать три введенные строки, чтобы перед каждой цифрой стоял символ ‘+’ (создать соответствующую процедуру)

49. Вводятся 2 строки. Зашифровать 1-ю строку, заменив в ней все буквы "а" на "о" и 2-ю, заменив "е" на "у" (создать процедуру, заменяющую в заданной строке один символ другим)

50. Вводятся 2 строки. Удалить из первой строки все символы ‘d’, а из второй – ‘w’ (создать процедуру, позволяющую из заданной строки удалить заданный символ).

 

 

VI. ФАЙЛЫ

 

Файл представляет собой последовательность компонент одного типа, расположенных на внешнем устройстве (например, на диске). Элементы могут быть любого типа, за исключением самого типа-файла. Число элементов в файле при описании не объявляется. Работа с физическими файлами происходит через так называемые файловые переменные.

Для задания типа-файла следует использовать зарезервированные слова File и Of, после чего указать тип компонент файла.

Пример:
Type

N = File Of Integer; {Тип-файл целых чисел}
C = File Of Char; {Тип-файл символов}

Есть заранее определенный в Паскале тип файла с именем Text. Файлы этого типа называют текстовыми.

Введя файловый тип, можно определить и переменные файлового типа:
Var

F1 : N;
F2 : C;
F3 : Text;

Тип-файл можно описать и непосредственно при введении файловых переменных:
Var
Z : File Of Integer;

Файловые переменные можно использовать лишь для выполнения операций с файлами (чтение, запись и т.д.).

Перед тем, как осуществлять ввод-вывод, файловая переменная должна быть связана с конкретным внешним файлом при помощи процедуры Assign.

Assign(<Имя файловой переменной>,<Имя файла>);

Имя файла задается либо строковой константой, либо через переменную типа String. После этого файл должен быть открыт одной из процедур Reset или Rewrite.

Reset(<Имя файловой переменной>); -открывает существующий файл для чтения, указатель текущей компоненты файла настраивается на начало файла. Если физического файла, соответствующего файловой переменной не существует, то возникает ситуация ошибки ввода-вывода.

Rewrite(<Имя файловой переменной>); - открывает новый пустой файл для записи, ему присваивается имя, заданное процедурой Assign. Если файл с таким именем уже существует, то он уничтожается.

После работы с файлом он, как правило, должен быть закрыт процедурой Close.

Close(<Имя файловой переменной>);

Это требование обязательно должно соблюдаться для файла, в который производилась запись.

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

Read(<Имя_файловой_переменной>,<Список ввода>);

Происходит считывание данных из файла в переменные, имена которых указаны в списке ввода. Переменные должны быть того же типа, что и компоненты файла.

Вывод информации производит оператор Write

Write (<Имя файловой переменной>, <Список вывода>);

Данные из списка вывода заносятся в файл, открытый для записи.
Для текстовых файлов используются также операторы Readln и Writeln с соответствующими дополнениями, относящимися к файловому вводу-выводу.

Любой файл конечен и продолжать чтение из него информации можно лишь до определенного предела. Проверить, окончен ли файл, можно вызовом стандартной логической функции Eof:

Eof (<Имя файловой переменной>)

Функция Eof принимает значение True, если файл окончен, и False - в противном случае.

 

Пример 1.

Составить программу, которая записывает в файл фамилии учащихся, а затем считывает данные из файла и выводит все фамилии, кроме тех, которые начинается с буквы 'Ш'".

Program PR1;
Var I, N : Integer; F : File Of String; S : String;

BEGIN

Assign(F,'Spis.lst'); {Связываем переменную F с файлом Spis.lst}
Writeln('Введите количество учащихся'); Readln(N);

Rewrite(F); {Открываем файл для записи в него данных}
For I:=1 To N Do Begin

Writeln('Введите фамилию'); Readln(S);
Write(F,S); {Записываем в файл введенную фамилию}

End;
Close(F); { закрываем файл}
Reset(F); {Открываем файл для чтения}
Writeln; Writeln('Список учащихся:');
While Not(Eof(F)) Do Begin {пока не достигнут конец файла}
Read(F,S); {считываем очередную фамилию}
If S[1]<>'Ш' Then Writeln(S) {если 1-й символ не ‘Ш’, то выводим}

End;
Close(F) { закрываем файл}

END.

 

Пример 2.

Записать в файл квадраты первых 10 натуральных чисел. Прочитать данные из файла.

Program PrimFile;

Var f:file of integer; i,x:integer;

BEGIN

assign(f,'kvadr.dat'); {Связываем переменную F с файлом 'kvadr.dat'}

rewrite(f); {Открываем файл для записи в него данных}
for i:=1 to 10 do begin

x:=i*i; {вычисляем квадрат очередного натурального числа}

write(f,x); {Записываем в файл }

end;

close(f); {закрываем файл}

reset(f); {Открываем файл для чтения}

While not eof(f) do begin {пока не достигнут конец файла}

read(f,x); {считываем очередное значение}

write(x:4); {выводим на экран}

end;

close(f); {закрываем файл}

readln

END.

 

Пример 3.

Записать в файл следующие данные о студентах: ФИО, группа, оценка. Просмотреть данные из файла и найти среднюю оценку в 101 группе.

 

Program pr3;

Type

vedom= record

fio:string[30]; {фамилия}

gr:string[5]; {группа}

oc:byte; {оценка}

end;

Var

f: file of vedom; {файловая переменная}

n,s,i,k:integer; {n- общее количество студентов, S- суммарная оценка в 101 гр, k-количество студентов 101 гр }

x:vedom; begin

assign(f,'vedomost.dat'); {Связываем переменную F с файлом 'vedomost.dat'}

rewrite(f); {Открываем файл для записи в него данных}

write('N='); readln(N); {вводим количество студентов}

for i:=1 to n do begin {вводим данные о каждом студенте}

write('fio:'); readln(x.fio);

write('gruppa:'); readln(x.gr);

write('ocenka:'); readln(x.oc);

write(f,x); {}

end;

close(f); {закрываем файл}

reset(f); {Открываем файл для чтения}

s:=0; k:=0;

while not eof(f) do begin {пока не достигнут конец файла}

read(f,x); {считываем очередую запись}

if x.gr='101' then begin s:=s+x.oc; k:=k+1 end;

end;

if k<> 0 then writeln('Sred.ocenka 101 gr =', s/k:4:2) else writeln('101 gr net');

close(f);

readln;

END.

 

ЗАДАНИЯ

1. Протабулировать функцию y=sin x + cos x для 0<=x<=1.5 с шагом 0.1, записать данные в файл и просмотреть данные из файла.

2. Протабулировать функцию y=x2 + 1/x для 1<=x<=5 с шагом 0.2, записать данные в файл и просмотреть данные из файла.

3. Протабулировать функцию y=ln x - x2 для 3<=x<=4 с шагом 0.1, записать данные в файл и просмотреть данные из файла.

4. Протабулировать функцию y=ex + e-x для -2<=x<=2 с шагом 0.2, записать данные в файл и просмотреть данные из файла.

5. Протабулировать функцию y=sin x2 для -pi<=x<=pi с шагом pi/10, записать данные в файл и просмотреть данные из файла.

6. Протабулировать функцию y=sin(x + x2 ) для -2pi<=x<=2pi с шагом pi/10. Записать данные в файл и просмотреть данные из файла.

7. Создать файл, содержащий значения х (0< x < 2, h= 0,2) и значения функций y= tg (x) и y=tg2 (x). Вывести на экран данные в виде таблицы.

8. Создать файл, содержащий числа a, b и их произведение. Вывести на экран данные в виде таблицы.

9. Создать файл, содержащий числа a, b и их частное. Вывести на экран данные в виде таблицы.

10. Создать файл, содержащий числа a, b и их сумму. Вывести на экран данные в виде таблицы.

11. Создать файл, содержащий числа x, y и их удвоенную сумму. Вывести на экран данные в виде таблицы.

12. Создать файл, содержащий числа a, b и квадрат их суммы. Вывести на экран данные в виде таблицы.

13. Создать файл, содержащий числа, x, y и их полусумму. Вывести на экран данные в виде таблицы.

14. Создать файл, содержащий значения х (1< x < 4, h= 0,5) и значения функции y= cos (x2). Вывести на экран данные в виде таблицы и определить, при каком значении х функция принимает максимальное значение.

15. Создать файл, содержащий значения x (0< x < 10, h= 0,5) и значения функции y= sin (x) и y= cos (x). Вывести на экран данные в виде таблицы.

16. Создать файл, содержащий значения (-3< x < 3, h= 0,2) и значения функции y= sin (еx). Вывести на экран данные в виде таблицы и определить, при каком значении х функция принимает максимальное значение.

17. Создать файл, содержащий значения x (-pi< x < pi, h= pi/10) и значения функции y= sin (x) и y= cos (x). Вывести на экран данные в виде таблицы.

18. Создать файл, содержащий значения x (-2< x < 7, h= 0,5) и значения функции y= sin2 (tg x). Вывести на экран данные в виде таблицы и определить, при каком значении х функция принимает максимальное значение.

19. Протабулировать функцию y=|sin x + cos x| для -pi< x < pi с шагом pi/10, записать данные в файл и просмотреть данные из файла.

20. Протабулировать функцию y=sin |(x - cos x)| для 0<=x<=1.5 с шагом 0.1, записать данные в файл и просмотреть данные из файла.

21. Протабулировать функцию y=|3sin x2| для -2<=x<=1.5 с шагом 0.1, записать данные в файл и просмотреть данные из файла.

22. Протабулировать функцию y=sin (x + 1/x) для 2<=x<=5 с шагом 0.2, записать данные в файл и просмотреть данные из файла.

23. Протабулировать функцию y=1/(x + x2) для 1<=x<=10 с шагом 0.5, записать данные в файл и просмотреть данные из файла.

24. Протабулировать функцию y= 1/ex + 1/e-x для -2<=x<=1.5 с шагом 0.1, записать данные в файл и просмотреть данные из файла.

25. Протабулировать функцию y= ex+cos x для -1<=x<=1.5 с шагом 0.1, записать данные в файл и просмотреть данные из файла.

26. Записать в файл следующие данные о студентах: ФИО, группа, оценка. Просмотреть данные из файла и найти количество отличников в 301 группе. Используя созданный файл, сформировать два новых файла, содержащие сведения о студентах 301 и студентах 302 групп. Просмотреть данные из этих файлов.

27. Создать файл, содержащий данные: ФИО работника; год рождения; стаж работы. Просмотреть данные из файла. Определить фамилию работника, имеющего самый большой стаж работы.

28. Создать файл, содержащий данные: ФИО работника; пол; возраст. Просмотреть данные из файла. Определить средний возраст мужчин.

29. Создать файл, содержащий данные: ФИО ученика; пол; возраст. Просмотреть записи. Определить средний возраст девочек.

30. Создать файл, содержащий данные: ФИО ученика; класс; оценка. Просмотреть записи. Определить среднюю оценку в 9-м классе.

31. Создать файл, содержащий данные: ФИО студента; группа; оценка по информатике. Просмотреть записи. Определить среднюю оценку по информатике в 302 группе.

32. Создать файл, содержащий данные: ФИО работника; цех; стаж работы. Просмотреть записи. Определить средний стаж работы работников 1 - го цеха.

33. Создать файл, содержащий данные: ФИО работника; пол; количество детей. Просмотреть данные из файла. Определить количество женщин, имеющих более двух детей.

34. Создать файл, содержащий данные: ФИО ученика; пол; рост. Просмотреть данные из файла. Определить средний рост девочек.

35. Создать файл, содержащий данные: ФИО ученика; класс; пол. Просмотреть данные из файла. Определить количество мальчиков в 5 - классе.

36. Создать файл, содержащий данные: ФИО студента; группа; оценка по информатике. Просмотреть данные из файла. Определить количество ‘4’ и‘5’ в 301 группе.

37. Создать файл, содержащий следующие данные: ФИО студента; пол; группа. Вывести данные из файла на экран. Подсчитать количество юношей и количество девушек 301 группы. Создать новый файл данных, содержащий сведения о студентах 302 группы (используя существующий файл данных).

38. Создать файл, содержащий следующие данные: ФИО студента; год рождения; группа; наличие золотой или серебряной медали. Вывести данные из файла на экран. Подсчитать количество медалистов. Создать новый файл данных, содержащий сведения о студентах, имеющих золотую медаль (используя существующий файла данных).

39. Создать файл, содержащий следующие данные: ФИО рабочего; количество отработанных дней; сумма зарплаты. Вывести данные из файла на экран. Подсчитать общую сумму зарплаты, выданной рабочим. Создать новый файл данных, содержащий сведения о рабочих, зарплата которых менее заданного значения.

40. Создать файл, содержащий следующие данные: наименование товара; количество; цена; сумма. Вывести данные из файла на экран. Подсчитать итоговую сумму. Создать новый файл данных, содержащий сведения о товарах, цена которых более заданной суммы.

41. Создать файл, содержащий следующие данные: автор; название книги; год издания. Вывести данные из файла на экран. Определить фамилию автора, чья книга вышла раньше других. Создать новый файл данных, содержащий сведения о книгах, издававшихся до 1991 года.

42. Создать файл, содержащий данные о багаже пассажиров: фамилия пассажира; количество вещей; общий вес.З аписать в новый файл тех пассажиров, общий вес вещей которых превышает 36кг (одновременно вывести данные на экран).

43. Создать файл, содержащий данные об учениках школы: фамилия, имя; класс (1,2,.....11); буква (А,Б,В,....).Определить в файле, созданном при решении задачи, сколько учащихся в 5Б и 10А классах. Записать в новый файл список учеников 11А класса. Параллельно вывести этот список на экран.

44. Создать файл, содержащий сведения об автомобилях: марка; номер в виде четырёхзначного числа; фамилия владельца. Определить, сколько автомобилей имеют номера, начинающиеся с двух нулей. Вывести данные об этих автомобилях на экран. Записать в новый файл сведения о владельцах и номерах для автомобилей BMW. Параллельно вывести список на экран.

45. Создать файл, содержащий сведения об учениках школы: ФИО; класс; отметки по предметам (русский язык, математика, чтения, рисования, музыка). Определить, сколько отличников в школе. Вывести на экран их фамилии и класс. Записать в новый файл оценки учеников 1А класса. Для визуального контроля выводите параллельно сведения об учениках на экран.

46. Создать файл, содержащий сведения о днях рождения: ФИО; число; месяц; год. В созданном файле определить, кто отмечает день рождения в июле. Записать в новый файл данные о людях, родившихся весной.

47. Создать файл, содержащий сведения о книгах: фамилия автора; книга; год издания. В созданном файле определить количество книг автора Фаронова. Вывести на экран сведения об этих книгах. Записать в новый файл данные о книгах с названием “Информатика”. Параллельно вывести эти данные на экран.

48. Создать файл, содержащий сведения о телефонах: фамилия имя отчество; телефон; адрес. В созданном файле определить телефон по фамилии. Записать в новый файл данные о телефонах начинающихся с цифры 5. Параллельно вывести эти данные на экран.

49. Создать файл, содержащий сведения о кубиках: размер ребра; цвет; материал. В созданном файле определить количество деревянных кубиков с ребром 3см и количество металлических кубиков с ребром более 5см. Записать в новый файл данные о деревянных кубиках. Параллельно вывести эти данные на экран.

50. Создать файл, содержащий сведения об экспортируемых товарах: наименование товара; страна импортирующая товар; объем поставки в штуках. В созданном файле найти страны, в которые экспортируется данный товар.


 

ЛИТЕРАТУРА

1. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие.-М.: «Нолидж», 1999-616с., ил.

2. Д. Праймс. Программирование на языке Паскаль. Практическое руководство М.: Мир, 1997.

3. Васюкова Н.Д., Тюляева В.Р. Практикум по основам программирования языка Паскаль. Учебное пособие. М.: Высшая школа. 1991.

4. Фаронов В.В. Турбо Паскаль 7.0. Практика программирования. Учебное пособие.-М.: «Нолидж», 1999-432с., ил.

5. Д. Праймс. Программирование на языке Паскаль. Практическое руководство М.: Мир, 1997.

6. Вирт Н. Алгоритмы и структуры данных. – М.,1989.