Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Контрольная работа. По курсу “методы программирования и информатика”Стр 1 из 2Следующая ⇒ по курсу “Методы программирования и информатика” для специальности 1-31 03 01 – математика (научно-педагогическая деятельность) 3 курс 6 семестр заочный факультет
1. Дана строка длиной не более 255 символов. Выполнить обработку текста. Формат вывода: - исходное значение переменной типа STRING с соответствующим комментарием; - краткая формулировка поставленной задачи; - результирующее значение переменной типа STRING с соответствующим комментарием;
2. Сформировать структуру данных типа массив записей. Вывод результатов обработки элементов массива записей осуществить в виде таблицы.
3. Разработать программу работы с файлами записей. Каждая запись состоит из полей, перечисленных в задании №2 (согласно варианту). Программу оформить с помощью процедур: организация (создание) файла, последовательная распечатка, корректировка (расширение) файла новыми записями, последовательная обработка.
Текст программы 1
program pr1; uses CRT; {вызов модуля} var s,max_sl,min_sl:string; {исходная строка, максимальное слово, минимальное слово} kol,n:integer; {кол-во максимальных слов, кол-во символов} i,j,nach_sl:integer; {параметр цикла, начало слова} max,min:integer; {количество букв} sl:string; {для выделения слов} kol1,kol2:integer; {для проверки количества max и min слов} begin clrscr; {очистка экрана} writeln('ПОСТАНОВКА ЗАДАЧИ:'); writeln; writeln('Выдать на экран слово минимальной длины столько раз, сколько'); writeln('встречается слово максимальной длины. В противном случае текст не изменять.'); writeln; write('Введите строку:');readln(s); writeln('Исходная строка:',s); {удаление лишних пробелов} for j:=1 to length(s) do for i:=2 to length(s) do if (s[i]=' ')and(s[i-1]=' ') then delete(s,i-1,1); if s[1]=' ' then delete(s,1,1); {вставка в конец предложения точки, если ее не поставили} if s[length(s)]<>'.' then s:=s+'.'; {поиск минимального и максимального слов} nach_sl:=1; n:=length(s); max:=0; min:=255; for i:=1 to n do if (s[i]=' ')or(s[i]='.') then begin {максимальное слово} if (i-nach_sl>max) then begin max:=i-nach_sl; max_sl:=copy(s,nach_sl,max) end; {минимальное слово} if (i-nach_sl<min) then begin min:=i-nach_sl; min_sl:=copy(s,nach_sl,min) end; nach_sl:=i+1; end; {подсчет количество максимального слова} nach_sl:=1; n:=length(s); kol:=0; kol1:=1; kol2:=1; for i:=1 to n do if (s[i]=' ')or(s[i]='.') then begin sl:=copy(s,nach_sl,i-nach_sl); if (i-nach_sl=max)and(sl<>max_sl) then inc(kol1); if (i-nach_sl=min)and(sl<>min_sl) then inc(kol2); if max_sl=sl then inc(kol); nach_sl:=i+1; end;
if (kol1=1)and(kol2=1) then begin writeln('Максимальное слово:',max_sl); writeln('Минимальное слово:',min_sl); writeln; writeln('Выполнение задачи:'); for i:=1 to kol do writeln(i,') слово:',min_sl) end else begin writeln('Текст остался без изменений, так как в тексте есть РАЗНЫЕ минимальные и/или'); writeln('максимальные слова!!!'); end; readln; end.
Текст программы 2 program pr_2; uses CRT; type {запись} zapis=record fio:string[24]; {ФИО} fak:string[13]; {факультет} grup:string[6]; {группа} ang:integer; {англ} fran:integer; {франц} nem:integer; {немец} end; var a:array [1..20] of zapis; {массив записей} n,i:integer; {количество записей и параметр цикла} p:boolean; {для определения количества ввода}
{процедура ввода данных} procedure vvod; begin p:=false; {чтобы можно ввести только один раз} write('Введите количество записей:');readln(n); for i:=1 to n do with a[i] do begin write('Введите ФИО:');readln(fio); write('Введите факультет:'); readln(fak); write('Введите группу:');readln(grup); write('Введите оценку по английскому языку(1-10):');readln(ang); write('Введите оценку по французкому языку(1-10):'); readln(fran); write('Введите оценку по немецкому языку(1-10):'); readln(nem); end; end;
{процедура просмотра всех записей} procedure pros; begin clrscr;{очистка} {вывод шапки таблицы} writeln(' БАЗА ДАННЫХ ВСЕХ СТУДЕНТОВ '); writeln('╔═══╦════════════════════════╦═════════════╦══════╦════════╦════════╦═══════╗'); writeln('║НОМ║ ФИО ║ ФАКУЛЬТЕТ ║ГРУППА║АНГЛ. ЯЗ║ФРАН. ЯЗ║НЕМ. ЯЗ║'); writeln('╠═══╬════════════════════════╬═════════════╬══════╬════════╬════════╬═══════╣'); for i:=1 to n do with a[i] do writeln('║',i:3,'║',fio:24,'║',fak:13,'║',grup:6,'║',ang:8,'║',fran:8,'║',nem:7,'║'); writeln('╚═══╩════════════════════════╩═════════════╩══════╩════════╩════════╩═══════╝'); writeln('Для продолжения нажмите "ENTER"...'); readln; end; procedure obr; var j:integer; {номера записей} begin clrscr; writeln(' БАЗА ДАННЫХ ТЕХ СТУДЕНТОВ, КОТОРЫЕ ЗНАЮТ ХОТЯ БЫ ОДИН ЯЗЫК НА 10 '); writeln('╔═══╦════════════════════════╦═════════════╦══════╦════════╦════════╦═══════╗'); writeln('║НОМ║ ФИО ║ ФАКУЛЬТЕТ ║ГРУППА║АНГЛ. ЯЗ║ФРАН. ЯЗ║НЕМ. ЯЗ║'); writeln('╠═══╬════════════════════════╬═════════════╬══════╬════════╬════════╬═══════╣'); j:=0; for i:=1 to n do with a[i] do {обработка} if (ang=10)or(fran=10)or(nem=10) then begin inc(j); writeln('║',j:3,'║',fio:24,'║',fak:13,'║',grup:6,'║',ang:8,'║',fran:8,'║',nem:7,'║'); end; writeln('╚═══╩════════════════════════╩═════════════╩══════╩════════╩════════╩═══════╝'); writeln('Для продолжения нажмите "ENTER"...'); readln; end; {процедура меню} procedure menu; var q:integer; begin while true do begin clrscr; {очистка} {вывод меню} writeln('Меню программы'); writeln('1- Ввод'); writeln('2- Просмотр'); writeln('3- Обработка'); writeln('4- Выход'); readln(q); case q of 1:if p=true then vvod else begin writeln('Данные уже введены!!!');readln end; 2:pros; 3:obr; 4:exit; end; end; end; {основная программа} begin p:=true; menu; writeln('Работа с программой завершена!!! Нажмите "ENTER"...'); readln; end.
Текст программы 3 program pr_3; uses CRT; type {запись} zapis=record fio:string[24]; {ФИО} fak:string[13]; {факультет} grup:string[6]; {группа} ang:integer; {англ} fran:integer; {франц} nem:integer; {немец} end; var a:array [1..20] of zapis; {массив записей} n,i:integer; {количество записей и параметр цикла} filename:string; {имя файла} f:file of zapis; {тип файл} zap:zapis; {запись}
{процедура создания файла и ввода начальной информации} procedure sozd; begin clrscr; {имя файла} writeln('Введите имя файла:'); readln(filename); assign(f,filename); {присвоение имя} rewrite(f);{создание файла} {ввод исходных данных} write('Введите количество записей:');readln(n); for i:=1 to n do with zap do begin write('Введите ФИО:');readln(fio); write('Введите факультет:'); readln(fak); write('Введите группу:');readln(grup); write('Введите оценку по английскому языку(1-10):');readln(ang); write('Введите оценку по французкому языку(1-10):'); readln(fran); write('Введите оценку по немецкому языку(1-10):'); readln(nem); write(f,zap);{запись в файл} end; close(f); {закрыть} end;
{процедура вставки данных} procedure korr; begin writeln('Введите имя файла:');readln(filename); assign(f,filename); reset(f); write('Сколько записей добавить:');readln(n); seek(f,filesize(f)); for i:=1 to n do with zap do begin write('Введите ФИО:');readln(fio); write('Введите факультет:'); readln(fak); write('Введите группу:');readln(grup); write('Введите оценку по английскому языку(1-10):');readln(ang); write('Введите оценку по французкому языку(1-10):'); readln(fran); write('Введите оценку по немецкому языку(1-10):'); readln(nem); write(f,zap); end; close(f); end;
{процедура просмотра всех записей} procedure pros; begin writeln('Введите имя файла:');readln(filename); assign(f,filename); clrscr;{очистка} {вывод шапки таблицы} writeln('Информация считана из файла:',filename); writeln(' БАЗА ДАННЫХ ВСЕХ СТУДЕНТОВ '); writeln('╔═══╦════════════════════════╦═════════════╦══════╦════════╦════════╦═══════╗');writeln('║НОМ║ ФИО ║ ФАКУЛЬТЕТ ║ГРУППА║АНГЛ. ЯЗ║ФРАН. ЯЗ║НЕМ. ЯЗ║'); writeln('╠═══╬════════════════════════╬═════════════╬══════╬════════╬════════╬═══════╣'); reset(f); for i:=1 to filesize(f) do with zap do begin read(f,zap); writeln('║',i:3,'║',fio:24,'║',fak:13,'║',grup:6,'║',ang:8,'║',fran:8,'║',nem:7,'║'); end; writeln('╚═══╩════════════════════════╩═════════════╩══════╩════════╩════════╩═══════╝'); close(f); writeln('Для продолжения нажмите "ENTER"...'); readln; end;
procedure obr; var j:integer; {номера записей} begin clrscr; writeln('Введите имя файла:');readln(filename); assign(f,filename); reset(f); clrscr; writeln(' БАЗА ДАННЫХ ТЕХ СТУДЕНТОВ, КОТОРЫЕ ЗНАЮТ ХОТЯ БЫ ОДИН ЯЗЫК НА 10 '); writeln('╔═══╦════════════════════════╦═════════════╦══════╦════════╦════════╦═══════╗'); writeln('║НОМ║ ФИО ║ ФАКУЛЬТЕТ ║ГРУППА║АНГЛ. ЯЗ║ФРАН. ЯЗ║НЕМ. ЯЗ║'); writeln('╠═══╬════════════════════════╬═════════════╬══════╬════════╬════════╬═══════╣'); j:=0; for i:=1 to filesize(f) do with zap do {обработка} begin read(f,zap); if (ang=10)or(fran=10)or(nem=10) then begin inc(j); writeln('║',j:3,'║',fio:24,'║',fak:13,'║',grup:6,'║',ang:8,'║',fran:8,'║',nem:7,'║'); end; end; close(f); writeln('╚═══╩════════════════════════╩═════════════╩══════╩════════╩════════╩═══════╝'); writeln('Для продолжения нажмите "ENTER"...'); readln; end;
{процедура меню} procedure menu; var q:integer; begin while true do begin clrscr; {очистка} {вывод меню} writeln('Меню программы'); writeln('1 - Создание файла'); writeln('2 - Последовательная распечатка(Просмотр)'); writeln('3 - Обработка'); writeln('4 - Корректировка (расширение) файла новыми записями'); writeln('5 - Выход'); readln(q); case q of 1:sozd; 2:pros; 3:obr; 4:korr; 5:exit; end; end; end;
{основная программа} begin menu; writeln('Работа с программой завершена!!! Нажмите "ENTER"...'); readln; end.
|