Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмизация и программирование .doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.35 Mб
Скачать

5.2. Строки

Строка является упорядоченной коллекцией символов Юникода, используемой для представления текста. Для работы со строками в CLR-проекте используется класс String.

String ^str = “Работа со строками в С++”; // здесь объявлена ссылочная

// переменная str и ей присвоен текст

Символ ‘^’ – это признак ссылки.

Пример 5_4. Использование строк.

#include "stdafx.h"

using namespace System;

int main()

{

String ^st1="ИЗУЧАЕМ ";

String ^st2, ^st3;

st2 = "работу со строками в C++";

st3 = st1 + st2;

Console::WriteLine("{0}", st3);

st2 = st3;

Console::WriteLine("В слове {0} 3-я буква \'{1}\'", st1, st1[2]);

Console::ReadLine();

return 0;

}

Результат работы со строками:

ИЗУЧАЕМ работу со строка в C++

В слове ИЗУЧАЕМ 3-я буква 'У'

Функции работы со строками

Compare(String ^s1, String ^s2); - сравнивает s1 и s2 и возвращает целое число, которое показывает их относительное положение в порядке сортировки:

меньше нуля - значение параметра s1 меньше значения параметра s2.

0 - значения параметров s1 и s2 равны.

больше нуля - значение strA больше значения strB.

Пример 5_5. Сравнение строк

#include "stdafx.h"

using namespace System;

int main()

{

String ^s1="ABC", ^s2="ADC";

int k;

k=String::Compare(s1,s2);

Console::WriteLine("k="+k);

Console::ReadLine();

return 0;

}

Результат работы со строками:

k=-1

IndexOf(String ^s1, int); - Возвращает индекс с отсчетом от нуля первого вхождения значения указанной строки s1 в данном экземпляре. Поиск начинается с указанной позиции знака (если позиция не указана, то отсчет начинается с нуля).

LastIndexOf(String ^s1, int); - Возвращает индекс с отсчетом от нуля последнего вхождения значения указанной строки s1 в данном экземпляре. Поиск начинается с указанной позиции знака (если позиция не указана, то отсчет начинается с нуля).

Пример 5_6. Поиск подстроки в строке.

#include "stdafx.h"

using namespace System;

int main()

{

String ^s1="Программирование";

int first, last, x;

first=s1->String::IndexOf("р");

last=s1->String::LastIndexOf("р");

Console::WriteLine("Определение позиций буквы \'р\'в слове " +

"\"программирование\" ");

Console::WriteLine("Позия первой буквы \'р\' = " + first);

Console::WriteLine("Позия последней буквы \'р\' = " + last);

x=s1->String::IndexOf("р",(first+1));

Console::WriteLine("Позиция 2-й буквы \'р' = " + x);

Console::ReadLine();

return 0;

}

Результат работы со строками:

Определение позиции буквы 'р' в слове "программирование"

Позиция первой буквы 'р' = 1

Позиция последней буквы 'р'= 9

Позиция 2-й буквы 'р' = 4

Тестовые задания

ЗАДАНИЕ 1

Определите результат работы программы

int main()

{

int x[] = { 1, 2 , -100, 200, 4};

int sum;

sum = x[1] + x[2] + x[3];

Console::WriteLine("sum={0}", sum);

return 0;

}

Варианты ответов

1. sum=101

2. sum=-97

3. sum=302

4. sum=102

ЗАДАНИЕ 2

Определите результат работы программы

int main()

{

int m[] = {1, 20, 30, 40, 50 };

int i, sum = 0;

for (i = 1; i< 4; i += 2)

sum += m[i];

Console::WriteLine("sum={0}", sum);

return 0;

}

Варианты ответов

1. sum=90

2. sum=60

3. sum=81

4. sum=141

ЗАДАНИЕ 3

int main()

{

int d[] = { 10, 20, 1, 2, 3, 4 };

int i, sum = 0;

for (i = 1; i< 4; i++)

sum += d[i];

Console::WriteLine("sum={0}", sum);

return 0;

}

Варианты ответов

1. sum=31

2. sum=21

3. sum=30

4. sum=23

ЗАДАНИЕ 4

Определите результат работы программы

int main()

{

int x[2][3] = { { 10, 4, 5 }, { 100, 1, 20 } };

int sum = 0;

sum += x[1][0] + x[1][1];

Console::WriteLine("sum={0}", sum);

return 0;

}

Варианты ответов

1. sum=101

2. sum=104

3. sum=5

4. sum=110