Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория к зачету1.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
107.01 Кб
Скачать

Передача массива функции в качестве параметра

В предыдущих примерах функции передавались значения простых переменных типа int или double. Но возможны ситуации, когда в качестве аргументов необходимо использовать массивы.

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

// Программа 9.1

// Написать функцию, которая находит в массиве элемент, значение которого

// равно х. Функция возвращает индекс найденного элемента или 1, если

// такого элемента в массиве нет

#include <iostream>

using namespace std;

int Search(double A[],int n, double x);

int main()

{

int n; // Объявление размера массива

double x;

cout << "Vvesti x: " << "\n";

cin >> x;

cout << "Vvesti chislo elementov massiva: " << "\n";

cin >> n; // Ввод размера массива

double A[n]; // Объявление массива

cout << "Vvedite cherez probel " << n << " veshestvennih chisel: " << "\n";

for (int i=0; i<n; ++i)

{

cin>>A[i]; // Ввод массива с клавиатуры

}

cout<<Search(A,n,x)<<endl; // Передача массива функции в качестве параметра

system("pause");

return 0;

}

int Search(double A[], int n, double x)

{

int i;

for (i=0; i<n; ++i)

{

if (A[i]==x) return i;

}

return 1;

}

Строки

Текстовую информацию можно оформлять в виде массива символьных данных или в виде строковой переменной. И в том, и в другом случае с текстовой информацией можно работать как с массивом символов.

1) Массив символов типа char

// Программа 11.0b

// Использование gets-инструкции для считывания строки

// с клавиатуры

#include <iostream>

using namespace std;

int main() {

char S[80]; // Массив символьных данных

cout << "Input your string: " << endl;

gets(S); // Считывается весь массив – строка с пробелами

// (Если вводить строку с помощью cin>>S; то считывается только

// первое слово до первого пробела.)

cout << S << endl;

cout << strlen(S) << endl; // Определение длины строки

cout << "\n";

system ("pause");

return 0;

}

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

// Программа 11.1aa

// Даны две строки. Определить, совпадают ли они, сравнив

// их посимвольно.

#include <iostream>

using namespace std;

bool Compare(char S1[80], char S2[80]);

int main()

{

char S1[80] = "ABCDEFGJ";

cout << "S1 = " << S1 << "\n";

char S2[80] = "ABCDEMN";

cout << "S2 = " << S2 << "\n";

cout << Compare(S1, S2) << "\n";

system("pause");

return 0;

}

bool Compare(char S1[80], char S2[80])

{

int i,n;

int len1 = strlen(S1);

cout << "len1 = " << len1 << "\n";

int len2 = strlen(S2);

cout << "len2 = " << len2 << "\n";

if(len1 != len2) return false;

else n = len1;

for (i=0; i<n; i++)

{

if (S1[i]!=S2[i])

{

return false;

}

}

return true;

}