лаба. Лабораторно-практическая работа. Контрольные вопросы Описание символьных данных и строк на языке Си
Скачать 10.29 Kb.
|
Вариант 7: Создать текстовый файл с произвольным числом строк. Найти слово, в котором максимальное количество буквы 'а' . Вывести сколько раз буква 'а' встречается в этом слове.(само слово выводить не надо) Алгоритм решения задачи: 1. Инициализация двух переменных для циклов, переменной для строчки (считанной из файла) и слова (считанного из строчки). Инициализация maxCount (максимального количества буквы “а”) - по умолчанию (0). 2. Открытие файла с помощью ifstream. 4. Считываем строки с помощью построчного метода getline в цикле while. 5. Считываем слова в строках в цикле while и stringstream words(s) . 6. Обнуляем значения для i и count. Для каждого слова в цикле while (слово[i]) проверяем наличие букв ‘a’. В случае наличия увеличиваем count + 1 для каждой буквы. 6. Сравниваем maxCount и count, в случае, если количество букв a в слове превышает maxCount - записываем значение в переменную maxCount. Выходим из цикла для слова. 7. Повторяем для каждого слова, строки, выходим из циклов. 8. Закрываем ifstream. 9. Печатаем maxCount. #include #include #include #include using namespace std; int main() { int i, count; string s, word; ifstream file ("/home/az/CLionProjects/untitled/test.txt"); int maxCount = 0; while(getline(file, s)) { stringstream words(s); while (words >> word) { i = count = 0; while (word[i]) { if (word[i] == 'a') count++; i++; } if (count > maxCount) maxCount = count; } } file.close(); cout << maxCount; } Контрольные вопросы Описание символьных данных и строк на языке Си. Символьный тип данных (char) - предназначен для хранения символа и занимает 1 байт памяти. Каждому символу соответствует ASCII код. Char символом являются цифры в формате символов от 0 до 9, заглавные латинские буквы от A до Z и строчные латинские буквы от a до z . Строка в Cи — это массив символов, который по-хорошему всегда должен заканчиваться '\0' — символом конца строки. Объявляется в так: char str[n] = { 0 }; где n- размер массива символов. 0 опционален - это “зануление” строки. В Си ++ используется тип string, например string S = "Hello"; Кроме того, можно использовать различные конструкторы строк Встроенные функции языка Си, используемые для обработки строк. memcpy -копирует участок памяти, универсальная функция, работает и для строк. strchat - добавляет в конец первой строки вторую и возвращает указатель на первую строку. strcmp - сравнение строк (а также strcoll). atoi - конверсия число - строка и строка - число. А также другие функции. Назначение функции fgets(). int fgets (char *str, int n, FILE *stream); str - указатель на массив для помещения строки n – допустимая длина считываемой строки. stream – указатель на поток данных. Функция fgets считывает из потока данных строку пока не встретится символ "новая строка" или не закончится файл или пока длина считываемой строки не превысит ограничение аргумента n (считывается не более чем n-1 символов). После последнего прочитанного символа в массив по *str заносится признак конца строки (нулевой символ). В случае успешного чтения строки, возвращается указатель на массив, в который помещены считанные данные (возвращается аргумент s). Если достигнут конец файла и несчитан не один символ или произошла ошибка, то возвращается NULL. Для того, чтобы отличить конец файла от ошибки используются функции feof и ferror. Назначение функции fgetc(). int fgetc( FILE * filestream ); filestream - Указатель на объект типа FILE, который идентифицирует поток, из которого будет считан символ. Функция fgetc() считывает очередной символ из потока stream и возвращает unsigned char преобразованный в int, или EOF при достижении конца файла или при возникновении ошибки. Назначение функции fscanf(). fscanf считывает информацию из потока, на который указывает stream, в остальном работает также, как и scanf. В общем плане, scanf функции предназначены для считывания информации в соответствии с форматом. int fscanf(FILE *stream, const char *format); format - указатель на последовательность инструкций, описывающих порядок обработки данных. stream - указатель на поток данных. |