the novel class of microwave mode converters based on ...virtlab.donsoftltd.ru/docs_uc/inf_3k.pdfthe...

45
The Physics Department, Southern Federal University, Russia [email protected] Доцент кафедры прикладной электродинамики и компьютерного моделирования, к.ф.-м.н. Губский Д.С. Информатика, …. (часть 3)

Upload: others

Post on 12-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

The Physics Department,

Southern Federal University,

Russia [email protected]

Доцент кафедры прикладной

электродинамики и

компьютерного

моделирования, к.ф.-м.н.

Губский Д.С.

Информатика, …. (часть 3)

Page 2: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ 2

Файлы

Page 3: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

Что такое файл и как с ним работать?

Файлы

3

Page 4: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

FILE *namew; //объявляем указатель на файл

mamew=fopen(name,mode); //открываем файл

name - имя файла

mode - режим открытия

“r” - чтение

“w” - запись

“a” - дозапись

“r+” - чтение и запись

“w+” - запись и чтение

“a+” - дозапись и чтение

позиционирование при открытии: «r, w» – на начало, «а» – на конец

// есть доступ к файлу

fclose(namew); //закрываем файл

Файлы

4

Page 5: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

Фрагмент кода

int i=12;

double x=3.14;

FILE *namew;

namew=fopen("output.txt","w");

fprintf(namew,"Результаты \n");

fprintf(namew,"i = %3d\n",i);

fprintf(namew,"x = %9.3f\n",x);

fclose(namew);

Файлы (пример форматный вывод)

5

Результат – содежимое файла output.txt

Результаты

i = 12

x = 3.140

Page 6: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

Фрагмент кода

int i;

double x;

char buf[81];

double a,b;

double beg, step;

int kol;

FILE *namer, *namew;

namer=fopen("input.txt","r");

fscanf(namer,"%s",buf);

fscanf(namer,"%d",&i);

fscanf(namer,"%lf",&x);

fscanf(namer,"%s",buf);

fscanf(namer,"%lf %lf",&a,&b);

fscanf(namer,"%*4s %d",&kol);

fscanf(namer,"%*4s %lf %*5s %lf",&beg,&step);

fclose(namer);

Файлы (пример форматный ввод-вывод)

6

Файл input.txt

jgerheheeh

2

3.14

Нач

4.120 8.310

kol= 12

beg=1.2 step= 0.02

Page 7: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

Фрагмент кода (продолжение)

cout << "i = " << i << "\n";

cout << "x = " << x << "\n";

cout << "a = " << a << " b = " << b << "\n";

cout << "kol = " << kol << " beg = " << beg << " step = " << step << "\n";

namew=fopen("output.txt","w");

fprintf(namew,"Исходные данные \n");

fprintf(namew,"i = %3d x = %9.3f\n",i,x);

fprintf(namew,"a = %9.3f b = %9.3f\n",a,b);

fprintf(namew,"kol = %3d\n",kol);

fprintf(namew,"beg = %9.3f step = %9.3f\n",beg,step);

fclose(namew);

Файлы (пример форматный ввод-вывод)

7

Файл output.txt

Исходные данные

i = 2 x = 3.140

a = 4.120 b = 8.310

kol = 12

beg = 1.200 step =

0.020

Page 8: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

Фрагмент кода

int c;

char buf[81];

FILE *namer;

namer=fopen("input.txt","r");

do

c=fgetc(namer);

while(c!='a');

ungetc(c,namer);

fscanf(namer,"%s",buf);

fclose(namer);

cout << buf << "\n";

Файлы (пример)

8

Файл input.txt

Началоa_eto_to_cto_nado!!!

На экране

a_eto_to_cto_nado!!!

Для продолжения нажмите любую клавишу . . .

Page 9: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

Фрагмент кода

int c;

char buf[81];

double x;

FILE *namer;

namer=fopen("input.txt","r");

do

c=fgetc(namer);

while(c!='/');

c=fgetc(namer);

if(c==' '){

ungetc(c,namer);

}

fscanf(namer,"%lf",&x);

fclose(namer);

cout << "x = " << x << "\n";

Файлы

9

Файл input.txt

Началоa_eto_to_cto_nado!!!vcavdvc/

1.8

На экране

x = 1.8 Для продолжения нажмите любую клавишу . . .

Page 10: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

#define CHAR_COMMENT '/'

