Передача одномерных массивов как параметров функции
При использовании массива как параметра функции, в функцию передается указатель на его первый элемент, т. е. массив всегда передается по адресу. При этом теряется информация о количестве элементов в массиве, поэтому размерность массива следует передавать как отдельный параметр. void print(int a[100],int n) //вывод массива на печать { for(int i=0;i<n;i++) cout<<a[i]<<" "; cout<<"\n"; } Так как в функцию передается указатель на начало массива (передача по адресу), то массив может быть изменен за счет операторов тела функции. Передача строк в качестве параметров функций Строка в Си++ - это массив символов, заканчивающийся нуль-символом – ‘\0’ (нуль-терминатором). По положению нуль-терминатора определяется фактическая длина строки. Количество элементов в таком массиве на 1 больше, чем изображение строки. Для работы со строками существуют специальные библиотечные функции, которые содержатся в заголовочном файле string.h. Строки при передаче в функции могут передаваться как одномерные массивы типа char или как указатели типа char*. В отличие от обычных массивов в функции не указывается длина строки, т. к. в конце строки есть признак конца строки /0. //Функция поиска заданного символа в строке int find(char *s,char c) { for (int I=0;I<strlen(s);I++) if(s[I]==c) return I; return –1 }
Передача многомерных массивов в функцию Многомерный массив – это массив, элементами которого служат массивы. Например, массив int a[4][5] – это массив из указателей int*, которые содержат имена одноименных массивов из 5 целых элементов:
Рис. Выделение памяти под массив, элементами которого являются массивы. При передаче многомерных массивов в функцию все размерности должны передаваться в качестве параметров. const int N=4;//глобальная переменная void transp(int a[][N],int n)// транспонирование матрицы { int r; for(int I=0;I<n;I++) for(int j=0;j<n;j++) if(I<j) { r[a[I][j]; a[I][j]=a[j][I]; a[j][I]=r; } } Строки Строка в C++ – это массив символов, заканчивающийся нуль-символом – ’\0’ (нуль-терминатором). По положению нуль-терминатора определяется фактическая длина строки. Количество элементов в таком массиве на 1 больше, чем изображение строки.
Рис. 4. Представление строки и символа
Присвоить значение строке с помощью оператора присваивания нельзя. Поместить строку в массив можно либо при вводе, либо с помощью инициализации. char s1[10]="string1";//инициализация char s2[]="string2";//инициализация char s3[10]; cin>>s3;//ввод //выделение памяти под динамическую строку char *s4=new char[strlen(s3)+1]; strcpy(s4,s3);//копирование строки s3 в строку s4 Для работы со строками существуют специальные библиотечные функции, которые содержатся в заголовочном файле string.h.
Строки при передаче в функции могут передаваться как одномерные массивы типа char или как указатели типа char*. В отличие от обычных массивов в функции не указывается длина строки, т. к. в конце строки есть признак конца строки \0.
Постановка задачи 1. Используя функции сформировать с помощью ДСЧ одномерный массив и вывести его на печать. 2. Выполнить обработку одномерного массива в соответствии с вариантом, используя функции, результат вывести на печать. 3. Используя функции сформировать с помощью ДСЧ двумерный массив и вывести его на печать. 4. Выполнить обработку двумерного массива в соответствии с вариантом, используя функции, результат вывести на печать. 5. Ввести с клавиатуры строку символов и обработать ее в соответствии со своим вариантом, используя функции. Варианты
Методические указания 1. Формирование, печать и обработку массивов и строк оформить в виде функции. Массивы передавать как параметры функций. 2. Реализовать массивы как псевдодинамические, их размерности передавать как параметры функций. 3. Формирование массивов выполнить с использованием ДСЧ. В массивы записывать и положительные, и отрицательные числа. 4. Ввод/вывод строк организовать с помощью функций: · char* gets(char*s) · int puts(char *s) 5. Для обработки строк использовать стандартные функции из библиотечного файла <string.h> 6. Сортировку массивов организовать с помощью одного из простых методов сортировки, рассмотренных в лабораторной работе №3. 7. Функция main() должна содержать только описание массивов/строк и вызовы функций для формирования, печати и обработки массивов/строк. Содержание отчета 1. Постановка задачи (общая и для конкретного варианта). 2. Определения функций, используемых для формирования, печати и обработки массивов/строк (для каждой задачи). 3. Определение функции main(). 4. Результаты тестов.
Популярное: Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (1158)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |