Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie(1 семестр).docx
Скачиваний:
31
Добавлен:
15.05.2015
Размер:
163.75 Кб
Скачать
  1. Обращение к элементам динамического массива

  • Обращение к элементам динамического массива происходит так же, как и к элементам обычного массива, a[i] либо *(a+i)

  • Освобождение памяти из под динамических массивов

    • Если динамически массив в какой то момент времени перестал быть нужным, необходимо освободить память оператором delete []a; размерность массива при этом не указывается. [] обязательны, их отсутствие может привести к неопределённому поведению программы. Если используется ф-я malloc, то используется оператор free(a); Таким образом время жизни динамического массива-время с момента выделения памяти до момента её освобождения.

  • Форматированный ввод-вывод, функции printf и scanf

    • printf(“управляющаая строка”, аргумент1, аргумент2, … );

    • Управляющая строка содержит объекты 3 типов: Обычные символы, спецификации преобразования и управляющие символьные константы.

    • Обычные символы выводятся обычно

    • Каждая спецификация преобразования начинается с символа % и заканчивается некоторыми символами задающими преобразование, между % и символами, указывающими преобразование может встречаться символ «-», который указывает на выравнивание влево.

    • В спецификациях могут встречаться: строка цифр, задающая минимальный размер поля, точка отделяющая размер поля от последующей строки цифр и строка цифр, задающая максимальное число цифр, которое нужно вывести справа от десятичной точки в значениях типа float и double

    • Спецификации преобразования

      d

      Десятичное целое

      o

      Восьмеричное целое

      x

      Шестнадцатеричное целое

      c

      Символ

      s

      Строка символов

      f

      Вещественное десятичное с плав. точкой

      g(%e, %f)

      Исключает вывод незначащих нулей

      u

      Соответсвует аргументу типа unsigned

      p

      Значение аргумента является указателем

      l

      Тип аргумента -long

    • Если после % записан не символ преобразования, то он выводится на экран, аргументами может быть переменные, константы, вызовы функций

    • Управляющие символы

      \n

      Новая строка

      \b

      На символ назад (backspace)

      \r

      Возврат каретки в начало текущей строки

      \l

      Подача звукового сигнала

      \t

      Горизонтальная табуляция

      \v

      Вертикальная табуляция

    • scanf (“Управляющая строка”, аргумент1, аргумент2, …);

    • Аргументы должны быть указателями на соответствующие значения &, не указывается только при вводе массива(при вводе массива указывается только имя)

    • Управляющая строка содержит спецификации преобразования и устанавливает количество аргументов, могут быть пробелы, \t и переходы на новую строку. Все символы игнорируются

    • Могут включаться спецификации преобразования с % возможно *-запрещение присваивания, обычные символы, кроме «%», считается, что эти символы не должны совпадать с символами во входном потоке.

    • В ф-ии scanf допускаются многие из символов преобразования d,o,x,u,c,s,f,p, перед символами d, o, x, f может стоять символ l

    • Функции стандартного ввода-вывод содержатся в библиотеке <stdio.h>

  • Функции ввода-вывода отдельного символа

    • Функция putchar(a); -вывод отдельного символа, если a-переменная типа char

    • Функция getchar(a);-ввод отдельного символа, a типа char

    • Содержатся в библиотеке <stdio.h>

  • Понятие строки символов, её представление. Функции ввода-вывода строки.

    • Строка символов-последовательность символов, обрабатываемых, как единый модуль. Может включать в себя буквы, цифры, стандартные символы. Строковые константы записываются в двойных кавычках. Строка в С++-массив символов, оканчивающаяся нулевым символом “\o”

    • Строка доступна через указатель на первый символ в строке. Значением строки является адрес её первого элемента.

    • Функция puts(“строка”); либо puts(a); где а-строка, функция вывода строки

    • Функция gets(a); где а- строка, функция ввода строки. В gets можно использовать пробелы, если scanf заканчивает строку при появлении пробела, то gets делает это только при нажатии клавиши ввод.

  • Объявление и инициализация строки

    • Строка может быть объявлена либо как массив символов, либо как переменная типа char* -указатель на символьное значение.

    char color[]=”red”;

    char *colortr=”blue”;

    • 1 способ-более безопасный

    • Когда обявляется массив символов, содержащий строку, он доджен быть достаточно большим, чтобы хранить строку и нулевой символ.

    • С++ допускает хранение строк любой длины. Если строка больше символьного массива в котором она должна храниться, символы после конца массива будут применять данные в разделах памяти следующей за массивом

  • Потоковый ввод-вывод строк

    • Строку можно присвоить массиву используя cin>> -взятие из потока

  • Функции работы со строками из библиотеки string.h

    Функция

    Описание

    strcpy(S1, S2);

    Копирует строку S2 в массив символов S1

    strncpy(S1, S2, n); n-int

    Копирует n символов из строки S2 в строку S1, возвращает целое значение S2

    strcat(S1, S2);

    Добавляет строку S2 к строке S1, первый символ S2 записывается поверх нулевого символа S1, возвращает S1

    strncat(S1, S2, n); n-int

    Добавляет n символов из строки S2 в строку S1 по принципу strcat

    strcmp(S1, S2);

    Сравнивает строки S1 и S2 функция возвращает 0, если S1=S2 , <0 если S1<S2 и >0 если S1>S2

    strncmp(S1, S2, n); n-int

    Сравнивает до n символов строки S1 со строкой S2 по принципу strcmp

    strlen(S);

    Определяет длину строки S возвращает кол-во символов предшествующих “\o”

    • Для строк не определена операция присваивания

    • чтобы присвоить строке S1 строку S2 используются ф-и strcpy или strncpy

    • Программист должен сам заботиться о том, чтобы в строке-приемнике хватило места для строки-источника.

    • Выход за границы строки и отсутствие «\о» является наиболее распространенной ошибкой

  • Пример программы работы со строками

    • Дохера