using namespace std;

FILE *finp, *fout;

void inputfile(void)

{

char inf[9];

printf("\n Please enter the name for input file - ");

scanf("%s",inf);

if ((finp = fopen(inf,"r")) == NULL){

printf("\n Error! Input file was not found! \n");

exit(1);

}

}

void outputfile(void)

{

char inf[9];

printf("\n Please enter the name for output file - ");

scanf("%s",inf);

if ((fout = fopen(inf,"w")) == NULL){

printf("\n Error! Output file! \n");

exit(1);

}

Файлы

10

void fSkipComment( FILE *stream )

{

int c;

do

{

do

c = fgetc( stream );

while( c == ' ' || c == '\t' || c == '\n' || c == '\r' );

if( c == CHAR_COMMENT )

{

while( ( c = fgetc( stream ) ) != '\n' && c != CHAR_COMMENT )

if( c == EOF )

return;

}

else

ungetc( c, stream );

}

while( c == ' ' || c == '\t' || c == '\n' || c == '\r' ||

c == CHAR_COMMENT );

}

Page 11: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

int _tmain(int argc, _TCHAR* argv[])

{

inputfile();

outputfile();

int i;

float x;

double a,b;

i=1;

fSkipComment(finp); //zagolovok

fSkipComment(finp); //vvod I

fscanf(finp," %d",&i);

fSkipComment(finp); //tekst

fscanf(finp," %f",&x); //float

fSkipComment(finp); //tekst

fscanf(finp," %lf",&a); //double

fSkipComment(finp); //tekst

fscanf(finp," %d %lf %lf",&i,&a,&b); //int double

double

Файлы

11

fprintf(fout," Out\n");

fprintf(fout," i= %6d\n",i);

fprintf(fout," x= %9.3f\n",x);

fprintf(fout,"i= %6d x= %9.3f a= %12.6f b= %9.4lf\n",i,x,a,b);

fclose(finp);

fclose(fout);

return 0;

}

Результат работы Входной файл (d.txt)

/Демо версия/

/Значение i/12

/Значение float x/12.3

/Значение double a/12.234

/Значение i a b/ 3 1.2 3.45

Выходной файл

Out

i= 3

x= 12.300

i= 3 x= 12.300 a= 1.200000 b= 3.4500

Для продолжения нажмите любую клавишу . . .

Page 12: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

Двоичный файл – это ………………

Двоичные файлы

12

Page 13: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

Двоичный поток - это последовательность байтов, которые

однозначно соответствуют тому, что находится на внешнем

устройстве.

Рассмотрим некоторый функции

Особенности функций

в разных версиях компиляторов,

в т.ч. MS VS

(практика, доклады, рефераты)

Файлы (двоичные, некоторые функции)

13

Page 14: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

Функция feof( ) определяет конец файла при чтении

двоичных данных и имеет следующий прототип:

int feof(FILE *fp);

здесь fp - указатель на файл, возвращенный

функцией fopen( ).

При достижении конца файла возвращается

ненулевое значение, в противном случае

возвращается 0.

Файлы (двоичные, некоторые функции)

14

Page 15: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

Функция позиционирования по файлу

fseek(f1,delta,pos);

Здесь f1 – указатель на файл;

delta (тип long) – величина смещения в байтах, на

которую следует переместить указатель файла;

pos – позиция, от которой производится смещение

указателя (SEEK_SET – от начала файла,

SEEK_CUR – от текущей позиции, SEEK_END – от

конца файла)

Файлы (двоичные, некоторые функции)

15

Page 16: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

Функция позиционирования по файлу

fseek(f1,delta,pos);

Пример: файл

«указатель»

Файлы (двоичные, некоторые функции)

16

SEEK_SET – от начала файла,

SEEK_CUR – от текущей позиции,

SEEK_END – от конца файла

Page 17: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

Файлы (двоичные, некоторые функции)

17

Функция ferror( ) позволяет проверить правильность

выполнения последней операции при работе с

файлами. Имеет следующий прототип:

int ferror(FILE *fp);

В случае ошибки возвращается ненулевое значение, в

противном случае возвращается нуль.

Флаги ошибок, связанные с потоком stream, остаются

установленными до закрытия файла или до вызова

rewind() или clearerr().

Page 18: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

Файлы (двоичные, некоторые функции)

18

Следующий фрагмент кода прерывает выполнение

программы в случае файловой ошибки:

/*

Предполагается, что fp указывает на поток,

открытый для записи

*/

….

if (ferror(fp)) {

printf("File Error\n");

exit(1);

}

...

Page 19: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

Файлы (двоичные, некоторые функции)

19

Функция rewind() перемещает указатель положения в

файле на начало указанного потока. Она также

сбрасывает флаги конца файла и ошибки, связанные

со stream. Она возвращает 0 в случае успеха и

ненулевое значение в противном случае.

void rewind(FILE *fp);

Page 20: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

Функция fread( ) предназначена для чтения блоков

данных из потока.

Функция fwrite( ) предназначена для записи в файл

блоков данных.

c_w = fwrite(buf, size_rec, n_rec, f1);

c_r = fread(buf, size_rec, n_rec, f1);

набор параметров один и тот же. Одна пишет, а другая читает.

Файлы (двоичные, некоторые функции)

20

Page 21: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

c_w = fwrite(buf, size_rec, n_rec, f1);

Здесь buf – указатель на начало буфера в оперативной памяти,

из которого информация переписывается в файл;

size_rec – размер передаваемой порции в байтах;

n_rec – количество порций, которое должно быть записано в

файл;

f1 – указатель на блок управления файлом;

c_w – количество порций, которое фактически записалось в

файл.

Файлы (двоичные, некоторые функции)

21

Page 22: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

c_w = fwrite(buf, size_rec, n_rec, f1); buf – указатель на начало буфера в оперативной памяти, из которого информация

переписывается в файл;

size_rec – размер передаваемой порции в байтах;

n_rec – количество порций, которое должно быть записано в файл;

f1 – указатель на блок управления файлом;

c_w – количество порций, которое фактически записалось в файл.

Файлы (двоичные, некоторые функции)

22

Page 23: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

FILE *finput, *fout;

fout=fopen("out.d","w");

//пишем

double x;

for(int i=0;i<10;i++){

x=10.1*i;

fwrite(&x,sizeof(x),1,fout);

}

fclose(fout);

//читаем

double y;

finput=fopen("out.d","r");

for(int i=0;i<10;i++){

fread(&y,sizeof(y),1,finput);

cout << "y="<<y<<"\n";

}

fclose(finput);

Файлы (двоичные, примеры)

23

y=0

y=10.1

y=20.2

y=30.3

y=40.4

y=50.5

y=60.6

y=70.7

y=80.8

y=90.9

Page 24: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

//читаем в обратном порядке

double z;

long nu;

finput=fopen("out.d","r");

nu=sizeof(z);

fseek(finput,-nu,SEEK_END);

for(int i=0;i<4;i++){

fread(&z,sizeof(z),1,finput);

cout << "z="<<z<<"\n";

fseek(finput,-2*nu,SEEK_CUR);

}

fclose(finput);

Файлы (двоичные, примеры)

24

z=90.9

z=80.8

z=70.7

z=60.6 Для продолжения

нажмите любую

клавишу . . .

Page 25: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

Файлы (двоичные, примеры)

25

z=0

z=10.1

z=20.2

z=30.3

z=40.4

z=50.5

z=60.6

z=70.7

z=80.8

z=90.9 Для продолжения нажмите любую клавишу .

. .

FILE *finput;

double z;

finput=fopen("out.d","r");

do{

fread(&z,sizeof(z),1,finput);

if(feof(finput)!=0) break;

cout << "z="<<z<<"\n";

} while(1);

fclose(finput);

Page 26: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

FILE *finput; (читаем файл в обратном порядке)

double z;

long nu;

finput=fopen("out.d","r");

nu=sizeof(z);

fseek(finput,-nu,SEEK_END);

do{

fread(&z,sizeof(z),1,finput);

if(feof(finput)!=0) break;

cout << "z="<<z<<"\n";

fseek(finput,-2*nu,SEEK_CUR);

} while(1);

fclose(finput);

Файлы (двоичные, примеры)

26

z=90.9

z=80.8

z=70.7

z=60.6

z=50.5

z=40.4

z=30.3

z=20.2

z=10.1

z=0 Для продолжения нажмите любую клавишу .

. .

Page 27: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

Запись / чтение массивов

int y[10];

Что вернет функция sizeof(y)?

27

Файлы (двоичные, массивы)

Page 28: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

int x[10];

int i;

for (i = 0; i <= 9; i++)

x[i] = rand() % 100 - 50;

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

cout << "x[" << i << "]=" << x[i] << "\n";

cout << "\n";

28

Файлы (двоичные, массивы)

//запись

FILE *f;

f = fopen("out.d", "w");

fwrite(x, sizeof(x), 1, f);

fclose(f);

x[0]=-9

x[1]=17

x[2]=-16

x[3]=-50

x[4]=19

x[5]=-26

x[6]=28

x[7]=8

x[8]=12

x[9]=14

Page 29: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

//читаем

FILE *fr;

int y[10];

fr = fopen("out.d", "r");

fread(y, sizeof(y), 1, fr);

fclose(fr);

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

cout << "y[" << i << "]=" << y[i] << "\n";

29

Файлы (двоичные, массивы)

y[0]=-9

y[1]=17

y[2]=-16

y[3]=-50

y[4]=19

y[5]=-26

y[6]=28

y[7]=8

y[8]=12

y[9]=14

Page 30: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

//читаем поэлементно

FILE *fr1;

int z;

fr1 = fopen("out.d", "r");

do {

fread(&z, sizeof(z), 1, fr1);

if (feof(fr1) != 0) break;

cout << "z=" << z << "\n";

} while (1);

fclose(fr1);

30

Файлы (двоичные, массивы)

z=-9

z=17

z=-16

z=-50

z=19

z=-26

z=28

z=8

z=12

z=14

Page 31: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

//читаем поэлементно в обратном порядке

FILE *fr2;

int d;

long nu;

fr2 = fopen("out.d", "r");

nu = sizeof(d);

fseek(fr2, -nu, SEEK_END);

do {

fread(&d, sizeof(d), 1, fr2);

if (feof(fr2) != 0) break;

cout << "d=" << d << "\n";

fseek(fr2, -2 * nu, SEEK_CUR);

} while (1);

fclose(fr2);

31

Файлы (двоичные, массивы)

d=14

d=12

d=8

d=28

d=-26

d=19

d=-50

d=-16

d=17

d=-9

Page 32: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

Структуры

32

Page 33: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

struct [имя, ярлык, тэг] {

список-объявл. элементов

} [описатель [,описатель]…];

Пример

1)

