Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
сука лаби.docx
Скачиваний:
17
Добавлен:
12.05.2015
Размер:
848.39 Кб
Скачать

Порядок виконання роботи

А.При пiдготовцi :

1.Ознайомитися із додатком А ,де наведені основні оператори відкриття та закриття файлів, запису та читання. Приклади роботи із бінарними файлами у додатку В.

2.Розробити програму №1,у якій реалізувати наступне завдання:

- створити на диску текстовий файл для запису одновимірного масиву символів шляхом відкриття файлу для запису (файл створюється автоматично після відкриття );

- записати із клавіатури у файл послідовно символи рядка

прізвищеім’япо-батьковіденьнародження.

, запис закінчувати введенням крапки;

- визначити розмір файлу – кількість записаних символів;

- закрити файл ;

- відкрити файл для читання;

- прочитати і вивести на екран ім’я та день , використовуючи функцію

seekg для встановлення вказівника файлу ;

- полічити у файлі кількість літер , однакових із першою літерою імені;

- закрити файл ;

- відкрити файл для дописування і додати дату вступу до університету;

- закрити файл і перевірити за допомогою текстового редактора правильність виконання дописування ;

- відкрити файл для читання і знову полічити кількість символів; наскільки збільшилася їх кількість ?;

- закрити файл .

3. Розробити програму №2, у якій реалізувати наступне завдання:

- підготувати масив структур із n = 7 елементів (склад структур

у таблиці №15.1); визначити розмір структури та функціональну залежність адреси елементу масиву від його індексу ;

- відкрити (створити) бінарний файл для запису числових значень масиву структур із клавіатури;

- визначити розмір файлу , значення якого дописати у кінець файлу;

- закрити файл ;

- відкрити файл для читання;

- прочитати елементи n1 і n2 масиву структур , вивести значення на екран , обчислити суму їх float складових (значення n1 і n2 у таблиці №1 );

- закрити файл ;

- відкрити файл для читання-запису;

- складові цілого типу усіх елементів масиву збільшити на 1( алгоритм такий : читання – збільшення – запис);

- поміняти місцями n1 і n2 елементи масиву ;

- закрити файл ;

3.Підготувати шаблон звіту.

В.У лабораторii:

1.Виконати підготовлені програми .

2.Результати виконання дій з файлами записати у звіт із поясненнями та зробити належні висновки.

Змiст звiту:

1.Програми . Результати виконання.

2. Результати виконання та відповідні висновки.

3.Пропозиції по роботі.

Таблиця №15.1

Варіант

тип

тип

тип

тип

n1

n2

1

float

float

double

int

2

7

2

float

long

double

int

3

6

3

float

int

long

double

4

5

4

float

double

int

long

1

7

5

double

float

int

long

2

6

6

double

int

float

long

3

5

7

double

long

float

int

3

7

8

double

double

int

float

3

6

9

long

double

float

int

3

4

10

long

float

int

double

4

7

11

long

long

double

float

5

6

12

long

int

float

double

6

4

13

int

double

long

float

7

3

14

int

float

double

long

4

6

15

int

long

double

float

4

5

16

int

int

float

long

5

7

17

float

double

long

int

5

6

18

float

long

int

double

6

7

19

double

int

long

float

2

3

20

double

float

long

int

2

4

21

long

double

float

long

2

5

22

long

float

double

int

1

6

23

long

int

double

float

1

5

24

int

double

float

long

1

4

25

int

float

long

double

1

3

26

int

long

float

double

1

2

27

float

double

float

long

1

7

28

double

float

double

long

4

7

29

long

long

float

int

7

3

30

int

int

double

float

4

6

ДОДАТОК А

Бібліотека fstream.h

(додаткові бібліотеки : для використання маніпуляторів iomanip.h та cstdlib.h для виходу із програми операторами exit (число) )

Текстові файли

1. відкриття текстового файлу name.dat для запису

a) ofstream fout ; fout.open ( “name.dat”);

b) ofstream fout ( “name.dat”);

c) ofstream fout ; fout.open ( “name.dat”,ios::out);

вказівник файлу встановлюється на початок файлу

переміщення вказівника файлу

fout.seekp ( offset, ios::beg | cur|end );

його позиція = fout.tellp();

запис fout << змінна;

