Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Указания по выполнению заданий c

Указания по выполнению заданий c (Задания для самостоятельного выполнения)

PDF-файл Указания по выполнению заданий c (Задания для самостоятельного выполнения) Информатика (8415): Другое - 2 семестрУказания по выполнению заданий c (Задания для самостоятельного выполнения) - PDF (8415) - СтудИзба2017-06-17СтудИзба

Описание файла

Файл "Указания по выполнению заданий c" внутри архива находится в папке "Задания для самостоятельного выполнения". PDF-файл из архива "Задания для самостоятельного выполнения", который расположен в категории "". Всё это находится в предмете "информатика" из 2 семестр, которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "информатика" в общих файлах.

Просмотр PDF-файла онлайн

Текст из PDF

Строки и файлы В С++ есть два вида строк: С-строкн н класс стандартной библиотеки С++ зСг1пд. С-строка представляет собой массив символов, завершающийся символом с кодом 0'. Класс зтг1 п0 более безопасен в использовании, чем С-строки, но и более ресурсоемок. Для грамотного использования этого класса требуется знание объектно-ориентированного программирования, поэтому мы рассмотрим его во второй части практикума, а на этом семинаре ограничимся рассмотрением С-строк.

Описание строк Память подстроки, как и под другие массивы, может выделяться как компилятором, так и непосредственно в программе. Длина динамической строки может задаваться выражением, длина не-динамической строки должна быть толыео константным выражением. Чаще всего длина строки задается частным случаем константного выражения — константой. Удобно задавать длину с помощью именованной константы, поскольку такой вариант, во-первых, лучше читается, а во-вторых, прн возможном изменении длины строки потребуется изменить программу только в одном месте: сопзС тпС 1еп зтг = 80; снаг зСгНеп зСг3: При задании длины необходимо учитывать завершающий нуль-символ.