struct tchk{

int n, m;

double x, y;

} ;

……..

struct tchk k,*uk;

2)

struct tchk{

int n, m;

double x, y;

} a,b,*c;

33

Структуры

Page 34: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

struct tchk{

int n, m;

double x, y;

} a,b,*c;

a.n=2;

a.m=13;

a.x=1.3;

a.y=35.6; cout << " a.n = " << a.n << " a.m = “

<< a.m << " a.x = " << a.x

<< " a.y = " << a.y << "\n";

b=a; cout << " b.n = " << b.n << " b.m = “

<< b.m << " b.x = " << b.x << " b.y = "

<< b.y << "\n";

c=&b; cout << " c->n = " << c->n << " c->m = " << c->m << " c->x = " << c->x << " c->y = " << c->y << “\n";

34

Результат работы

a.n = 2 a.m = 13 a.x = 1.3 a.y = 35.6

b.n = 2 b.m = 13 b.x = 1.3 b.y = 35.6

c->n = 2 c->m = 13 c->x = 1.3 c->y = 35.6

c->n = 20 c->m = 130 c->x = 10.3 c->y =

350.6

a.n = 20 a.m = 130 a.x = 10.3 a.y = 350.6

Для продолжения нажмите любую клавишу . . .

c->n=2m=130;

