ІКТА / КБ-12 / Технології Програмування частина №1 (ТП ч.1) / Лаби (умови) / C_method
.pdf41
Таблиця 1
№ |
Алгоритм |
Алгоритм для розрахунку |
|
|
Матриця |
||||
п/п |
впорядкування |
fi(aij) та F(fi(aij)) |
|
|
|
|
|
|
|
|
матриці |
|
|
|
|
|
|
|
|
1 |
Впорядкувати |
fi(aij)-максимальний |
-12 |
7 |
|
23 |
13 |
4 |
|
|
елементи стовпців |
елемент у кожному рядку |
67 15 |
|
34 -5 |
9 |
|||
|
матриці за спаданням |
матриці; F(fi(aij))-сума |
2 |
5 |
17 -23 45 |
||||
|
їх значень методом |
fi(aij). |
26 -6 |
|
23 -5 -9 |
||||
|
вставки |
|
18 37 |
|
-8 26 12 |
||||
2 |
Впорядкувати |
fi(aij)-мінімальний елемент |
34 |
|
-8 |
|
27 |
7 |
12 |
|
елементи рядків |
у кожному стовпці |
-5 |
|
23 45 67 |
-2 |
|||
|
матриці за зростанням |
матриці; F(fi(aij))-добуток |
13 |
-12 34 -3 25 |
|||||
|
їх значень методом |
fi(aij) |
17 |
|
56 -6 17 21 |
||||
|
обміну |
|
0 |
|
15 |
4 |
9 -14 |
||
3 |
Впорядкувати |
fi(aij)-сума елементів у |
2 |
|
0 |
|
33 -1 -21 |
||
|
елементи стовпців |
кожному рядку матриці; |
78 |
|
7 |
|
-4 |
-3 11 |
|
|
матриці за зростанням |
F(fi(aij))-середнє |
-2 |
-7 |
|
-1 |
-9 |
0 |
|
|
їх значень методом |
геометричне значення fi(aij) |
13 |
61 |
|
60 42 -10 |
|||
|
вибору |
|
1 |
|
0 |
|
4 |
0 |
16 |
4 |
Впорядкувати |
fi(aij)-добуток елементів у |
90 |
|
7 |
|
89 |
-2 |
17 |
|
елементи рядків |
кожному стовпці матриці; |
1 |
|
-4 |
|
8 |
56 32 |
|
|
матриці за спаданням |
F(fi(aij))-середнє арифме- |
-4 |
|
-6 –99 |
19 |
39 |
||
|
їх значень методом |
тичне значення fi(aij) |
2 |
|
4 |
-7 |
0 |
75 |
|
|
вставки |
|
11 |
41 |
|
22 80 -5 |
|||
5 |
Впорядкувати |
fi(aij)-середнє арифметичне |
40 |
72 |
6 |
92 |
98 |
||
|
елементи стовпців |
значення елементів у |
18 -33 -48 81 26 |
||||||
|
матриці за зростанням |
кожному рядку матриці; |
1 |
|
-4 |
|
6 |
-2 |
0 |
|
їх значень методом |
F(fi(aij))-добуток fi(aij) |
36 |
9 |
|
0 |
4 |
1 |
|
|
обміну |
|
-55 |
2 66 70 |
-3 |
||||
6 |
Впорядкувати |
fi(aij)-середнє геометричне |
-3 |
|
-5 –45 -71 |
-5 |
|||
|
елементи рядків |
значення елементів у |
0 |
|
1 |
|
3 |
2 |
7 |
|
матриці за спаданням |
кожному стовпці матриці; |
11 |
|
9 45 |
0 |
4 |
||
|
їх значень методом |
F(fi(aij))-сума fi(aij) |
9 |
|
19 |
|
55 |
44 |
90 |
|
вибору |
|
-3 |
|
-4 –1 |
-5 |
0 |
||
7 |
Впорядкувати |
fi(aij)-добуток елементів у |
6 |
|
34 |
|
12 |
70 |
-1 |
|
елементи стовпців |
кожному рядку під |
-7 |
|
97 80 99 -99 |
||||
|
матриці за зростанням |
головною діагоналлю |
1 |
|
6 |
|
-3 |
2 |
-8 |
|
їх значень методом |
матриці; F(fi(aij))-сума fi(aij) |
3 |
|
33 |
|
-1 |
0 |
-78 |
|
вставки |
|
-3 |
|
-5 |
|
-8 -56 -23 |
||
8 |
Впорядкувати |
fi(aij)-сума елементів у |
9 |
|
67 |
|
–65 |
45 |
1 |
|
елементи рядків |
кожному стовпці над |
12 |
61 |
|
48 |
-5 -1 |
||
|
матриці за спаданням |
головною діагоналлю |
0 |
|
39 |
|
0 |
41 |
2 |
|
їх значень методом |
матриці; F(fi(aij))-добуток |
36 |
|
95 |
|
-8 |
-5 |
0 |
|
обміну |
fi(aij) |
11 |
22 |
|
71 |
3 63 |
42
9 |
Впорядкувати |
fi(aij)-сума елементів у |
44 |
-2 |
|
-5 |
38 –91 |
|
|
елементи рядків |
кожному стовпці над |
2 |
0 |
|
6 |
3 |
22 |
|
матриці за зростанням |
допоміжною діагоналлю |
13 |
1 |
|
-4 |
90 11 |
|
|
їх значень методом |
матриці; F(fi(aij))-середнє |
-3 -6 -98 -23 -24 |
|||||
|
вибору |
геометричне значення fi(aij) |
10 34 32 |
31 69 |
||||
10 |
Впорядкувати |
fi(aij)-добуток елементів у |
-1 |
-5 -47 -8 |
-1 |
|||
|
елементи стовпців |
кожному рядку під |
-4 -98 –90 -45 -78 |
|||||
|
матриці за спаданням |
допоміжною діагоналлю |
-3 |
-2 |
|
-5 |
-9 |
-4 |
|
їх значень методом |
матриці; F(fi(aij))-середнє |
-8 -67 –33 -91 -40 |
|||||
|
обміну |
арифметичне значення |
-2 -58 –11 -65 -77 |
|||||
|
|
fi(aij) |
|
|
|
|
|
|
11 |
Впорядкувати |
fi(aij)-середнє арифметичне |
1 |
16 |
21 11 |
6 |
||
|
елементи рядків |
значення елементів у |
2 17 22 12 |
7 |
||||
|
матриці за зростанням |
кожному стовпці під |
3 18 23 13 |
8 |
||||
|
їх значень методом |
головною діагоналлю |
4 19 24 14 |
9 |
||||
|
вставки |
матриці; F(fi(aij))-добуток |
5 |
20 |
25 15 10 |
|||
|
|
fi(aij) |
|
|
|
|
|
|
12 |
Впорядкувати |
fi(aij)-середнє геометричне |
0 |
2 |
-2 |
89 |
21 |
|
|
елементи стовпців |
значення елементів в |
-1 -4 |
|
36 41 71 |
|||
|
матриці за спаданням |
кожному рядку над |
56 |
93 |
|
51 -2 -51 |
||
|
їх значень методом |
головною діагоналлю |
1 |
3 |
|
-8 |
0 |
9 |
|
обміну |
матриці; F(fi(aij))-сума fi(aij) |
23 |
41 |
|
5 |
8 |
-2 |
13 |
Впорядкувати |
fi(aij)-середнє арифметичне |
12 |
46 |
|
–23 72 -5 |
||
|
елементи рядків |
значення елементів у |
59 |
7 |
|
-8 |
0 |
67 |
|
матриці за спаданням |
кожному стовпці над |
7 -8 -4 -97 -55 |
|||||
|
їх значень методом |
допоміжною діагоналлю |
77 |
-1 -5 34 -8 |
||||
|
вставки |
матриці; F(fi(aij))-добуток |
0 |
22 |
|
27 |
24 |
24 |
|
|
fi(aij) |
|
|
|
|
|
|
14 |
Впорядкувати |
fi(aij)-сума елементів у |
87 |
98 |
|
57 29 |
95 |
|
|
елементи рядків |
кожному стовпці під |
-8 |
59 |
-2 |
9 |
-11 |
|
|
матриці за зростанням |
допоміжною діагоналлю |
6 10 |
|
20 59 -23 |
|||
|
їх значень методом |
матриці; F(fi(aij)) -середнє |
12 |
13 |
|
51 |
46 |
-7 |
|
обміну |
геометричне значення fi(aij) |
-2 |
87 |
69 |
90 |
-3 |
|
15 |
Впорядкувати |
fi(aij)-добуток елементів у |
50 |
98 |
|
-4 85 -8 |
||
|
елементи стовпців |
кожному рядку над |
40 |
73 |
|
-2 -9 -19 |
||
|
матриці за зростанням |
головною діагоналлю; |
1 |
6 |
|
73 21 |
0 |
|
|
їх значень методом |
F(fi(aij))-середнє |
0 |
25 |
|
2 -5 -3 |
||
|
вибору |
арифметичне значення |
99 |
19 |
|
95 92 -7 |
||
|
|
fi(aij) |
|
|
|
|
|
|
16 |
Впорядкувати |
fi(aij)-сума елементів у |
3 |
5 |
|
9 |
24 |
2 |
|
елементи рядків |
кожному стовпці під |
-23 0 |
37 29 10 |
||||
|
матриці за спаданням |
головною діагоналлю |
0 |
1 |
|
4 |
-2 |
-5 |
|
їх значень методом |
матриці; F(fi(aij))-середнє |
-5 -83 –74 82 -1 |
|||||
|
вставки |
геометричне значення fi(aij) |
11 88 |
-5 |
81 -39 |
|
|
|
|
|
|
|
|
43 |
|
|
|
|
|
|
|
|
|
17 |
Впорядкувати |
fi(aij)-середнє геометричне |
66 |
21 |
-3 |
-1 |
|
90 |
|
елементи стовпців |
значення елементів у |
1 |
74 -2 |
80 -1 |
|||
|
матриці за зростанням |
кожному рядку матриці; |
10 |
30 20 -50 91 |
||||
|
їх значень методом |
F(fi(aij))-середнє |
2 |
4 |
5 |
81 |
|
0 |
|
обміну |
арифметичне значення |
33 |
69 -5 |
51 24 |
|||
|
|
fi(aij) |
|
|
|
|
|
|
18 |
Впорядкувати |
fi(aij)-середнє арифметичне |
33 |
-5 -9 -20 -11 |
||||
|
елементи рядків |
значення елементів у |
0 -42 86 83 71 |
|||||
|
матриці за спаданням |
кожному стовпці над |
-6 |
-9 33 |
13 22 |
|||
|
їх значень методом |
допоміжною діагоналлю; |
52 |
-5 -7 |
53 19 |
|||
|
вибору |
F(fi(aij))- добуток fi(aij) |
-3 |
98 72 |
68 |
|
0 |
|
19 |
Впорядкувати |
fi(aij)-середнє геометричне |
34 |
45 65 23 98 |
||||
|
елементи стовпців |
значення елементів у |
1 |
-4 67 -3 -18 |
||||
|
матриці за зростанням |
кожному рядку над |
23 |
-5 -1 |
94 -25 |
|||
|
їх значень методом |
головною діагоналлю; |
2 |
24 |
–4 |
79 -63 |
||
|
вставки |
F(fi(aij))-сума fi(aij) |
10 |
29 |
25 |
30 |
-6 |
|
20 |
Впорядкувати |
fi(aij)-добуток елементів у |
19 |
62 |
–45 -1 |
|
84 |
|
|
елементи рядків |
кожному стовпці під |
23 |
54 |
-4 -2 |
68 |
||
|
матриці за спаданням |
головною діагоналлю |
36 |
39 |
96 94 97 |
|||
|
їх значень методом |
матриці; F(fi(aij))-середнє |
-3 |
-8 |
-4 |
-6 -22 |
||
|
обміну |
арифметичне значення |
98 |
-5 -3 |
0 |
11 |
||
|
|
fi(aij) |
|
|
|
|
|
|
21 |
Впорядкувати |
fi(aij)-добуток елементів у |
22 |
41 |
45 -45 -49 |
|||
|
елементи стовпців |
кожному рядку над |
5 |
1 |
3 |
-2 |
|
0 |
|
матриці за зростанням |
допоміжною діагоналлю |
34 |
97 |
48 72 -1 |
|||
|
їх значень методом |
матриці; F(fi(aij))-сума fi(aij) |
-3 |
-7 |
5 |
92 |
|
20 |
|
вибору |
|
0 -3 -57 |
9 |
|
1 |
||
22 |
Впорядкувати |
fi(aij)-середнє арифметичне |
30 |
31 |
36 |
63 |
|
-2 |
|
елементи рядків |
значення елементів у |
2 24 |
-3 -7 -1 |
||||
|
матриці за спаданням |
кожному стовпці матриці; |
45 |
28 |
-98 |
2 |
|
-8 |
|
їх значень методом |
F(fi(aij))-середнє |
0 |
-1 -2 -3 93 |
||||
|
обміну |
геометричне значення fi(aij) |
11 |
10 72 85 66 |
||||
23 |
Впорядкувати |
fi(aij)-сума елементів у |
31 |
65 |
–83 -2 |
|
-85 |
|
|
елементи стовпців |
кожному рядку над |
9 -2 11 -4 70 |
|||||
|
матриці за зростанням |
головною діагоналлю |
52 |
73 |
-8 -1 60 |
|||
|
їх значень методом |
матриці; F(fi(aij))-середнє |
57 |
83 |
-1 |
82 |
|
50 |
|
вставки |
геометричне значення fi(aij) |
1 -3 -2 78 -9 |
|||||
24 |
Впорядкувати |
fi(aij)-добуток елементів у |
10 |
32 |
1 |
-8 |
|
-1 |
|
елементи рядків |
кожному стовпці під |
2 |
4 |
91 -82 96 |
|||
|
матриці за спаданням |
допоміжною діагоналлю |
33 |
62 -1 |
-8 |
|
0 |
|
|
їх значень методом |
матриці; F(fi(aij))-середнє |
5 |
-5 |
6 |
-6 |
|
7 |
|
обміну |
арифметичне значення |
-19 |
0 |
3 |
-22 |
-3 |
|
|
|
fi(aij) |
|
|
|
|
|
|
25 |
Впорядкувати |
fi(aij)-середнє геометричне |
9 |
24 |
-2 |
86 |
-3 |
|
|
|
|
|
|
|
|
|
|
44 |
|
|
|
|
|
|
|
|
|
||
|
елементи стовпців |
значення елементів у |
40 |
|
49 |
-4 |
-3 |
0 |
||
|
матриці за спаданням |
кожному рядку під |
27 |
|
-76 77 |
-1 69 |
||||
|
їх значень методом |
головною діагоналлю |
71 |
|
-89 -94 -51 50 |
|||||
|
вставки |
матриці; F(fi(aij))-сума fi(aij) |
2 |
|
96 |
42 |
36 -1 |
|||
26 |
Впорядкувати |
fi(aij)-середнє арифметичне |
7 |
|
6 -2 89 21 |
|||||
|
елементи рядків |
значення елементів в |
-1 -4 |
|
11 41 71 |
|||||
|
матриці за зростанням |
кожному рядку під |
56 |
|
87 |
|
51 -3 -51 |
|||
|
їх значень методом |
головною діагоналлю |
1 |
|
3 |
|
-8 |
9 |
|
6 |
|
обміну |
матриці; F(fi(aij))-сума fi(aij) |
12 |
|
33 |
|
2 |
3 |
-2 |
|
27 |
Впорядкувати |
fi(aij)-сума елементів у |
87 |
|
98 |
|
57 29 |
|
95 |
|
|
елементи стовпців |
кожному стовпці під |
18 |
|
59 |
20 |
9 |
|
11 |
|
|
матриці за зростанням |
допоміжною діагоналлю |
6 |
10 |
|
20 59 -23 |
||||
|
їх значень методом |
матриці; F(fi(aij)) -середнє |
12 |
|
13 |
|
51 |
46 |
|
17 |
|
вставки |
геометричне значення fi(aij) |
12 |
|
87 |
69 90 |
|
23 |
||
28 |
Впорядкувати |
fi(aij)-середнє арифметичне |
66 |
|
21 |
-3 |
-1 |
|
90 |
|
|
елементи стовпців |
значення елементів у |
1 |
|
74 |
-2 |
80 -1 |
|||
|
матриці за спаданням |
кожному рядку матриці; |
10 |
|
30 |
20 -50 91 |
||||
|
їх значень методом |
F(fi(aij))-добуток fi(aij) |
2 |
|
4 |
|
5 |
81 |
|
0 |
|
обміну |
|
33 |
|
69 |
-5 |
51 24 |
|||
29 |
Впорядкувати |
fi(aij)-середнє геометричне |
34 |
|
45 |
|
65 23 98 |
|||
|
елементи стовпців |
значення елементів у |
1 |
|
-4 67 -3 -18 |
|||||
|
матриці за зростанням |
кожному рядку над |
23 |
|
-5 -1 |
94 -25 |
||||
|
їх значень методом |
головною діагоналлю; |
2 |
|
24 |
|
–4 79 -63 |
|||
|
вибору |
F(fi(aij))-сума fi(aij) |
10 |
|
29 |
|
25 30 |
-6 |
||
30 |
Впорядкувати |
fi(aij)-сума елементів у |
22 |
|
41 |
|
45 -45 -49 |
|||
|
елементи рядків |
кожному рядку над |
5 |
|
1 |
|
3 |
-2 |
|
0 |
|
матриці за зростанням |
допоміжною діагоналлю |
34 |
|
97 |
|
48 72 -1 |
|||
|
їх значень методом |
матриці; F(fi(aij))-добуток |
-3 |
|
-7 |
|
5 |
92 |
|
20 |
|
вибору |
fi(aij) |
0 |
-3 |
-57 |
9 |
|
1 |
||
31 |
Впорядкувати |
fi(aij)-середнє арифметичне |
30 |
|
31 |
|
36 |
63 |
|
-2 |
|
елементи рядків |
значення елементів у |
2 |
24 |
|
-3 |
-7 |
|
-1 |
|
|
матриці за спаданням |
кожному стовпці матриці; |
45 |
|
28 |
|
-98 |
2 |
|
-8 |
|
їх значень методом |
F(fi(aij))-середнє |
0 |
|
-1 -2 -3 93 |
|||||
|
обміну |
геометричне значення fi(aij) |
11 |
|
10 |
72 85 66 |
||||
32 |
Впорядкувати |
fi(aij)-добуток елементів у |
10 |
|
32 |
1 |
-8 |
|
-1 |
|
|
елементи рядків |
кожному стовпці під |
2 |
|
4 |
|
91 -82 96 |
|||
|
матриці за спаданням |
допоміжною діагоналлю |
33 |
|
62 |
-1 |
-8 |
|
0 |
|
|
їх значень методом |
матриці; F(fi(aij))-середнє |
5 |
|
-5 |
|
6 |
-6 |
|
7 |
|
обміну |
арифметичне значення |
-19 |
0 |
|
3 |
-22 |
-3 |
||
|
|
fi(aij) |
|
|
|
|
|
|
|
|
33 |
Впорядкувати |
fi(aij)-добуток елементів у |
6 |
|
34 |
|
12 |
70 |
|
-1 |
|
елементи стовпців |
кожному рядку під |
-7 |
|
97 80 99 -99 |
|||||
|
матриці за зростанням |
головною діагоналлю |
1 |
|
6 |
|
-3 |
2 |
|
-8 |
|
їх значень методом |
матриці; F(fi(aij))-сума fi(aij) |
3 |
|
33 |
|
-1 |
0 |
-78 |
45
|
вставки |
|
-3 |
-5 |
-8 |
|
-56 -23 |
|
34 |
Впорядкувати |
fi(aij)-сума елементів у |
44 |
-2 |
-5 |
|
38 –91 |
|
|
елементи рядків |
кожному стовпці над |
2 |
0 |
6 |
|
3 |
22 |
|
матриці за зростанням |
допоміжною діагоналлю |
13 |
1 |
-4 |
|
90 11 |
|
|
їх значень методом |
матриці; F(fi(aij))-середнє |
-3 -6 -98 -23 -24 |
|||||
|
вибору |
геометричне значення fi(aij) |
10 |
34 32 |
31 69 |
|||
35 |
Впорядкувати |
fi(aij)-добуток елементів у |
90 |
7 |
89 |
|
-2 |
17 |
|
елементи рядків |
кожному стовпці матриці; |
1 |
-4 |
8 |
|
56 32 |
|
|
матриці за спаданням |
F(fi(aij))-середнє арифме- |
-4 |
-6 –99 |
19 |
39 |
||
|
їх значень методом |
тичне значення fi(aij) |
2 |
4 |
-7 |
|
0 |
75 |
|
вставки |
|
11 |
41 22 |
80 -5 |
46
ІНСТРУКЦІЯ ДО ЛАБОРАТОРНОЇ РОБОТИ № 4
ОБРОБКА СИМВОЛЬНИХ РЯДКІВ. РОБОТА З ФАЙЛАМИ
Мета роботи – вивчити елементи мови Сі, рядки, рядкові константи, принципи потокового вводу-виводу, стандартні файли і функції для роботи з ними.
КОРОТКІ ТЕОРЕТИЧНІ ДАНІ
1.1. Ввід-вивід.
В стандарті мови Сі відсутні засоби вводу-виводу. Всі операції вводувиводу реалізуються за допомогою функцій, які знаходяться в бібліотеці мови Сі, яка є в складі конкретної версії системи програмування Сі. Особливістю мови Сі є відсутність заздалегідь спланованих структур файлів. Всі файли розглядаються як неструктурована послідовність байтів. Такий підхід до організації файлів дозволив розповсюдити поняття файлу на різні пристрої. Таким чином одні і ті ж функції бібліотеки мови Сі використовуються як для обміну даними з файлами, так і для обміну з пристроями.
Бібліотека мови Сі підтримує три рівні вводу-виводу: потоковий ввідвивід, ввід-вивід нищого рівня і ввід-вивід для консолі і портів. Останній рівень забезпечує зручний спеціалізований обмін даними з монітором і портами вводу-виводу.
1.2. Потоковий ввід-вивід
На рівні потокового вводу-виводу обмін даними відбувається побайтно. Такий ввід-вивід можливий як для власне пристроїв побайтного обміну (друкуючі пристрої, монітор), так і для файлів на диску, хоча пристрої зовнішньої памяті є пристроями поблочного обміну, тобто за одне звернення до пристрою відбувається зчитування чи запис фіксованої порції даних. Найчастіше мінімальною порцією даних, яка приймає участь в обміні даних, є блок розміром 512 байт або 1024 байт. При вводі з диску (при читанні з файлу) дані розміщуються в буфер операційної системи, а потім побайтно або певними частинами передаються програмі користувача.
Функції бібліотеки вводу-виводу мови Сі, які підтримують обмін даними з файлами на рівні потоку, дозволяють обробляти дані різних розмірів і форматів, забезпечуючи при цьому буферизований ввід і вивід. Таким чином, потік – це файл разом з доступними засобами буферизації.
Працюючи з потоком можна виконувати наступні дії:
-відкривати і закривати потоки (звязувати вказівники на потоки з конкретними файлами);
-вводити і виводити: символ, рядок, форматовані дані, порцію даних будь-якої довжини;
-аналізувати помилки потокового вводу-виводу і умови досягнення кінця потоку (кінця файлу);
-керувати буферизацією потоку і розміром буферу;
-отримувати і встановлювати вказівник (індикатор) поточної позиції в
потоці.
47
Для того щоб можна було використовувати функції бібліотеки вводу виводу мови Сі, в програму необхідно підключити заголовочний файл stdio.h (#include<stdio.h>), який містить прототипи функцій вводу-виводу, а також визначення констант, типів і структур, необхідних для роботи функцій обміну з потоком.
1.3. Відкриття і закриття потоку
Перш ніж почати роботу з потоком, його необхідно ініціалізувати, тобто відкрити. При цьому потік зв'язується в програмі зі структурою визначеного типу FILE. Визначення структурного типу FILE є в заголовочному файлі stdio.h. В структурі FILE містяться компоненти, за допомогою яких ведеться робота з потоком, зокрема: вказівник на буфер, вказівник (індикатор) поточної позиції в потоці і інша інформація.
При відкритті потоку в програму повертається вказівник на потік, який є вказівником на об'єкт структурного типу FILE. Цей вказівник ідентифікує потік у всіх наступних операціях.
Вказівник на потік, наприклад ff, повинен бути оголошений в програмі наступним чином:
#include<stdio.h> FILE *ff;
Вказівнпик на потік набуває значення в результаті виконання функції відкриття потоку:
ff = fopen (імя_файлу, режим_відкриття);
Параметри імя_файлу і режим_відкритт є вказівниками на масив символів, які містять відповідно ім'я файлу, зв'язаного з потоком, і дані про режим відкриття. Також ці параметри можуть задаватися і безпосередньо у вигляді рядків при виклику функції відкриття файлу:
ff = fopen (“test.txt”,”r”);
де test.txt – ім'я деякого файлу, який зв'язаний з потоком.
r – визначення одного з режимів роботи з файлом (тип доступу до потоку). Стандартно файл, який зв'язаний з потоком, можна відкрити в одному з
нижче перелічених режимів:
“w” – новий текстовий файл відкривається для запису. Якщо файл вже існував, то попередній вміст витирається, файл створюється по новому;
“r” – існуючий текстовий файл відкривається лише для читання;
“a” – текстовий файл відкривається (або створюється, якщо файлу немає) для внесення в нього нової інформації (добавлення в кінець файлу). На відміну від режиму “w” режим “а” дозволяє відкривати вже існуючий файл, не знищуючи його попередньої версії, і записувати в кінець файлу;
“w+” – новий текстовий файл відкривається для запису і наступних багаторазових виправлень. Якщо файл вже існує, то попередній зміст витирається. Наступні після відкриття файлу записи і читання з нього не допустимі в будь-якому місці файлу, зокрема запис дозволений і в кінець файлу, тобто файл може збільшуватись («рости»);
48
“r+” – існуючий текстовий файл відкривається як для читання, так і для запису в будь-якому місці файлу; але в цьому режимі неможливий запис в кінець файлу, тобто неможливе збільшення розміру файлу;
“а+” – текстовий файл відкривається або створюється (якщо файлу немає) і стає доступним для змін, тобто для запису і для читання в будь-якому місці; при цьому на відміну від режиму “w+” можна відкрити існуючий файл і не знищувати його змісту; на відміну від режиму “r+” в режимі “а+” можна робити запис в кінець файлу, тобто збільшувати його розміри.
Потік можна відрити в текстовому або в двійковому (бінарному) режимі. При відкритті потоку можуть виникати наступні помилки: вказаний файл, зв'язаний з потоком, не знайдений (для режиму «читання»); диск заповнений або диск захищений від запису і ін. Необхідно також відмітити, що при виконанні функції fopen() відбувається виділення динамічної пам'яті. При її відсутності встановлюється ознака помилки “Not enough memory” (недостатньо пам'яті). В перелічених випадках вказівник на потік в будь-якому
режимі, відмінному від аварійного, ніколи не буває рівним NULL.
Наведемо типову послідовність операторів, яка використовується при відкритті файлу, зв'язаного з потоком:
if ((ff = fopen(“test.txt”, “w”)) == NULL)
{
perror(“помилка відкриття файлу test.txt \n”); exit(0);
}
де NULL – нульовий вказівник, визначений у файлі stdio.h.
Після того як файл відкритий, з ним можна працювати, записуючи чи зчитуючи з нього інформацію (в залежності від режиму роботи). Відкриті на диску файли після закінчення роботи з ними рекомендується закривати явно. Для цього використовується бібліотечна функція:
int fclose(вказівник_на_потік);
Відкритий файл можна відкрити повторно (наприклад, для зміни режиму роботи з ним) тільки після того, як файл буде закритий за допомогою функції fclose( ).
1.4. Стандартні функції для роботи з файлами.
Для вводу-виводу даних за допомогою стандартних потоків в бібліотеці мови С визначені наступні функції:
getchar()/putchar() – ввід-вивід окремого символа; gets()/puts() –ввід-вивід рядка;
scanf()/printf() – ввід-вивід в режимі форматування даних.
При читанні з файлу за допомогою функції getchar() може бути досягнутий кінець файлу. В цьому випадку операційна система у відповідь на спробу читання символу передає функції getchar() значення EOF (end of file).
49
1.5. Робота з файлами на диску.
Аналогічним чином (так як це робиться при роботі зі стандартними потоками вводу-виводу) можна здійснювати роботу з файлами на диску. З цією метою в бібліотеці мови С включені наступні функції:
fgetc(), getc() – ввід(читання) одного символу з файлу; fputc(), puts() – запис одного символу в файл; fprintf() – форматований вивід в файл;
fscanf() – форматований ввід (читання) з файлу; fgets() – ввід (читання) рядка з файлу;
fputs() –запис рядка у файл.
2.ЗАВДАННЯ
2.1.Домашня пiдготовка до роботи
1.Ознайомитися з організацією роботи вводу-виводу в мові Cі.
2.Ознайомитися з потоковим вводом, відкриттям і закриттям потоку в
мові Cі.
3.Ознайомитися з стандартними функціями для роботи з файлами в мові
Cі.
4.Дано текстовий файл, в якому міститься програма мовою С (Лабораторна робота №3). Скласти блок-схеми алгоритмів та програму мовою С для обробки текстового файлу з використанням розроблених функцій для роботи зі стрічками. Оформити виконання одного із завдань у вигляді підпрограми. Словами є слова в коментарях, назви ідентифікаторів, зарезервовані слова, які розділяються між собою згідно із синтаксисом мови С. Дані для роботи беруться з табл.1 за вказівкою викладача..
|
Таблиця 1 |
№ п/п |
Завдання |
1 |
Сформувати і вивести на екран текстовий файл, в якому вилучити |
|
символи “(” і “)”. Знайти кількість приголосних літер у кожному рядку. |
2 |
Сформувати і вивести на екран текстовий файл, в якому всі символи “;” |
|
замінюються символом “!”. Обчислити суму цифр які зустрічаються в |
|
тексті. |
3 |
Сформувати і вивести на екран текстовий файл, в якому містяться слова |
|
які починаються на голосні літери. Підрахувати кількість слів, в яких |
|
кількість символів більша трьох. |
4 |
Сформувати і вивести на екран текстовий файл, в якому всі операторні |
|
дужки “{” і “}” замінюються на “Begin” і “End” відповідно. Підрахувати |
|
кількість операторів циклу for і умовних операторів if. |
5 |
Сформувати і вивести на екран текстовий файл, в якому після кожного |
|
рядка буде виведена цифра яка міститиме значення кількості літер в |
|
рядку. Замінити всі символи “(” і “)” на “[” і “]” відповідно. |
6 |
Сформувати і вивести на екран текстовий файл, в якому символ “=” |
|
замінити на символ “==”. Вивести список всіх операторів циклу |
|
використаних в програмі (без повторень). |
50
7Сформувати і вивести на екран текстовий файл, в якому пробіли замінюються символом підкреслення. Підрахувати кількість арифметичних операцій (+,-,*,/) у файлі.
8Сформувати і вивести на екран текстовий файл, в якому символи “[” і “]” замінити на “(*” і “*)”. Вивести на екран номера рядків, в яких зустрічаються оператори циклів і умовний оператор.
9Сформувати і вивести на екран текстовий файл, в якому залишити лише в одній кількості зарезервовані слова, решту замінити на символ “***”. Вивести на екран номери рядків, в яких зустрічаються цифри.
10Сформувати і вивести на екран текстовий файл, в якому усі символи замінити на числа від 0 до 9. Знайти суму всіх чисел в кожному рядку.
11Сформувати і вивести на екран текстовий файл зі стрічок, в яких вилучаються слова “for”. Вивести на екран номера рядків, в яких зустрічаються слова “printf” та “scanf”.
12Сформувати і вивести на екран текстовий файл в якому не зустрічаються слова “for”, “while”, “іf”, “else”. Підрахувати кількість рядків, в яких кількість приголосних літер парна.
13Сформувати і вивести на екран текстовий файл в якому усі голосні літери замінити на символ “*”. Вивести на екран кількість літер в кожному рядку файлу.
14Сформувати і вивести на екран текстовий файл що містить лише послідовності символів, які містяться всередині операторних дужок “{” – “}”. Перевести в цих рядках символи в їх числове представлення і підрахувати їх суму.
15Сформувати і вивести на екран текстовий файл в якому вилучити слова “while”, “if”, “for”. Вивести на екран рядки в яких містяться цифри і в кінці рядка дописати їх суму.
16Сформувати і вивести на екран текстовий файл в якому всі приголосні літери замінити символом “@”. Вивести на екран рядки з парною кількістю символів.
17Сформувати і вивести на екран текстовий файл в якому символи “+” замінюються словом “SUMA”, символи “-” замінюються символом “MULT”, символи “/” – замінюються символом “DIV”. Підрахувати і вивести на екран кількість символів “=” у кожному рядку.
18Сформувати і вивести на екран текстовий файл, в якому є лише слова які починаються на голосні літери. Вивести на кран всі числа які зустрічаються у файлі.
19Сформувати і вивести на екран текстовий файл в якому голосні літери замінити на символ “1” а приголосні на симврол “0”. Підрахувати і вивести на екран кількість символів, які не являються символом “1” і “0”.
20Сформувати і вивести на екран текстовий файл в якому видалити операторні дужки “{” і “}”. Підрахувати і вивести на екран кількість голосних і кількість приголосних літер в рядку.
21Сформувати і вивести на екран текстовий файл в якому кожне число