Например, в строке, приведенной выше, можно хранить не 80 символов, а только 79. Строки можно при описании инициализировать строковыми константами, при этом нуль-символ в позиции, следующей за последним заданным символом, формируется автоматически: сваг а[1003 - "Нетег СгоиЫе Сгои01е": Этот вид отрок, как вы догадались, пришел в Сее из языка С. Если строка при определении инициализируется, ее размерность можно опускать (компилятор сам выделит память, достаточную для размещения всех символов строки и завершаюшего нуля): снаг аП - ейечег СгоцЫе тгоцЫе"; // 22 синвола Для разметцения строки в динамической памяти надо описать указатель на сна г, а затем выделить память с помощью псы или шЫ1ос (первый способ предпочтительнее): слаг *р = псы спаг [гп]: спас *ц = (сваг *)ша11ос( гв * 5тдео[(спаг)); Естественно, что в этом случае длина строки может быть переменной и задаваться на этапе выполнения программы.

Динамические строки, как и другие динамические массивы, нельзя инициализировать при создании. Оператор спаг *5[и =, "1«ечег СгоцЫе Сгоц01е" создает не строковую переменную, а указатель на строковую константу, изменить которую невозможно. Ввод-вывод строк Для ввода-вывода строк используются как уже известные нам объекты сто и сонг, так и функции, унаследованные из библиотеки С.

Рассмотрим сначала первый способ: (гтпс1цг)е «овсгеаш.и> тпс шато()( ссп51 тпт п = 80; спаг 5[п]; стп » 5; соцС сс 5 сс епг)1; гсгцги 0; Как видите, строка вводится точно так же, как и переменные известных нам типов. Запустите программу и введите строку, состоящую из одного слова. Запустите программу повторно и введитс строку из нескольких слов. Во втором случае выводится только первое слово. Это связано с тем, что ввод выполняется до первого пробельного символа (то есть пробела, знака табуляции или символа перевода строки 'г,гт') г. Можно ввести слова входной строки в отдельные строковые переменные; т)тпс1цсе «1о51геаш.п> 1пг мати()( соп51 тп[ и = 80: спаг 5[п], С[п], г[п]: стп» 5» 1» г; соцс «5 «епг(1 «1 «епЫ «г «епг)1; гедцгп 0: Если требуется ввести строку, состоящую из нескольких слов, в одну строковую переменную, используются методы дет1 тле или дег класса т 51геаш, объектом кото- рого является ст и.

Во второй части практикума мы изучим, что такое методы клас- са', а пока можно пользоваться ими как волшебным заклинанием, не вдумываясь в смысл. Единственное, что нам пока нужно анатьь это синтаксис вызова метода— после имени объекта г:тавится точка, а затем пишется имя метода; 1)тпс1цг)е стозвгеаг.й> тпт шдтп()( соп51 тпг п = 80; спаг 5[п]; стп.де11тие(5, и); соцт « 5 « епЫ . с)п.дев(5, и); соцС « 5 « епФ; гетцгп О; ) Метод де111пе считывает из входного потока п - 1 символов или менее (если сим- вол перевода строки встретится раньше) и записывает их в строковую перемен- ную 5.

символ перевода строки' также считывается (удаляется) из входного потока, но не записывается в строковую переменную, вместо него размешается заверша- ющий О. Если в строке исходных данных более п — 1 символов, следующий ввод будет выполняться из той же строки, начиная с первого несчитанного символа. Метод дед работает аналогично, но оставляет в потоке символ перевода строки. В строковую переменную добавляется завершающий О; Никогда не обращайтесь к разновидности метода дес с двумя аргументами два раза подряд, нс удалив тп из входного потока.

Например: сти.де1(5, п); // 1 - считывание строки соцС « 5 « еп01: // 2 - вывод строки стп.де1(5. п); // 3 - считывание строки соцс « 5 « епг)1; // 4 - вывод строки стп.дег(5. п): // 5 - считывание строки соис 5 « еп01; // б — вывод строки соцс « "Конец — делу венец" епЫ . О 7 11ри выполнении этого фрагмента вы увидите на экране первую строку, выведен- ную оператором 2, а затем завершающее сообщение, выведенное оператором 7.

Какие бы прекрасные строки вы ни ввели с клавиатуры в надежде, что они будут прочитаны операторами 3 и 5, метод де1 в данном случае «уткнется» в символ 1П. оставленный во входном потоке от первого вызова этого метода (оператор 1). В ре- зультате будут считаны и, соответственно, выведены на экран пустые строки (стро- ки, содержащие О символов). А символ тп так и останется «торчать» во входном потоке. Возможное решение этой проблемы — удалить символ тп из входного по- тока путем вызова метода дед без параметров, то есть после операторов 1 и 3 нужно вставить вызов ст п. дед (), Если вп вводимой строк«больше символов, чем может вместить выделенная дли сс хранении об- ласть, поведение программы нс определено. Скорее всего, она аавсршнтсл аварийно. Синонимом термина «метод» является «фуннннв-члсн клааса». Символ перевода строки ' Гп' появляется во входном потоке, когда вы нажимаете клавишу 5 птег. Однако есть и более простое решение — использовать в таких случаях метод де511пе, который после прочтентия строки не оставляет во входном потоке символ 1П.

Если в программе требуется ввести несколько строк, метод де[1 т ие удобно йспользовать в заголовке цикла, например: (ттпс1оде <1оэтгеаэ.й> 1пт пати()( соп55 1пс п - 80: спаг 5[п]; ттпт!е (С1п.дес11ие(5, и)) ( сонг « 5 « епб1; /т' обработка строки геспгп 0: ) Рассмотрим теперь способы ввода-вывода строк, перекочевавшие в С++ из языка С.

Во-первых, можно использовать для ввода строки известную нам функцию эсапт, а для вывода — ргт ПСГ, задав спецификацию формата 55: ()тпс1обе <550)о.)т> '1пг яа1п()( соп55 1ПС п 10: спаг 5[и]; 5сапт('55", 5); рг1пст("55'. 5); гегогп 0; Имя строки, как и любого массива, является указателем на его начало, поэтому использовавшаяся в предыдущих примерах применения функции 5сапт операция взятия адреса (а ) опущена. Ввод будет выполняться так же, как и для классов ввода-вывода — до первого пробельного символа.

Чтобы ввести строку, состоящую из нескольких слов, используется спецификация у«с (символы) с указанием максимального количества вводимых символов, например: 5сапт("Ж10с". 5); Количество символов может быть только целой константой. При выводе можно задать перед спецификацией хэ количество позиций, отводимых под строку: рГ) пСП "$155" . 5): Строка при этом выравнивается по правому краю отведенного поля. Если заданное количество позиций недостаточно для размещения строки, оно игнорируется, и строка выводится целиком.

Спецификации формата описаны в Учебнике на с. 387, а сами функции семейства рг1 пгт — на с. 411 и далее. Библиотека содержит также функции, специально предназначенные для ввода- вывода строк: де55 и рита. Предыдущий пример с использованием этих функций выглядит так: (т1пс1эбе <5501о.)т> 1ПС яа1П()( сопэс 1пг и 10; с)тдг 5[п]: дега(5); ро55(5): гетогп 0: Функция де55(5) читает символы с клавиатуры до появления символа новой строки и помещает их в строку 5 (сам символ новой строки в строку не включается, вместо него в строку заносится нуль-символ). Функция возвращает указатель на строку 5, а в случае возникновения ошибки или конца файла — йд[С Функция рос5(5) выводит строку 5 на стандартное устройство вывода, заменяя завершающий 0 символом новой строки.

Возвращает неотрицательное значение при успехе или ЕОЕ при ошибке. Функциями семейства ргт пгт удобнее пользоваться в том случае, если в одном операторе требуется ввести или вывести данные различных типов. Если же работа выполняется только со строками, проще применять специальные функции для ввода-вывода строк дет5 и ро55. Операции со строками Для строк не определена операция присваивания, поскольку строка является не основным типом данных, а массивом.

Присваивание выполняется с помощью функций стандартной библиотеки или посимвольно «вручную» (что менее предпочтительно, так как чревато ошибками). Например, чтобы присвоить строке р строку а, можно воспользоваться функциями 55 гору или 5сгпсру: с))аг а[100] = сдетег (Гоиб)е Сгооб)е"; с)таг *р - пеэ спаг [э]: 5ггсру(р, а): 55гпсру(р, а, 5СГ!еп(а) « 1): Для использования этих функций к программе следует подключить заголовочный файл <5ггтпд.

п>. Функция 5сгсру(р, а) копирует все символы строки, указанной вторым параметром (а ), включая завершающий О, в строку, указанную первым параметром (р). Функция 55гпсру(р. а, и) выполняет то же самое, но не более и символов, то есть числа символов, указанного третьим параметром. Если нуль-символ в исходной строке встретится раньше, копирование прекращается, а оставшиеся до п символы строки р заполняются нуль-символами. В противном случае (если п меныпе или равно длине строки а) завершающий нуль-символ в р не добавляется. Обе эти функции возвращают указатель на результирукяцую строку. Если области памяти, занимаемые строкой-назначением и строкой-источником, перекрываются, поведение программы не определено.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5173
Авторов
на СтудИзбе
436
Средний доход
с одного платного файла
Обучение Подробнее