c->x=10.30;

c->;

c->y=350.6; cout << " c->n = " << c->n << " c->m = " << c-

>m << " c->x = " << c->x << " c->y = " << c->y << "\n";

a=*c; cout << " a.n = " << a.n << " a.m = " << a.m << "

a.x = " << a.x << " a.y = " << a.y << "\n";

Структуры (пример)

Page 35: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

struct rec{

int col;

struct tchk p1,p2;

} t1,t2;

t1.col=31;

t1.p1.x=4.5;

t1.p1.y=4.6;

t1.p2.x=14.5;

t1.p2.y=14.6;

t2=t1;

cout << "t2 col = " << t2.col << " p1.x = " << t2.p1.x << " p1.y = " << t2.p1.y;

cout << " p2.x = " << t2.p2.x << " p2.y = " << t2.p2.y << "\n";

35

Результат работы

t2 col = 31 p1.x = 4.5 p1.y = 4.6 p2.x = 14.5 p2.y = 14.6

Для продолжения нажмите любую клавишу . . .

Структуры (пример)

Page 36: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

#include "stdafx.h"

#include "iostream"

using namespace std;

struct tchk{

int col;

double x, y;

};

struct tchk funk(struct tchk a,double rx,double ry)

{

struct tchk rz;

rz.x=a.x+rx;

rz.y=a.y+ry;

rz.col=a.col;

return rz;

}

