- •Лабораторна робота №10
- •Порядок виконання роботи
- •1. Варіанти завдання
- •2. Теоретичні відомості
- •Int len (char e[ ])
- •Int len (char *s)
- •Void invert(char e[ ])
- •Void main( )
- •Int index(char [ ], char [ ]);
- •Int row(char c1[ ], char c2[ ])
- •Void cone(char *c1, char *c2)
- •Void substr(char *c1, char *c2, int n, int k)
- •3. Приклад розв’язання задачі на еом (варіант 3, завдання №7)
- •Void ChangeStr(char **s1,int m)
- •3.3 Результати роботи програми
- •Контрольні запитання
- •Лабораторна робота №11
- •Тема: Особливості роботи з одномірними динамічними масивами
- •Мета роботи: Отримання практичних навиків у роботі з одномірними динамічними масивами в мові c
- •Порядок виконання роботи
- •1. Варіанти завдання
- •2. Теоретичні відомості
- •Void main()
- •3. Приклад розв’язання задачі на еом (варіант №30)
- •3.2. Визначення змінних програми
- •3.3. Розробка тексту програми Крім файлів:
- •Int main(void) {
- •3.4. Налагодження програми
- •3.5. Результати роботи програми
- •Контрольні запитання
- •2. Теоретичні відомості
- •Int**array;
- •Void quart(int n, float * х)
- •Void main()
- •Void quart (int n, float X [ ])
- •3. Приклад розв’язання задачі на еом (варіант №30)
- •3.1. Розробка алгоритму вирішення
- •3.2. Представлення матриці в пам'яті
- •3.3. Визначення змінних програми (варіант 1)
- •Int size;
- •3.4. Розробка тексту програми (варіант 1)
- •Void fill(int *, int);
- •Void fill(int *a, int s) {
- •3.5. Відмінності для варіанту реалізації 3
- •Void fill(int far **, int);
- •Void fill(int far **a, int s) {
- •3.6. Налагодження програми
- •3.7. Результати роботи програми
- •Контрольні запитання
- •Лабораторна робота №13
- •Порядок виконання роботи
- •1. Варіанти завдання Завдання 1
- •2. Теоретичні відомості
- •Void main( )
- •Void main( )
- •Void main( )
- •3.Стандартні функції для роботи зі стрічками (бібліотека string.H)
- •4. Приклади використання стандартних функцій для роботи зі стрічками
- •Функція аналогічна до stpcpy, strcpy, strncat
- •Функція аналогічна до strcspn, strrchr, strspn, strstr
- •Int far _fstrcmp(const char far *s1, const char far *s2);
- •Функція аналогічна до stpcpy, strncpy
- •- Size _t maxlen - максимальне число символів, які копіюємо з вихідної стрічки в результуючу.
- •Приклад: /*strncpy/cpp*/
- •5. Приклад розв’язання задачі на еом (варіант 2)
- •5.1. Розробка алгоритму вирішення
- •5.2 Розробка тексту програми
- •Int main()
- •4.3 Результати роботи програми
- •Контрольні запитання
- •Лабораторна робота №14
- •Порядок виконання роботи
- •1. Варіанти завдання
- •2. Теоретичні відомості
- •Void main( )
- •Приклади розробки функцій для обробки текстової інформації
- •Int len (char e[ ])
- •Int len (char *s)
- •Void invert(char e[ ])
- •Void main( )
- •Int index(char [ ], char [ ]);
- •Int row(char c1[ ], char c2[ ])
- •Void cone(char *c1, char *c2)
- •Void substr(char *c1, char *c2, int n, int k)
- •3. Приклад розв’язання задачі на еом (завдання 2, варіант 7)
- •Void ChangeStr(char **s1,int m)
- •4.3 Результати роботи програми
- •Контрольні запитання
- •Лабораторна робота №15
- •Порядок виконання роботи
- •Варіанти завдання
- •Теоретичні відомості
- •Int pole2 ;
- •Приклад розв’язання задачі на еом (варіант №30)
- •Розробка алгоритму розв’язання задачі
- •Визначення змінних програми
- •Розробка тексту програми Текст програми починаємо з підключення файлу stdio.H.
- •Int main(void) {
- •If (!strcmp(mm[n].Name,"***")) break;
- •Контрольні запитання
- •Лабораторна робота №16
- •Порядок виконання роботи
- •1. Варіанти завдання
- •Теоретичні відомості Читання і запис текстових файлів
- •Int main ()
- •Приклад розв’язання задачі на еом (варіант 6)
- •Контрольні запитання
- •Лабораторна робота №17
- •Порядок виконання роботи
- •Варіанти завдання
- •Теоретичні відомості Читання і запис двійкових файлів
- •Відкриття двійкових фалів
- •Файли з послідовним доступом
- •Запис даних у файл c послідовним доступом
- •Int main()
- •If ( ! outf)
- •Int array[100];
- •Int main()
- •If ( ! inpf)
- •Int array[100];
- •Файли з довільним доступом
- •Int main()
- •If ( ! inpf)
- •Int main()
- •If ( ! outf)
- •Передача файлів між комп’ютерами.
- •Програмне підтвердження зв’язку
- •Перекачування файлу
- •Void send_file(fname)
- •Void wait(port)
- •Int port;
- •Прийом файлу
- •Void rec_file()
- •If(ferror(fp)) {
- •Void get_file_name(f)
- •Приклад розв’язання задачі на еом (варіант 10)
- •Контрольні питання
- •Література
Void fill(int *, int);
/*** головна функція ***/
main() {
int *Ar, /* покажчик на початок масиву */
*Cr; /* поточний покажчик у масиві */
int і, /* лічильник елементів */
S; /* розмірність матриці */
/* задання розмірності */
printf("Введіть розмірність матриці >");
scanf("%d",&S);
/* перевірка розмірності */
if (S<=0) {
printf("Розмірність занадто мала\n");
exit(0);
}
if (S>24) {
printf("Розмірність занадто велика\n");
exit(0);
}
printf("S=%d\n",S);
/* виділення пам'яті */
if ((Ar=(int *)malloc(sizeof(int)*S*S))==NULL) {
printf("Недостача пам'яті\n");
exit(0);
}
/* звертання до функції заповнення матриці */
fill(Ar,S);
/* висновок матриці */
for (Cr=Ar, i=0; i<S*S; Cr++,i++) {
printf("%3d",*Cr);
if (i%S==S-1) putchar('\n');
}
/* звільнення пам'яті */
free(Ar);
return 0;
}
/*** функція заповнення матриці ***/
/* параметри: A - покажчик на початок масиву
s - розмірність матриці */
Void fill(int *a, int s) {
int *C; /* поточний покажчик у масиві */
short l, r; /* рядок і стовпець */
int k=1; /* поточний член ЛП */
for (l=0,C=A; l<s; l++) /* перебір стрічок */
for (r=0; r<s; r++, C++) /* перебір стовпців */
/* умова нульового значення */
if ((r>=max(l,s-l-1))||(r<=min(l,s-l-1))) *C=0;
else *C=k++;
/* кінець перебору стрічок */
/* кінець перебору стовпців * /}
3.5. Відмінності для варіанту реалізації 3
У тексті програми для варіанту реалізації 3 для спрощення виключаємо всі перевірки коректності. Опис реалізації ми обмежуємо тільки відмінностями від варіанту 1.
Покажчик Ar у функції main() - покажчик на масив покажчиків, отже, його тип - int**. Виділення пам'яті ведеться в кілька прийомів: спочатку виділяється пам'ять для масиву з S покажчиків, а потім у циклі - S виділяється пам'ять для масиву з S цілих чисел, адреси виділених масивів записуються в елементи масиву покажчиків. При виводі матриці використовуються i і j - номери стрічки і стовпця і звернення до елементів матриці ведеться як до елементів 2-мірного масиву.
Перший параметр функції fill() - покажчик на покажчик на int. Це дає можливість використовувати номери стрічки і стовпця - l і r також і для звертання до елементів матриці.
#include <stdio.h>
#include <stdlib.h>
#include <alloc.h>
Void fill(int far **, int);
/*** головна функція ***/
main() {
int far **Ar; /* покажчик на масив покажчиків */
int і, j; /* рядок і стовпець */
int S; /* розмірність матриці */
/* введення розмірності */
printf("Enter S>"); scanf("%d",&S);
printf("S=%d\n",S);
/* виділення пам'яті для масиву покажчиків */
Ar=(int far **)malloc(sizeof(int *)*S);
/* виділення пам'яті для кожного рядка
і заповнення масиву покажчиків */
for (i=0; i<S; i++)
Ar[i]=(int far *)malloc(sizeof(int)*S);
/* звертання до функції заповнення матриці */
fill(Ar,S);
/* висновок матриці */
for (i=0; i<S; i++) {
for (j=0; j<S; printf("%3d",Ar[i][j++]) );
putchar('\n');
}
/* звільнення пам'яті рядків */
for ( і=0; і<S; free(Ar[і++]) );
/* звільнення пам'яті масиву покажчиків */
free(Ar);
return 0;
}
/*** функція заповнення матриці ***/
/* параметри: A - покажчик на масив покажчиків
s - розмірність матриці */