- •ОбрабоТка строк Цель работы
- •Порядок написания программы
- •Примеры написания программ
- •1 Вариант решения – обращение к элементу массива идет через имя элемента массива, память выделяется статически, строка вводится без пробелов внутри.
- •2 Вариант решения – обращение к элементу массива идет через адрес элемента массива, память выделяется динамически, строка вводится с пробелами внутри.
- •Контрольные вопросы и задания
- •Задание
- •ОбрабоТка одномерных числовых массивов
- •2 Вариант решения – обращение к элементу массива идет через адрес элемента массива, память выделяется динамически, заполняется массив с клавиатуры.
- •Контрольные вопросы и задания
- •Задание
- •ОбрабоТка двумерных числовых массивов
- •2 Вариант решения – обращение к элементу массива идет через адрес элемента массива, память выделяется динамически, заполняется массив с клавиатуры.
- •Контрольные вопросы и задания
- •Задание
- •Функции с одним результатом Цель работы
- •Порядок написания программы
- •Примеры написания программ
- •Контрольные вопросы и задания
- •Задание
- •Функции с несколькими результатами Цель работы
- •Порядок написания программы
- •Примеры написания программ
- •Контрольные вопросы и задания
- •Задание
- •Функции и строки Цель работы
- •Порядок написания программы
- •Примеры написания программ
- •Контрольные вопросы и задания
- •Задание
- •Функции и одномерные числовые массивы Цель работы
- •Порядок написания программы
- •Примеры написания программ
- •Контрольные вопросы и задания
- •Задание
- •Функции и матрицы Цель работы
- •Порядок написания программы
- •Примеры написания программ
- •Контрольные вопросы и задания
- •Задание
- •Шаблоны функций Цель работы
- •Порядок написания программы
- •Примеры написания программ
- •Контрольные вопросы и задания
- •Задание
Порядок написания программы
1. Внимательно прочитать условие задачи и формулировку функции.
2. Провести анализ характеристик функции:
Дать название функции;
Выделить список исходных данных функции, определить их типы;
Определить тип результата функции, передаваемого с помощью оператора return.
Определить тип результатов функции, передаваемых с помощью параметров-ссылок (если они есть).
3. Написать текст функции пользователя.
4. Написать прототип функции.
5. Написать функцию mainс вызовом функции пользователя.
6. Создать проект из файлов с расширением cpp(для функции пользователя иmain), и один заголовочный файл с расширениемh. Выполнить проект.
Примечание. Вызов функцииRusперед строками-константами с русским текстом осуществляйте самостоятельно.
Примеры написания программ
Задача. Написать функцию, которая возвращает номер первого символа символа строки, совпавшего с указанным символом. Если символа в строке нет, возвратить 0.
Анализ решения задачи. Нельзя путать два понятия –индекссимвола строки иномерсимвола строки. Понятия схожи, но номер начинается с 1, а индекс с 0, с помощью индекса организуется перебор символов в строке. Зная индексi, легко определить номер –i+1.
Для определения характеристик функции ответим на три вопроса:
Имя функции – SimvolToStr
Список параметров функции (исходные данные). Функции необходимо передать строку – char*p, и символ –charsimv;
Тип функции (тип возвращаемого результата). Функция определяет номер первого появления символа в строке – целое значение – тип int.
Программа будет строиться в виде проекта.
Текст функции пользователя будет выглядеть так:
//имя и тело функции SimvolToStr
int SimvolToStr(char*p, char simv)
{
int i; //переменные для построения алгоритма функции
//организуем перебор символов строки для их обработки
for(i=0; *(p+i)!=0; i++)
if(*(p+i)== simv) //если символ строки с инд i совпал с simv
return i+1; //прекращаем выполнение функции и передаем
//номер символа
//если мы оказались в этой точке программы, то символ не найден
return 0;
}
Текст заголовочного файла будет выглядеть так:
// содержимое файла SimvolToStr.h
#ifndef SIMVOLTOSTR_H
#define SIMVOLTOSTR _H
int SimvolToStr(char*p, char simv); //прототип функции
#endif
Текст функции main будет выглядеть так:
#include<iostream> //подключение системных средств для
using namespace std; //возможности использовать потоки ввода-вывода
#include " SimvolToStr.h"
#include "Rus.h" //прототип функции русификации
int main(void)
{
char str[40], simvol; //объявили данные
int n;
// ввод исходных данных
cout<<“\nВведите строку”;
cin.getline(str,40);
cout<<“Введите символ”;
cin>>simvol;
n= SimvolToStr(str, simvol); //вызов функции и передача ей //исходных данных
if(n!=0) //если символ в строке найден
cout<<“Символ “<<n<<” по счету\n”; //вывод номера символа
else
cout<<“Символ в строке не найден”;
return 0;
}
Контрольные вопросы и задания
1. Что такое строка?
2. Какой параметр необходимо объявить в функции для передачи ей строки из mainв качестве исходного данного?
3. Какой параметр необходимо объявить в функции для передачи ей строки из mainв качестве результата функции?
4. Как внутри функции пользователя создать строку-результат?
5. Если внутри функции пользователя создается строка-результат, как ее передать в main?
6. Как в функции пользователя обработать строку?
7. Как вызывается функция пользователя с передачей ей статической строки?
8. Как вызывается функция пользователя с передачей ей динамической строки?
9. Для наилучшего освоения темы выполните варианты 4, 6, 13.