int _tmain(int argc, _TCHAR* argv[])

{

struct tchk a,b;

double rx,ry;

rx=2.7;

ry=4.4;

Структуры и функции (пример)

36

a.col=13;

a.x=1.3;

a.y=35.6;

cout << " a.col = " << a.col << " a.x = " <<

a.x << " a.y = " << a.y << "\n";

b=funk(a,rx,ry);

cout << " b.col = " << b.col << " b.x = " <<

b.x << " b.y = " << b.y << "\n";

return 0;

}

Результат работы

a.col = 13 a.x = 1.3 a.y = 35.6

b.col = 13 b.x = 4 b.y = 40

Для продолжения нажмите любую клавишу . . .

Page 37: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

struct tchk{

int num;

double okl;

char fio[32];

};

struct tchk vvod(void)

{

struct tchk r;

int num;

double okl;

char fio[32];

printf("\nInput N = ");

scanf("%d",&num);

printf("\nFIO = ");

scanf("%31s",fio,32);

printf("\noklad = ");

scanf("%lf",&okl);

r.num=num;

r.okl=okl;

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

r.fio[i]=fio[i];

return r;

}

Структуры и функции (пример)

37

int _tmain(int argc, _TCHAR* argv[])

{

struct tchk rab;

rab=vvod();

struct tchk r, arr[5],p;

int i;

for(i=0; i<5; i++){

r=vvod();

arr[i]=r;

}

for(i=4; i>0; i--){

cout << "i = " << i << "\n";

p=arr[i];

cout << "rab N = " << p.num << " FIO = " << p.fio << " oklad = " << p.okl << "\n";

cout << "rab N = " << arr[i].num << " FIO = " << arr[i].fio << " oklad = " << arr[i].okl << "\n";

}

return 0;

}

Page 38: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

struct tchk{

int num;

double okl;

char fio[32];

};

struct tchk vvod(void)

{

struct tchk r;

int num;

double okl;

char fio[32];

printf("\nInput N = ");

scanf("%d",&num);

printf("\nFIO = ");

scanf("%31s",fio,32);

printf("\noklad = ");

scanf("%lf",&okl);

r.num=num;

r.okl=okl;

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

r.fio[i]=fio[i];

return r;

}

Структуры и файлы (пример)

38

//фрагмент кода в программе

struct tchk r, p;

int i;

FILE *fstr;

//запись

fstr=fopen("strf","w");

for(i=0; i<5; i++){

r=vvod();

fwrite(&r,sizeof(r),1,fstr);

}

fclose(fstr);

//чтение

fstr=fopen("strf","r");

while(!feof(fstr)) {

fread(&p,sizeof(p),1,fstr);

cout << "rab N = " << p.num << " FIO = " << p.fio << " oklad = " << p.okl << "\n";

}

fclose(fstr);

Page 39: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

#include "stdafx.h"

#include "iostream"

using namespace std;

struct compl{

double re,im;

int f;

float z;

void in(void);

void out(void)

{

cout << "Re=" << re << " Im=" << im <<

"\n";

return;

};

void add(struct compl x,struct compl y);

};

Структуры (пример)

39

void compl::in(void)

{

cout << "Input Re=";

cin >> re;

cout << "Input Im=";

cin >> im;

return;

}

void compl::add(compl x,compl y)

{

re=x.re+y.re;

im=x.im+y.im;

return;

}

struct compl addn(struct compl x,struct compl y)

{

struct compl z;

z.re=x.re+y.re;

z.im=x.im+y.im;

return z;

}

Page 40: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

int _tmain(int argc, _TCHAR* argv[])

