Главная страница
Навигация по странице:

  • Контрольные вопросы

  • лаба. Лабораторно-практическая работа. Контрольные вопросы Описание символьных данных и строк на языке Си


    Скачать 10.29 Kb.
    НазваниеКонтрольные вопросы Описание символьных данных и строк на языке Си
    Анкорлаба
    Дата02.12.2022
    Размер10.29 Kb.
    Формат файлаdocx
    Имя файлаЛабораторно-практическая работа.docx
    ТипКонтрольные вопросы
    #824495

    Вариант 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;

    }


    Контрольные вопросы


    1. Описание символьных данных и строк на языке Си.

    Символьный тип данных (char) - предназначен для хранения символа и занимает 1 байт памяти. Каждому символу соответствует ASCII код. Char символом являются цифры в формате символов от 0 до 9, заглавные латинские буквы от A до Z и строчные латинские буквы от a до z .

    Строка в Cи — это массив символов, который по-хорошему всегда должен заканчиваться '\0' — символом конца строки. Объявляется в так: char str[n] = { 0 }; где n- размер массива символов. 0 опционален - это “зануление” строки.
    В Си ++ используется тип string, например string S = "Hello"; Кроме того, можно использовать различные конструкторы строк

    1. Встроенные функции языка Си, используемые для обработки строк.

    memcpy -копирует участок памяти, универсальная функция, работает и для строк. strchat - добавляет в конец первой строки вторую и возвращает указатель на первую строку. strcmp - сравнение строк (а также strcoll). atoi - конверсия число - строка и строка - число. А также другие функции.

    1. Назначение функции fgets().

    int fgets (char *str, int n, FILE *stream);

    str - указатель на массив для помещения строки

    n – допустимая длина считываемой строки.

    stream – указатель на поток данных.
    Функция fgets считывает из потока данных строку пока не встретится символ "новая строка" или не закончится файл или пока длина считываемой строки не превысит ограничение аргумента n (считывается не более чем n-1 символов).

    После последнего прочитанного символа в массив по *str заносится признак конца строки (нулевой символ).

    В случае успешного чтения строки, возвращается указатель на массив, в который помещены считанные данные (возвращается аргумент s).

    Если достигнут конец файла и несчитан не один символ или произошла ошибка, то возвращается NULL. Для того, чтобы отличить конец файла от ошибки используются функции feof и ferror.

    1. Назначение функции fgetc().

    int fgetc( FILE * filestream );

    filestream - Указатель на объект типа FILE, который идентифицирует поток, из которого будет считан символ.

    Функция fgetc() считывает очередной символ из потока stream и возвращает unsigned char преобразованный в int, или EOF при достижении конца файла или при возникновении ошибки.

    1. Назначение функции fscanf().

    fscanf считывает информацию из потока, на который указывает stream, в остальном работает также, как и scanf. В общем плане, scanf функции предназначены для считывания информации в соответствии с форматом.

    int fscanf(FILE *stream, const char *format);

    format - указатель на последовательность инструкций, описывающих порядок обработки данных.
    stream - указатель на поток данных.


    написать администратору сайта