Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материалы(С++).doc
Скачиваний:
6
Добавлен:
17.11.2019
Размер:
385.54 Кб
Скачать

“Sdjdkjdhkfsdjhvm,c,bnmsierhoerhsdklfhbnasmbf”; //правильно Пустая строка записывается “ ” и имеет тип const char[1]. Использование датчика случайных чисел для формирования массива

В С++ есть функция int rand() возвращающая псевдослучайное число из диапазона 0..RAND_MAX=32767, описание функции находится в файле <stdlib.h>.

В общем случае псевдослучайное n определяется по формуле:

n = a + rand ( ) % b

, где a – величина сдвига (равна первому числу из требуемого диапазона последовательности целых чисел), b – масштабирующий коэффициент (равен ширине требуемого диапазона).

Пример.

#include<iostream.h>

#include<stdlib.h>

void main()

{

int array[100];

int n;

cout<<"\nEnter the size of array:";

cin>>n;

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

{

array[ i ]=rand()%100-50;// диапазон значений от -50 до 50

cout<<array[ i ]<<"\n";

}

}

В этой программе используется перебор массива по одному элементу слева направо с шагом 1.

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

srand(time(NULL));

, где функция srand(), содержащаяся в файле stdlib.h, принимает в качестве аргумента текущее календарное время в секундах, это значение преобразуется в беззнаковое целое и используется как начальное значение в генераторе случайных чисел. Прототип функции находится в файле time.h.

#include<iostream.h>

#include<stdlib.h>

#include<time.h>

void main()

{

int array[100];

int n;

cout<<"\nEnter the size of array:";

cin>>n;

srand(time(NULL));

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

{

array[ i ]=-5+rand()%10; // диапазон значений от -5 до 5

cout<<array[ i ]<<"\n";

}

}

Многомерные массивы

Многомерные массивы описываются как массивы массивов. Например:

int d2[10] [20]; //массив из десяти массивов по 20 целых

Многомерные массивы могут быть инициализированы:

int ia [2][3] = {

{0,1,2},

(3,4,5}

};

int ib[2][3] = {0,1,2,3,4,5};

int ic[2] [3]= { {1}, {3} }; //инициализирует только первые элементы каждой //строки, остальные – 0

int id[2][3] = {1,2,3,4}; //два последних элемента второй строки – 0

При обращении к элементам многомерных массивов необходимо использовать индексацию для каждого измерения.

В программных кодах высокого уровня использования многомерных массивов надо избегать. Лучше пользоваться типом vector из стандартной библиотеки С++.

Структуры С+

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

Структура – это определяемый пользователем тип данных; объявление структуры служит для того, чтобы определить свойства создаваемого типа данных. После того как тип определен, можно создавать переменные этого типа.

В отличие от массива, все элементы которого однотипны, структура может содержать элементы различных типов, т.о., структура – набор элементов произвольных типов. Элементы структуры называются полями структуры и могут иметь любой тип, кроме типа этой же структуры.

В языке С++ структура является видом класса и обладает всеми его свойствами

Структуры определяются:

struct [имя типа]

{

тип_1 элемент_1;

тип_2 элемент_2;

} [список описателей];

Т.о. возможно следующее объявление структуры:

#include <iostream.h>

void main()

{

struct address

{

char name[10];

char street[30];

char town[10];

long number;

} my={"Petrov", "Green Street","Moscow",33};

}

Такая запись определяет новый тип address, НО вместе с тем и инициализирует ее поля (значения ее элементов перечисляются в фигурных скобках в порядке их описания).

Рассмотрим пример.

#include <iostream.h>

#include <string.h>// используется функция strcpy()

// объявление структуры

struct MYSTRUCTURE

{

char sName[100];

int iAge;

};

/*Это означает, что MYSTRUCTURE состоит из строки с именем sName и целого с именем iAge. sName и iAge называются элементами данных структуры.*/

/* Код в main() объявляет переменную с именем MyStructure типа MYSTRUCTURE: */

void main()

{

MYSTRUCTURE MyStructure;

/*Обратите внимание, что по традиции имя переменной составлено из символов нижнего регистра или в нем смешаны символы нижнего и верхнего регистров, MyStructure, но в имени типа структуры используются только символы верхнего регистра, как, например, в MYSTRUCTURE. */

strcpy (MyStructure.sName, "Andy" ); /*функция strcpy() копирует строку 'Andy' в элемент данных MyStructure.sName */

/*Следующий оператор присваивает значение 13 элементу данных iAge cтруктуры*/

MyStructure.iAge = 13;

cout << "My name is ";

cout << MyStructure.sName;

cout << " and I am ";

cout << MyStructure.iAge;

cout << " years old." << endl;

}

Результат работы программы:

My name is Andy and I am 13 years old.

Тема: Классы в С++