{

struct compl a,b,c,d;

a.in();

b.in();

a.out();

b.out();

c.add(a,b);

c.out();

d.re=0;

d.im=0;

d.out();

d=addn(a,b);

d.out();

cout << sizeof(c) << "\n";

cout << sizeof(d.re) << "\n";

cout << sizeof(d.im) << "\n";

cout << sizeof(d.f) << "\n";

cout << sizeof(d.z) << "\n";

return 0;

}

40

Результат работы

Input Re=1.2

Input Im=3.4

Input Re=5.6

Input Im=7.8

Re=1.2 Im=3.4

Re=5.6 Im=7.8

Re=6.8 Im=11.2

Re=0 Im=0

Re=6.8 Im=11.2

24

8

8

4

4

Для продолжения нажмите любую клавишу . . .

Структуры (пример)

Page 41: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

union [имя, ярлык, тэг] {

список-объявл. элементов

} [описатель [,описатель]…];

Пример

1)

union tchk{

int n, m;

double x, y;

} ;

……..

union tchk k,*uk;

2)

union tchk{

int n, m;

double x, y;

} a,b,*c;

Объединение

41

Page 42: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

union prim{

int i;

char c;

double x;

};

union prim a = {38};

//a.i=38;

cout << "a.i = " << a.i << "\n";

cout << "a.c = " << a.c << "\n";

cout << "a.x = " << a.x << "\n";

//код символа l = 108;

a.c='l';

cout << "a.i = " << a.i << "\n";

cout << "a.c = " << a.c << "\n";

cout << "a.x = " << a.x << "\n";

a.x=133.4;

cout << "a.i = " << a.i << "\n";

cout << "a.c = " << a.c << "\n";

cout << "a.x = " << a.x << "\n";

cout << "razmer a = " << sizeof(a) << "\n";

cout << "razmer a.i = " << sizeof(a.i) << "\n";

Объединение (пример)

42

Результат работы

a.i = 38

a.c = &

a.x = 1.87745e-322

a.i = 108

a.c = l

a.x = 5.33591e-322

a.i = -858993459

a.c = ═

a.x = 133.4

razmer a = 8

razmer a.i = 4

Для продолжения нажмите любую клавишу . . .

Page 43: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

include "stdafx.h"

#include "iostream"

using namespace std;

#define G 9.8

#define KUB(x) (x*x*x)

#define KUB1(x) ((x)*(x)*(x))

int _tmain(int argc, _TCHAR* argv[])

{

double x,y,z;

x=2*G;

cout << "x = " << x << "\n";

y=3;

z=KUB(y+1);

cout << "y = " << y << "\n";

Разное (пример)

43

cout << "z = " << z << "\n";

// y+1*y+1*y+1

z=KUB1(y+1);

cout << "z = " << z << "\n";

return 0;

}

Результат работы

x = 19.6

y = 3

z = 10

z = 64

Для продолжения нажмите любую клавишу . . .

Page 44: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

#include "stdafx.h"

#include "time.h"

#include "iostream"

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

int i,j,k;

for(i=0;i<30000;i++)

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

k=1;

cout << k << "\n";

//Время счета

int s;

s=clock()/CLOCKS_PER_SEC;

cout << s << " cek." << "\n";

Время (пример)

44

//Дата

time_t t;

t=time(NULL);

cout << ctime(&t) << "\n";

struct tm *gmt, *mu;

gmt=gmtime(&t);

cout << asctime(gmt) << "\n";

mu=localtime(&t);

cout << asctime(mu) << "\n";

cout << mu->tm_sec << "\n";

cout << mu->tm_min << "\n";

cout << mu->tm_hour << "\n";

cout << mu->tm_mday<< "\n";

cout << mu->tm_mon << "\n";

cout << mu->tm_year << "\n";

cout << mu->tm_wday << "\n";

cout << mu->tm_yday << "\n";

cout << mu->tm_isdst << "\n";

return 0;

}

Page 45: The Novel Class of Microwave Mode Converters Based on ...virtlab.donsoftltd.ru/docs_uc/Inf_3k.pdfThe Physics Department, Southern Federal University, Russia ds@sfedu.ru Доцент

«Информатика … » © 2017 кафедра ПЭКМ физический факультет ЮФУ

45

Результат работы

1

0 cek.

Fri Apr 08 11:35:34 2011

Fri Apr 08 07:35:34 2011

Fri Apr 08 11:35:34 2011

34

35

11

8

3

111

5

97

1

Для продолжения нажмите любую клавишу . . .

Время (пример)