В приводимой ниже программе используются все четыре рассмотренные выше функции обработки строк.
Задание 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!