Содержание
Постановка задания
Задание для всех вариантов звучит так (или, возможно, немного изменено, так как могут быть разные издания учебного пособия):
Сформировать исходный текстовый файл из строк, распечатать его содержимое, создать второй текстовый файл в соответствии с заданием, распечатать содержимое второго файла.
Слова в строках файла отделяются друг от друга пробелом. Формирование файла, распечатки файла, решение задачи оформить в виде функций с аргументами.
Задачу решить созданием файла проекта.
Варианты заданий
Вариант | Задание |
1. | Скопировать в файл $F2$ только те строки из $F1$, в которых встречается хотя бы одно слово из первой строки $F1$. |
2. | Скопировать в файл $F2$ только те строки из $F1$, в которых имеется заданное слово. |
3. | Скопировать в файл $F2$ только те строки из $F1$, которые начинаются и заканчиваются на одну и ту же букву, и подсчитать количество символов в $F2$. |
4. | Скопировать из файла $F1$ в файл $F2$ те строки, в которых встречается хотя бы одно слово из последней строки $F1$. |
5. | Скопировать из файла $F1$ в файл $F2$ те строки, в которых имеются слова-палиндромы. |
6. | Скопировать из файла $F1$ в файл $F2$ строки, оставив в каждой строке только слова максимальной длины. |
7. | Скопировать из файла $F1$ в файл $F2$ все строки, в которых встречаются слова-идентификаторы из заданного списка. |
8. | Скопировать из файла $F1$ в файл $F2$ все слова строки, содержащие цифры, и подсчитать количество строк, которые начинаются на заданную букву в файле $F2$. |
9. | Скопировать из файла $F1$ в файл $F2$ все строки, которые содержат только одно слово, и найти самое длинное слово в файле $F2$. |
10. | Скопировать из файла $F1$ в файл $F2$ все строки, которые не содержат заданного слова, и найти самое короткое слово в файле $F2$. |
11. | Скопировать из файла $F1$ в файл $F2$ все строки, кроме той строки, которая содержит самое короткое слово, и напечатать номер этой строки. |
12. | Скопировать из файла $F1$ в файл $F2$ все строки, кроме той строки, в которой содержится слово-палиндром максимальной длины. |
13. | Скопировать из файла $F1$ в файл $F2$ все строки, упорядочив слова в каждой строке по алфавиту. |
14. | Скопировать из файла $F1$ в файл $F2$ все строки, содержащие симметричные слова, упорядочив слова в этих строках по алфавиту. |
15. | Скопировать из файла $F1$ в файл $F2$ строки, в которых не встречаются слова-идентификаторы Си из заданного списка. |
16. | Скопировать из файла $F1$ в файл $F2$ строки, в которых встречается по два одинаковых слова. |
17. | Скопировать из файла $F1$ в файл $F2$ строки, в которых нет одинаковых слов. |
18. | Скопировать из файла $F1$ в файл $F2$ строки максимальной длины, упорядочив в них слова по алфавиту. |
19. | Скопировать из файла $F1$ в файл $F2$ все строки, содержащие не менее двух одинаковых слов, и определить номер слова, в котором больше всего цифр. |
20. | Скопировать из файла $F1$ в файл $F2$ все строки, в которых содержатся только слова, состоящие из чисел. Дописать в конце строк сумму чисел в строке. |
21. | Скопировать из файла $F1$ в файл $F2$ все строки, в которых не содержатся слова, состоящие из чисел. Дописать в конце строки ее длину. |
22. | Скопировать из файла $F1$ в файл $F2$ все строки, в которых содержится больше заданного числа слов. Дописать в конце строки сумму цифр в строке. |
23. | Скопировать из файла $F1$ в файл $F2$ все строки, в которых есть слова, совпадающие с первым словом строки. Дописать в конце строки количество слов в строке. |
24. | Скопировать из файла $F1$ в файл $F2$ все строки, в которых нет повторяющихся слов. Дописать в конце строки номер строки в файле. |
25. | Скопировать из файла $F1$ в файл $F2$ все строки, в которых есть слова, повторяющиеся заданное число раз. Дописать в конце строки количество символов в слове максимальной длины. |
Лабораторная работа $№10$ предполагает написание программы на языке Си. При заказе работы своего варианта вы получите качественно написанную и хорошо прокомментированную программу.
Дополнительно заказав алгоритм решения вашей задачи (мы крайне рекомендуем это сделать), получите аккуратно оформленный отчет-алгоритм, поясняющий все тонкости решения поставленной задачи.
Образец выполнения (вариант №5)
Условие задания
Скопировать из файла $F1$ в файл $F2$ те строки, в которых имеются слова-палиндромы.
Алгоритм решения задачи
Прежде чем переходить непосредственно к кодированию данной лабораторной работы, нужно провести ее алгоритмизацию. Данный этап является обязательным и ни один профессиональный программист не опускает его в своей работе.
Пусть нам дан текстовый файл F1.txt, содержащий следующую информацию:
В постановке задачи есть такая фраза:
имеются слова-палиндромы
То есть необходимо отлично понимать, что такое слова-палиндромы, иначе будет физически невозможно выполнить задание. Понятие палиндрома было тщательнейшим образом рассмотрено в лабораторной работе №8.
Пошаговое описание алгоритма:
- Открываем входной текстовый файл F1.txt в режиме чтения
- Создаем выходной текстовый файл F2.txt в режиме записи
- Пока в файле F1.txt остались непрочитанные строки
- Считываем текущую строку из входного файла
- Разбиваем эту строку на отдельные слова (в теории программирования часто говорят «токены«)
- Каждое слово проверяем на палиндромность
- Если текущее слово является палиндромом, то
- текущую строку записываем в выходной текстовый файл F2.txt
- Закрываем входной и выходной текстовый файлы
💡 Если понимать данный алгоритм, то кодирование остается лишь чисто технической задачей. Именно поэтому мы всегда рекомендуем студентам потратить достаточное количество времени на предварительный анализ решаемой задачи.
Необходимые программные функции для кодирования
Ниже представлен список необходимых функций, требующихся для успешного решения поставленной задачи (самое главное — помнить о том, что функция должна строго решать какую-то конкретную одну задачу).
№ | Название функции | Назначение функции |
1 | main | Главная функция программы (точка входа). В рамках этой функции будет реализован ввод имен всех текстовых файлов, вывод на экран содержимого текстовых файлов, а также вызов остальных функций программы. |
2 | IsWordPalindrom | Эта функция принимает на вход текущее слово и проверяет, является ли оно палиндромом. |
3 | PrintTextFile | Эта функция принимает на вход имя текстового файла и выводит его содержимое на экран. |
4 | IsExistsFile | Эта функция принимает на вход имя текстового файла и проверяет его существование на жестком диске компьютера. |
5 | CopyStringWithPalindrom | Эта функция принимает на вход имена входного и выходного текстовых файлов и производит копирование тех строк из входного файла, которые содержат слова-палиндромы. |
Это минимальный набор функций, который нужен для успешной реализации поставленной задачи.
➡ При желании количество функций можно увеличить вдвое.
Реализация задачи на языке Си
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | #include <stdio.h> // для ввода, вывода (gets, printf) #include <Windows.h> // для руссификации #include <conio.h> // для задержки программы (getch) #include <string.h> // для строковых функций (strlen, strcpy, strtok) #define MAX_LEN_NAME_FILE 100 // максимальная длина имени текстовых файлов #define MAX_LEN_STRING 1000 // максимальная длина строки текстовых файлов //------------------------------------------------------------------------------- // вывод содержимого заданного текстового файла на экран // pnameFile - имя текстового файла, содержимое которого выводится на экран //------------------------------------------------------------------------------- void PrintTextFile(const char pnameFile[]) { FILE* f; char currentString[MAX_LEN_STRING]; printf("\nСодержимое файла '\%s\' имеет вид: \n", pnameFile); // пока не достигнут конец файла while(!feof(f)) { fgets(currentString, MAX_LEN_STRING - 1, f); // читаем текущую строку из файла printf("\t%s", currentString); // выводим считанную строку на экран } fclose(f); // закрываем текстовый файл } //------------------------------------------------------------------------------- // проверка существования входного файла // pnameFile - имя текстового входного файла // 0 - такого файла не существует // 1 - такой файл существует //------------------------------------------------------------------------------- int IsExistsFile(const char pnameFile[]) { if(f == NULL) // если файла не существует, то возвращаем 0 return 0; fclose(f); return 1; // если файл существует, то возвращаем 1 } //------------------------------------------------------------------------------- // проверка слова на палиндромность // pword - слово, которое проверяется на палиндромность // 0 - входное слово НЕ палиндром // 1 = входное слово палиндром //------------------------------------------------------------------------------- int IsWordPalindrom(const char pword[]) { int i; int lenWord = strlen(pword); // вычисляем длину анализируемого слова // в цикле начинаем сверять симметричные символы слова for(i = 0; i < lenWord / 2; i++) if(pword[i] != pword[lenWord - 1 - i]) // если символы не совпали, то return 0; // данное слово не является палиндромом return 1; } //------------------------------------------------------------------------------- // копируем те строки, в которых имеются слова-палиндромы // pinputFile - имя входного текстового файла // poutputFile - имя выходного текстового файла //------------------------------------------------------------------------------- void CopyStringWithPalindrom(const char pinputFile[], const char poutputFile[]) { FILE* f1; FILE* f2; char currentString[MAX_LEN_STRING]; char dublicate[MAX_LEN_STRING]; char* word; while(!feof(f1)) { fgets(currentString, MAX_LEN_STRING - 1, f1); strcpy(dublicate, currentString); word = strtok(dublicate, " \n"); while(word != NULL) { if(IsWordPalindrom(word) == 1) { fprintf(f2, "%s", currentString); break; } word = strtok(NULL, " \n"); } } // после обработки файлы нужно закрыть (разорвать с файлами связь) fclose(f1); fclose(f2); } //------------------------------------------------------------------------------- // главная функция программы (точка входа) //------------------------------------------------------------------------------- int main(void) { // имена входного и выходного текстовых файлов char inputNameFile[MAX_LEN_NAME_FILE]; char outputNameFile[MAX_LEN_NAME_FILE]; // настройка руссификации SetConsoleCP(1251); SetConsoleOutputCP(1251); // запрашиваем с клавиатуры имя входного текстового файла printf("Введите имя входного текстового файла: "); gets(inputNameFile); // убеждаемся, что входной файл существует if(IsExistsFile(inputNameFile) == 0) printf("\nВозникла непредвиденная ошибка при чтении данных из файла! Возможно, такого файла не существует!\n"); else { // выводим содержимое входного текстового файла на экран PrintTextFile(inputNameFile); // запрашиваем с клавиатуры имя выходного текстового файла printf("\n\nВведите имя выходного текстового файла: "); gets(outputNameFile); // копируем из входного файла только те строки, содержащие слова-палиндромы CopyStringWithPalindrom(inputNameFile, outputNameFile); // выводим содержимое результирующего файла на экран PrintTextFile(outputNameFile); // удаляем временный результирующий файл с жесткого диска remove(outputNameFile); } printf("\n\nДля завершения работы программы нажмите клавишу ENTER..."); getch(); // задержка работы программы, чтобы можно было просмотреть результат return 0; // завершение работы программы и передача управления в ОС } //------------------------------------------------------------------------------- |
Результаты работы программы
Стоимость заказа работы
➡ Стоимость программы из любого варианта составляет $200$ рублей.
➡ Стоимость детального алгоритма из любого варианта составляет $250$ рублей (заказывается опционально на ваше усмотрение, чтобы детально разобраться с решением лабораторной работы, например, не прибегая к консультации репетитора).
Также дополнительно вы можете заказать у нас:
- Построение аккуратной ГОСТовой блок-схемы. Ориентировочная стоимость $200$ рублей.
- Отчет о проделанной работе (иногда в вузах есть требование — предоставить отчет к лабораторной работе). Ориентировочная стоимость $150$ рублей.
Для оформления заказа пишите на почту: proglabs@mail.ru.
Время нашего ответа обычно составляет не более $10$ минут.
Добавить комментарий