вивантаження буфера fout у файл під час виконання програми fout.flush();

закриття файлу fout.close();

2. відкриття текстового файлу name.dat для читання

a) ifstream fin ; fin.open ( “name.dat”);

b) ifstream fin ( “name.dat”);

c) ifstream fin ; fin.open ( “name.dat”,ios::in);

d) ifstream fin ; fin.open ( “name.dat”,ios::in);

if(!fin) //якщо помилка відкриття

{

cerr << ”\n Open file failed”; exit(0);

}

вказівник файлу встановлюється на початок файлу;

переміщення вказівника файлу

fin.seekg ( offset, ios::beg | cur|end );

його позиція = fin.tellg();

читання fin >> змінна;

закриття файлу fin.close();

3. відкриття текстового файлу name.dat для запису-читання

fstream finout (( “name.dat”, ios::in | ios::out );

4. відкриття текстового файлу name.dat для дописування у його кінець

ofstream fout ; fout.open ( “name.dat”, ios::app );

Бінарні файли

1. відкриття бінарного файлу name.dat або name.bin для запису

a) ofstream fout ; fout.open ( “name.dat”, ofstream::binary );

b) ofstream fout ( “name.bin”, ofstream::binary );

запис у файл значення змінної var

fout.write ( (const char*) &var, sizeof var) ;

fout.write ( (const char*) &ім’я_змінної, sizeof (тип_змінної) ) ;

закриття файлу fout.close();

2. відкриття бінарного файлу name.dat або name.bin для читання

а) ifstream fin ( “name.dat”, ofstream::binary);

b) ifstream fin ; fin.open ( “name.dat”, ofstream::binary);

розмір файлу length

fin.seekg ( 0, ios::end ); length = fin.tellg();

кількість однотипних записів n = length/ sizeof (тип_даних);

читання значення

fin.read ( (char*) &ім’я_змінної, sizeof (тип_змінної) ) ;

закриття файлу fin.close();

3. відкриття бінарного файлу name.dat для запису-читання

