КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Каждая переменная типа string вводится отдельной процедурой readln
Будем считать, если специально не оговорено, что все слова в строке разделены одним пробелом и никаких знаков препинания нет. ПРИМЕР 1 В строке "Язык программирования Фортран" слово "Фортран" заменить словом "PASCAL". Решение Var L:string; {Буква Ф- 23-й символ в строке L} Begin { $ } L:='Язык программирования Фортран'; Delete(L,23,10); {Удаляем 10 символов, но будет удалено столько, сколько есть фактически} L:=L+'PASCAL'; Writeln(L) End. ЗАДАНИЯ №1. Подсчитать количество символов в строке до точки. №2. Для строки "Иванов Иван Иванович" определить, с какой позиции строки начинается имя "Иван". №3. Подсчитать k - количество цифр в десятичной записи целого неотрицательного числа n. №4. В строке L одна запятая и три пробела подряд (встречаются один раз). Запятую заменить на восклицательный знак, а три пробела - на один пробел. №5. Сколько раз заданный символ встречается в строке S? №6. С использованием цикла с параметром определить количество слов в заданной строке. №7. Удалить все пробелы из строки ST1. №8. В строке LB все большие буквы Q заменить на маленькие q. Решить задачу с использованием оператора цикла с предусловием. №9. Выполнить задание №191 с использованием оператора цикла с параметром. №10. Выполнить задание №189 с использованием оператора цикла c предусловием. Строка заканчивается точкой. №11. Определить количество цифр в целом числе и найти их сумму. №12. Подсчитать количество символов от 'A' до 'I' и количество символов 'Я' в заданной строке L. №13. Существует ли в строке L слова, начинающиеся с буквы 'А' и заканчивающиеся буквой 'Я'? Найденные слова вывести на экран. №14. Из строки L удалить все слова, оканчивающиеся на -кая, -кое. №15. В строке ST заменить все точки на три точки (многоточие). 14. РАБОТА С ФАЙЛАМИ Существует три способа задания файлового типа: <имя>=FILE OF <тип>; <имя>=TEXT; <имя>=FILE; где <имя> - имя файлового типа; FILE OF - зарезервированные слова (файл из) (типизированные); TEXT - имя стандартного типа текстовых файлов (текстовые файлы); FILE - любой тип языка PASCAL, кроме файлов (нетипизированные). Связь файловой переменной с именем файла осуществляется с помощью процедуры ASSIGN(<ф.п.>,<имя>) где <ф.п.> - файловая переменная; <имя> - текстовое выражение, содержащее имя файла или имя логического устройства. Имена логических устройств: CON - определяет консоль - клавиатуру или экран дисплея; PRN - определяет принтер; NUL - определяет «пустое» устройство. Если имя файла задается в виде пустой строки (например, ASSIGN(f,'')), то ввод-вывод предполагается с логического устройства CON. ИНИЦИАЦИЯ файла - указание направления передачи данных: RESET (<ф.п.>); - файл для чтения; REWRITE(<ф.п.>); - файл для записи (старый файл уничтожается). APPEND (<ф.п.>); - инициирует запись в ранее существовавший текстовый файл для его расширения. CLOSE (<ф.п.>); - закрывает файл (связь файловой переменной с именем файла сохраняется). RENAME(<ф.п.>,<новое имя>); - переименование файла (перед применением необходимо закрыть файл). FLUCH (<ф.п.>); - очищает буфер файла. Функция EOF(<ф.п.>):BOOLEAN тестирует конец файла (TRUE - указатель стоит в конце файла). Функция IORESULT:WORD возвращает условный признак последней операции ввода-вывода (ноль - операция завершена успешно). ТЕКСТОВЫЕ ФАЙЛЫ Функция EOLN(<ф.п.>):BOOLEAN - TRUE, если во входном текстовом файле достигнут маркер конца строки. ТИПИЗИРОВАННЫЕ ФАЙЛЫ SEEK(<ф.п.>,<N компонента>:LONGINT) - указывает номер (N) компонента в файле. Функция FILESIZE(<ф.п.>):LONGINT - количество компонентов файла. Функция FILEPOS(<ф.п.>):LONGINT - порядковый номер компонента в файле, который будет обрабатываться следующей операцией ввода-вывода. НЕТИПИЗИРОВАННЫЕ ФАЙЛЫ ИНИЦИАЦИЯ файла: RESET (<ф.п.>[,<длина записи>]); REWRITE(<ф.п.>[,<длина записи>]); где <длина записи> - длина записи в байтах (при 512 байтах - максимальная скорость, по-умолчанию <длина записи> равна 128 байтам). BLOCKREAD (<ф.п.>,<буф>,<N>[,<NN>]); BLOCKWRITE(<ф.п.>,<буф>,<N>[,<NN>]) где <буф> - имя переменной (буфера), которая будет участвовать в обмене данными с диском; <N> - количество записей, которые должны быть прочитаны или считаны за одно обращение к диску; <NN> - необязательный параметр, содержащий при выходе из процедуры количество фактических обработанных записей. Процедуру SEEK и функции FILESIZE, FILEPOS, описанные ранее, можно использовать и для нетипизированных файлов. ПРИМЕР 1 1) Ввести двухмерный массив X(5,3) и записать его в файл Z.TXT. 2) Все элементы массива X увеличить в два раза (массив считать из файла Z.TXT). Если последний элемент массива X53=0, то в конец файла добавить еще один элемент: -1. Решение 1) Var X:real; f:text; {f – файловая переменная} j,i:integer; Begin ASSIGN(f,'z.txt'); {назначение, соответствие} REWRITE(f); {создаем файл для записи} for i:=1 to 5 do {Можно сделать так: } for j:=1 to 3 do { for i:= 1 to 15 do } begin read(x); writeLN(f,x) {Запись в файл} end; CLOSE(f) {Закрытие, фиксирование} End. 2) Var x: array [1..5,1..3] of real; f:text; i,j:integer; Begin assign(f,'z.txt'); RESET(f); {открываем файл для чтения} for i:= 1 to 5 do for j:= 1 to 3 do begin read(f,x[i,j]); x[i,j]:=2*x[i,j] end; { Мы сейчас находимся в конце файла, значит, можно добавлять в файл записи } if x[5,3]=0 then writeln(f,-1); { Добавим к условию задачи следующее: ’ дописать в файл новую матрицу после старой ’, т.е. в файле наша матрица будет записана два раза подряд } for i:=1 to 5 do for j:= 1 to 3 do writeln(f,x[i,j]); if x[5,3]=0 then writeln(f,-1); close(f) End. B этом примере первую часть можно было оформить так: Type M=array[1..5,1..3] of real; Var x:M; i,j:integer; f:file of M; Begin for i:=1 to 5 do for j:=1 to 3 do read(x[i,j]); ASSIGN(f,'z.txt'); REWRITE(f); { Так как f – файловая переменная, т.е. файл записей, в котором каждая запись представляет собой массив, сразу можно записать в файл весь массив } write(f,x); { массив записывается целиком процедурой WRITE } CLOSE(f) End. Если файловая переменная объявлена как файл (file of) типа массив, то каждая запись файла содержит массив, описанный в типе, т.е. каждая процедура write (read) записывает (считывает) в (из) файл(а) за одно обращение один массив.
Дата добавления: 2014-12-27; Просмотров: 465; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |