Студопедия

Главная страница Случайная страница

Разделы сайта

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






  • Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом
  • Функции getchar() и putchar().






    Символьные строки и функции над символами.

    Функция getchar() не имеет аргументов и возвращает очередной символ из входного потока и передаёт его выполняемой программе.

    ch= getchar();

    Функция putchar(). Выводит на печать свой аргумент putchar(ch).

    Обе функции определены в файле cstdio.h

    Рассмотрим задачу: если символом является пробел, он выводится на печать, в противном случае печатается следующий за ним символ.

    #include< stdio.h>

    #define SPACE ‘ ‘

    void main()

    {

    char ch;

    ch=getchar(); //читать символ

    while(ch! =’\n’) // пока не будет введён символ конца строки ENTER

    { if(ch== SPACE) // оставить пробел

    putchar(ch); // символ остаётся неизменным

    else

    putchar(ch+1); //изменить другие символы

    ch=getchar(); // принять следующий символ

    }

    return;

    }

    Заменим цикл, приведённый выше на следующий

    while ((ch=getchar())! =’\n’)

    В этом выражении сочетаются два действия. Действиями являются присваивание значения переменной ch и сравнение этого значения с символом новой строки. Круглые скобки, охватывающие выражение ch=getchar() делают его левым операндом оператора! =. Компьютер вначале обращается к функции getchar(), а затем сравнивает ch! =’\n’.Нельзя опустить ни одну пару скобок т.к. операция! = имеет более высокий приоритет, чем =. Перепишем программу, учитывая только буквы, не трогая знаки пунктуации.

    #include< stdio>

    #include< cctype> // для функции isalpha()

    void main()

    {

    char ch;

    while(ch=getchar())! =’\n’)

    { if(isalpha(ch)) // если это буква

    putchar(ch+1); // изменить её

    else

    putchar(ch); //иначе печатать символ таким как есть

    }

    putchar(ch); //распечатать символ новой строки

    return 0;

    }

    Следующий пример подсчитывает символы, отличные от одинарных и двойных кавычек, которые содержатся во входном выражении.

    #include< iostream>

    #include< cstdio>

    #define PERIOD ‘.’

    using namespace std;

    int main()

    {

    char ch;

    int charcount=0;

    while(ch=getchar())! =PERIOD)

    { if(ch! =’ ” ’& & ch! =’\’ ‘)

    charcount++;

    }

    cout< < charcount;

    return 0;

    }

    Следующий пример подсчитывает во входном выражении количество символов, слов и строк. Чтобы определить входит символ в состав слова, можно установить флаг (inword) в 1, когда считывается первый символ слова. Далее, пока inword остаётся равным 1, последующие символы, отличные от служебных, не означают начала следующего слова. При появлении служебного слова флаг устанавливается в 0 и программа будет готова к выявлению следующего слова.

    /*производит подсчёт символов, строк, слов.*/

    #include< stdio.h>

    #include< iostream.h>

    #include< ctype.h> //для функции isspace()

    //#include< stdbool.h> // для bool, true, false

    #define STOP '|'

    void main()

    {char c; //считывание символа

    char prev; // считывание предыдущего символа

    long n_chars=0L; //число символов

    int n_lines=0; // число строк

    int n_words=0; // число слов

    int p_lines=0; //кол-во частичных строк

    int inword=0; // ==true, если с находится в слове

    cout< < " введите анализируемый текст или | для конца ввода" < < endl;

    prev='\n'; // используется для идентификации завершённых строк

    while((c=getchar())! =STOP)

    {n_chars++; //учёт слов

    if(c=='\n')

    n_lines++; //учёт кол-ва строк

    if(! isspace(c) & &! inword)

    {inword=1; //начало следующего слова

    n_words++; //учёт слов

    }

    if(isspace(c) & & inword)

    inword=0; //достигнут конец слова

    prev=c;

    }

    if(prev! ='\n')

    p_lines=1;

    cout< < n_chars< < " " < < n_words< < " " < < n_lines< < endl;

    return;

    }

     

     

    Функции символьного ввода/ вывода:

    Функция get() вводит один символ из стандартного устройства (по умолчанию клавиатура).Функция put() выводит одиночные символы на экран. Формат:

    device.get(char_val);

    device.put(char_val);

    Рассмотрим пример:

    # include < iostream.h>

    void main()

    {char in_char;

    char first, last;

    cout< < ”Инициалы имени”< < endl;

    cin.get(in_char); //ожидание буквы

    first=in_char;

    cin_get(in_char); //игнорирует символ новой строки при нажатии на клавишу ENTER/

    cout< < ”Инициалы фамилии”< < endl;

    cin.get(in_char); //ожидание буквы

    last=in_char;

    cin_get(in_char); //игнорирует символ новой строки

    cout< < ”Ваши инициалы”< < endl;

    cout.put(first);

    cout.put(last);

    return ();

    }

    Функции getch() и putch() считывают символ с клавиатуры и выводит его на экран, однако, при их использовании ввод и вывод не могут быть перенаправлены даже через операционную систему.

    int_var=getch(); putch(int_var);

    Функция getch() при получении вводимого символа не выводит его на экран. Обе функции описаны в заголовочном файле conio.h.






    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.