
- •Теория к зачету № 1
- •Функция main
- •Ввод-вывод
- •Цикл for
- •Циклы: while do-while
- •Функция
- •1) Объявление (прототип) функции
- •2) Вызов функции
- •3) Определение функции:
- •Локальные переменные
- •Глобальные переменные
- •Рекурсивные функции
- •Массивы
- •Передача массива функции в качестве параметра
- •1) Массив символов типа char
- •2) Строковая переменная типа string
Передача массива функции в качестве параметра
В предыдущих примерах функции передавались значения простых переменных типа 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;
}