fstream finout ( ( “name.dat”, ios::in | ios::out | ios::binary );

ДОДАТОК B

Приклади роботи із бінарними файлами

Програма 1

#include <iostream.h>

#include <fstream.h>

#include <iomanip.h>

#include <conio.h>

#define n 5

int main ()

{

int a[n] = 1, 2, 3, 4, 5, a1[n], a2[n], i;

float b[n] = 11., 12., 13., 14., 15., b1[n], b2[n];

double c[n] = 21.l, 22.l, 23.l, 24.l, 25.l, c1[n], c2[n];

clrscr();

//file creating for writing the 3 arrays

ofstream out ("binfile.bin", ofstream::binary);

ofstream cout1 ("contr.dat");

//запис масивів у файл

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

out.write ( (char*)&a[i], 2 );

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

out.write ( (char*)&b[i], 4 );

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

out.write ( (char*)&c[i], 8 );

out.close();

//file opens for reading

ifstream fin;

fin.open ( "binfile.bin", ios::in | ios::binary );

if ( !fin ) //control of opening

{ cout1 << "Open file failed"; return 1; }

//читання значень елементів масивів із контрольним виведенням //на екран (cout) або у файл контрою (cout1)

//values for a1 array

cout1 << "\n array a1 = ";

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

{

fin.read ( (char*)&a1[i], 2 );

cout1 << a1[i] << " ";

}

//values for b1 array

cout1 << "\n array b1 = ";

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

{

fin.read ( (char*)&b1[i], 4 );

cout1 << b1[i] << " ";

}

//values for c1 array

cout1 << "\n array c1 = ";

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

{

fin.read ( (char*)&c1[i], 8 );

cout1 << c1[i] << " ";

}

//file dimension

fin.seekg ( 0, ios::end );

cout1 << "\n CP = " << fin.tellg();

//читання заданих елементів масивів

//current position CP for reading value for a2[2]

fin.seekg ( 4, ios::beg );

cout1 << "\n CP = " << fin.tellg();

fin.read ( (char*)&a2[2], 2 );

cout1 << "\n a2[2] = " << a2[2];

//current position CP for reading value for b2[1]

fin.seekg ( 8, ios::cur );

cout1 << "\n CP = " << fin.tellg();

fin.read ( (char*)&b2[1], 4 );

cout1 << "\n b2[1] = " << b2[1];

//current position CP for reading value for c2[3]

fin.seekg( 54, ios::beg );

cout1 << "\n CP = " << fin.tellg();

fin.read ( (char*)&c2[3], 8 );

//виведення формату значення елемента масиву

union test

{

float x;

long y;

} p;

p.x = b2[1]; cout1 << "\n b2[1] = " << hex << p.y;

// reading value for z

double z;

cout1 << "\n CP = " << dec << fin.tellg();

fin.read ( (char*)&z, 8 );

cout1 << "\n z=" << z;

fin.close();

//file opens for data appending

ofstream fout ( "binfile.bin", ios::out | ios::app | ios::binary );

//модифікація масиву а та запис його у кінець файлу

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

{

a[i] += 5;

fout.write ( (char*)&a[i], 2 );

}

fout.close();

//file opens for data inserting

ofstream ffout ( "binfile.bin", ios::ate | ios::binary );

ffout.seekp (0, ios::beg ); //file start

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

{

a[i] += 50;

ffout.write ( (char*)&a[i], 2 );

}

ffout.close();

//file opens for data writing (CP=10)

//after all data cleaning

fout.open ( "binfile.bin", ios::out | ios::binary );

fout.seekp ( 10, ios::beg );

cout1 << "\n CP = " << fout.tellp(); for ( i = 0; i < n; i ++)

{

a[i] += 100;

fout.write ( (char*)&a[i], 2 );

}

fout.close();

cout1.close(); return 0;

}

Результати виконання програми 1

Вміст файлу контролю contr.dat

array a1 = 1 2 3 4 5

array b1 = 11 12 13 14 15

array c1 = 21 22 23 24 25

CP = 70

CP = 4

a2[2] = 3

CP = 14

b2[1] = 12

CP = 54

b2[1] = 41400000

CP = 62

z=25

CP = 10

Програма 2

#include <iostream.h>

#include <fstream.h>

#include <conio.h>

#define n 3

struct lab13

{ int x1; long x2; float x3; double x4; };

int main ()

{

lab13 arr[n] = {1, 2, 3., 4., 5, 6, 7., 8., 9, 10, 11., 12.}, temp1, temp2;

int i , l; long value;

unsigned size = sizeof(lab13), size1 = size*n;

clrscr();

//file creating for writing the array arr

ofstream out(" \\strar.dat", ofstream::binary );

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

out.write ( (char*)&arr[i], size );

out.write ( (char*)&size1, 2 );

out.close();

//file opens for reading

ifstream fin;

fin.open (" \\strar.dat", ios::in | ios::binary );

if (!fin) //control of opening

{

cout << "Open file failed"; return 0;

}

// control input

cout << "\n array arr\n";

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

{

l = size*i;

fin.seekg ( l, ios::beg );

fin.read ( (char*)&temp2, size );

cout << " " << temp2.x1 << " " << temp2.x2 \

<< " " << temp2.x3 << " " << temp2.x4 <<endl;

}

fin.close();

//file opens for data inserting

fstream finout (" \\strar.dat", ios::in | os::out | ios::binary );

//arr[0].long reading , adding 10 ,writing

finout.seekp ( 2, ios::beg );

finout.read ( (char*)&value, 2 );

value += 10;

finout.seekg ( 2, ios::beg );

finout.write ( (char*)&value, 2 );

cout << "\n Value = " << value <<endl;

// control output

cout << "\n array arr\n";

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

{

l = size*i;

finout.seekp ( l, ios::beg );

finout.read ( (char*)&temp2, size );

cout << " " << temp2.x1 << " " << temp2.x2\

<< " " << temp2.x3 << " " << temp2.x4 <<endl;

}

finout.close();

getch();

return 1;

}

Результати виконання програми 2

array

1 2 3 4

5 6 7 8

9 10 11 12

Value = 12

array

1 12 3 4

5 6 7 8

9 10 11 12

Лабораторна робота № 16

РОЗРАХУНОК РЕЖИМУ РОБОТИ ТРАНЗИСТОРА

Мета роботи - вивчення методiв розрахунку режиму транзисторних ступенiв та складання програми визначення колекторного струму транзистора при використаннi сiм'ї його iдеалiзованих вихiдних характеристик.