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

Пример нисходящей разработки

Зачем нужны файлы? | Запись информации в файл | Запись в файл значений переменных | Чтение информации из файла | Чтение файла целиком | Бинарный и текстовый режимы | Произвольный доступ к файлу |


Читайте также:
  1. I) Эффективность военных преобразований 1860-1870-х годов на примере Русско-японской войны.
  2. I. Примерный перечень вопросов рубежного контроля.
  3. II. Примерный перечень вопросов к зачету (экзамену) по всему курсу.
  4. III. РАЗЛИЧНЫЕ СХЕМЫ УПРАВЛЕНИЯ ГОСУДАРСТВЕННОЙ СОБСТВЕННОСТЬЮ: ПРИМЕРЫ ИЗ ИСТОРИЧЕСКОГО ОПЫТА И ЗАРУБЕЖНОЙ ПРАКТИКИ
  5. Look at the family tree and complete the sentences as in the example (Посмотри на семейное древо и заполни пропуски как в примере).
  6. Lt;question>Выберите правильный пример аннотации.
  7. XVI. Переведите на калмыцкий язык, заменяя подчеркнутые слова предложенными примерами.

Напишем программу, которая переписывает содержимое одного файла в другой, дублируя все английские гласные буквы.

Разработаем алгоритм решения данной задачи. Начнем с высокоуровневых шагов:

  1. открыть исходный файл для чтения;
  2. открыть другой файл для записи;
  3. переписать символы из первого файла во второй, дублируя английские гласные буквы;
  4. закрыть оба файла.

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

 

 

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

 

void dublicateVowels(FILE* in, FILE* out) {

printf("Здесь будет дублирование гласных");

}

 

 

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

  1. считать очередной символ из файла in;
  2. записать этот символ в файл out;
  3. если этот символ является английской гласной буквой, то записать его в файл out еще раз.

В данном алгоритме тривиальными являются все действия кроме проверки буквы на третьем шаге. Эта проверка должна ответить «Да» или «Нет» в зависимости от значения символа. Таким образом, эту проверку разумно вынести в отдельную функцию, которая будет принимать в качестве аргумента проверяемый символ, а возвращать значение логического типа true или false в зависимости от результата проверки. В итоге функция dublicateVowels() примет следующий вид:

В этой функции теперь неопределенна функция isEngVowel(), поэтому для нее можно поставить заглушку, возвращающую true всегда.

 

bool isEngVowel(char symbol) {

return true;

}

 

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

  1. создать строку с английскими гласными буквами;
  2. пробежаться в цикле по этой строке, возвращая true, если очередной символ равен аргументу функции;
  3. по окончании цикла, другими словами, если цикл не возвратил true, по ходу работы, то возвратить false.

 

В этом алгоритме уже все понятно, поэтому можно ее реализовать полностью.

 

bool isEngVowel(char symbol) {

char engVows[] = "aeiouyAEIOUY";

for (int i=0; i<strlen(engVows); i++) {

if (symbol==engVows[i]) {

return true;

}

}

return false;

}

 

КОНТРОЛЬНЫЕ ВОПРОСЫ

  1. Как записать один символ в файл?
  2. Как записать значение числовой переменной в файл?
  3. Как считать все содержимое файла?
  4. Какие функции для работы с файлами вам известны?
  5. Что произойдёт, если попытаться прочитать содержимое несуществующего файла?

 

 


Дата добавления: 2015-08-17; просмотров: 45 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Вывод файла в обратном порядке| И бедной хижине, и полю».

mybiblioteka.su - 2015-2024 год. (0.006 сек.)