В приводимой ниже программе используются все четыре рассмотренные выше функции обработки строк.



Задание 6-7

// Задание 6_7.cpp: определяет точку входа для консольного приложения.

// Демонстрация строковых функций

#include "stdafx.h"

#include <iostream>

#include <conio.h>

#include <cstdio>

#include <string>       // для работы строковых функций

using namespace std;

int main()

{

setlocale(LC_ALL, "Russian");

char s1[80], s2[80];

strcpy_s(s1, " C++");

strcpy_s(s2, " мощный язык.");

 

cout << "длины: " << strlen(s1);

cout << " " << strlen(s2) << "\n";

 

if (!strcmp(s1, s2))

       cout << "Строки равны \n ";

else cout << "не равны \n ";

 

strcat_s(s1, s2);

cout << s1 << "\n";

 

strcpy_s(s2, s1);

cout << s1 << " и " << s2 << "\n";

 

if (!strcmp(s1, s2))

       cout << " s1 s2 теперь одинаковы. \n";

return 0;

}

 

Использование завершающего нуля

Наличие в конце строк завершающего нуля часто помогает упростить различные операции. Так, приводимая ниже программа преобразует строчные буквы в прописные. В программе используется ещё одна библиотечная функция:

toupр er() – возвращает прописной эквивалент своего символьного аргумента (строчного). Обратное преобразование может быть выполнено с помощью функции: tolower(). Эти функции используют заголовок <cctype>.

Задание 6-8

// Задание 6_8.cpp: определяет точку входа для консольного приложения.

// Преобразование строчных букв в прописные

// Демонстрация строковых функций

#include "stdafx.h"

#include <iostream>

#include <conio.h>

#include <cctype>       // для функций преобразования символов

#include <string>

using namespace std;

int main()

{

setlocale(LC_ALL, "Russian");

char str[80];

int i;

strcpy_s(str, " Это тест");

for (i = 0; str[i]; i++)

       str[i] = toupper(str[i]);

cout << str << "\n";

return 0;

}

 

Инициализация массивов

В С++ предусмотрены средства инициализации массивов. Общая форма инициализации массива схожа с аналогичным действием для других переменных, как это приведено ниже:

тип имя_массива [размер] = {список значений};

Список значений - значения, разделённые запятыми и совместимые по типу с базовым типом массива. Первое значение помещается в первый элемент массива, второе – во второй и т.д., например, массив из десяти целочисленных элементов инициализируется числами от 1 до 10:

int dim[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

В результате компиляции этого предложения dim[0] = 1, а dim[9] = 10.

Символьные массивы, предназначенные для хранения строк, допускают упрощённую инициализацию в форме:

char имя-массива [размер] = “строка”;

Следующий программный фрагмент инициализирует str строкой “C++”

char str[4] = “C++”; или аналог предложение char str[4] = {“C”, “+”, “+”, “\0”}; 

Многомерные массивы инициализируются также как и одномерные, например следующий фрагмент инициализирует массив sqrs числами от 1 до 10 и их квадратами:

Можно добавить фигурные скобки вокруг инициализаторов каждого измерения. Это действие носит название субагрегатной группировки, например:

Обычная инициалиция

ИЛИ



Субагрегатная группировка
int sqrs [10][2] = { 1, 1, 2, 4, 3, 9, 4, 16, 5, 25, 6, 36, 7, 49, 8, 64, 9, 81, 10, 100 };   int sqrs [10][2] = { {1, 1}, {2, 4}, {3, 9}, {4, 16}, {5, 25}, {6, 36}, {7, 49}, {8, 64}, {9, 81}, {10, 100} };  

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

Программа использует двумерный массив для нахождения квадрата числа, введённого пользователем.

Задание 6-9

// 6_9 INI.cpp: главный файл проекта.

// Инициализация массива Поиск нужного значения

        #include "stdafx.h"

        #include <iostream>

        #include <conio.h>

        using namespace std;

  int main()

  {

        setlocale (LC_ALL,"Russian");    

        int i,j;

        int sqrs [10][2] = {

                             {1, 1},

                             {2, 4},

                             {3, 9},

                             {4, 16},

                             {5, 25},

                             {6, 36},

                             {7, 49},

                             {8, 64},

                             {9, 81},

                             {10, 100}

        };

        cout << "Введите число от 1 до 10: ";

        cin >> i;

        for (j = 0; j<10; j++)

               if (sqrs[j][0] == i) break;

        cout << "Квадрат " << i <<" равен " << sqrs [j][1];

        _getch();

  }


Дата добавления: 2019-07-15; просмотров: 212; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!