Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
chast4.doc
Скачиваний:
4
Добавлен:
09.07.2019
Размер:
99.84 Кб
Скачать

Void main ()

{

float a, b, c;

int n;

cout<<”1. Dlina otrezka ”<<endl;

cout<<”2. Ploshad’ pryamougol’nika ”<<endl;

cout<<”3. Obyom pryamougol’nogo parallelipipeda ”<<endl;

cout<<”Nomer punkta ? ”;

cin>>n;

switch (n)

{

case 1:

cout<<”Dlina ? ”;

cin>>a;

cout<<”Dlina otrezka = “<<par(a);

break;

case 2:

cout<<”Dlina I shirina ? ”;

cin>>a>>b;

cout<<”Ploshad’ = ”<<par(a, b);

break;

case 3:

cout<<”Dlina, shirina i visota ? ”;

cin>>a>>b>>c;

cout<<”Obyom = ”<<par(a,b,c);

break

default

cout<<”Nepravil’niy nomer punkta”;

}

}

Тип структура.

Этот тип является аналогом типа “запись” в Turbo Pascal. Позволяет объединить данные различных типов.

<тип структура> ≡ struct

{

<резерв. пам.>;

{<резерв. пам.>;}

}

Компоненты этого типа называются членами структуры.

Описание переменной с типом <структура>:

Сначала определяется идентификатор типа <структура>, затем описываются переменные с использованием этого идентификатора.

<определение типа> ≡ typedef <тип><идент. типа>

Пример:

typedef struct

{

char F[15], I[15], O[15];

int B[4];

float SB;

}

rez;

rez GR [25];

GR[5].F //Фамилия 6-го студента группы//

GR[5].B[1] //Оценка этого студента на втором экзамене//

Ввод фамилии, имени и отчества можно организовать с помощью оператора cin, т.к. эти переменные не будут содержать пробелов.

Тип указатель. Динамические переменные.

Под динамические переменные выделяется область памяти, которая называется “куча”.

Два способа для работы с динамическими переменными:

1. Резервирование памяти под дин. переменные производится с помощью операции new <тип>; где <тип>, - тип динам. переменной; new, - знак операции. Результат операции – адрес области памяти (указатель); операнд – любой тип в TC.

Пример:

float *p;

p=new float;

*p, - динамическая переменная.

Резервирование памяти под динамические переменные – “захват”.

<освобождение памяти>≡delete <выр.>.

Выражение должно иметь тип указатель.

Динамические массивы – массивы, под которые выделяется область памяти “куча”. Работать с такими массивами так же, как и с динамическими переменными.

Пример:

a=new float [10], - захват памяти под 10 элементов действительного типа; значение a – указатель; работа с такими массивами так же, как и со статичными.

<освобождение памяти>≡delete [] <выражение>; при этом выражение должно иметь значение указателя на динамический массив.

NULL, - отсутствие ссылки; принадлежит любому значению типа указатель.

Списки.

Teg – описание структуры.

<определение типа структура с помощью тега>≡

struct <идент.>

{

<резервирование памяти>;

{< резервирование памяти >;}

};

Пример: Определим тип элемента односвязного списка.

struct tinfo

{

float x, y;

}

struct tel

{

tinfo info;

tel *link;

}

typedef tel* ptel;

Организация односвязного списка по принципу ссылки вперед.

Пример:

b, t, p – указатели на первый, текущий и на предшествующий элементы соответственно.

Блок – схема:

Текст программы:

void VVKL (ptel &b, int &n)

{

ptel t, p;

n=0;

do

{

t=new tel;

n++;

cout<<”Znachenie pervogo chlena ? ”;

cin>>t->info.x;

cout<<” Znachenie vtorogo chlena ? ”;

cin>>t->info.y;

if (n==1) b=t; else p->link=t;

p=t;

}

while (printf(“Prodolgit’ vvod? y/n ? ”)&&getchar()==’y’);

t->link=NULL;

}

Файлы.

Работа с файлами в С реализуется через буфер. В С существует два вида файлов: текстовые и бинарные.

<резерв. памяти под указатель на буфер файла>≡FILE* <идент.>

<открытие файла >≡fopen(“<имя файла>; <атрибут файла>”)

атрибуты: w, r, q;

значение функции – указатель на буфер.

<идент. (поток)>≡fopen (“имя файла”, “<атрибут>”); - связывает имя файла с потоком.

Основные действия с файлами: запись в файл, - атрибут: w; чтение, - атрибут: r.

q, - если файл существует и в него надо что-то записать.

if ((<идент.>=fopen(“<имя файла>”,”r”))!=NuLL)

{

//работа с файлами//

}

else

cout<<”fayl ne nayden”<<endl;

<форматированный вывод в файл>≡fprintf(<идент.>,<шаблон вывода>,<список вывода>);

<форматированный ввод из файла>≡fscanf(<идент.>,<шаблон вывода>,<список вывода>)

getc(), - функция, считывающая символ, на который указывает указатель чтения.

Пример:

getc()!=EOF.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]