97083

Программа функції отримання вектору з матриці на мові С

Курсовая

Информатика, кибернетика и программирование

Головним у структурному програмуванні є те, що будь-який алгоритм можна побудувати за допомогою трьох структур - послідовності, розгалуження і повторення, тобто кожну частину програми можна перетворити в одну з трьох структур або їхню комбінацію так, щоб неструктурована частина програми зменшилась.

Русский

2015-10-13

1.75 MB

0 чел.

Зміст

Вступ……..………………………………………………………………..…...4
1 Теоретичний розділ………………………………………………….……...5
1.1 Типи даних………………………………………………………….……..5
1.1.1 Машинні типи даних…………………………………...…………….…5
1.1.2 Складні типи даних……………………………………………….……
.5
2 Масив………………….………………………………………………….….6
2.1 Ініціалізація масивів………………………………………………….…...7
2.2 Доступ до елементів масиву……………………………………….……..8
2.3 Багатомірні масиви…………………………………………………….….8
2.4 Характеристика масиву…………………………………………………...9
3 Рядок …………………………………………………………………..…...10
3.1 Оголошення символьних рядків……………………………………......10
3.2 Ініціалізація символьного рядка…………………………………...…...10
4 Структура…………………………………………………………...….…..12
5 Файли…………………………………………………………………….....13
5.1
 Типи файлів і оголошення файлових змінних………………………....13
5.2 Закриття файлів……………………………………………………….....14
5.3 Операції керування файлами………………………………………...….14
6. Вказівники…………………………………………………………………15
6.1 Операції з вказівниками…………………………………………………15

6.2 Розіменування  вказівника………………………………………………15
7 Лінійні списки………………………………………...……………………16
8.Нелінійні списки…………………………………………………...………17

8.1 Двійкове дерево…………………………………………………...……..17
8.2 Різновиди двійкових дерев……………………………………………...17

9 TIME.H…………………………………………………………………......19
9.1 Основні функції……………………………………………………….....20
9.2 Константи……………………………………………………………...…20
9.3 Типи даних…………………………………………………………….....21

10 Постановка задачі………………………………………………………………..22

11 Практична частина……………………………………………………...………..23

Висновок……………………………………………………………………........…......26

Література……………………………………………………………………....…........27

Додаток А……………………………………………………………………....….........28

Додаток Б(блок-схема)..………………………………………………………..............30

Додаток В(блок-схема).....………………………………………………………...........31

 

     


Вступ

С — мінімалістична мова програмування. Серед її головних цілей: можливість прямолінійної реалізації компіляції, використовуючи відносно простий компілятор, забезпечити низькорівневий доступ до оперативної пам'яті, формувати лише декілька інструкцій машинної мови для кожного елементу мови, і не вимагати обширної динамічної підтримки. У результаті, код С придатний для більшості системного програмного забезпечення, яке традиційно писалося асемблером. Мова С проектувалась з розрахунком на те, щоб використовуватись у системному програмуванні. Отже, вона не вимагає додаткового часу на виконання перевірок різноманітних умов, які ніколи не відбудуться у правильно написаній програмі, а забезпечує простий, прямий доступ до адреси будь якого об'єкта (наприклад, карти пам'яті, пристрою контролю регістрів), і вираження її джерельного коду може бути переведене у вигляд простої, примітивної машинної операції. Мова програмування С використовує бібліотеки, як основний засіб свого розширення. У С, бібліотека — набір функцій, котрі містяться в одному файлі. Кожна бібліотека, за звичай має заголовочний файл, в якому містяться прототипи функцій, присутніх у бібліотеці, яка може використовуватися, а також декларації спеціальних типів даних і макро-символів, що використовують ці функції. Для того, щоб програма використовувала бібліотеку, заголовний файл цієї бібліотеки має бути оголошений вгорі файлу із сирцевим кодом, і бібліотека має бути злінкованою з програмою.

Головним у структурному програмуванні є те, що будь-який алгоритм можна побудувати за допомогою трьох структур - послідовності, розгалуження і повторення, тобто кожну частину програми можна перетворити в одну з трьох структур або їхню комбінацію так, щоб неструктурована частина програми зменшилась. Після достатньої кількості таких перетворень ця частина програми або зникне взагалі, або стане непотрібною. Це справджується для простих програм, які характеризуються: одним входом; одним виходом; не містять недосяжних фрагментів програми (або точок); У цьому розумінні головні структури є простими програмами.

1 Теоретичний розділ

1.1 Типи даних

Тип даних — характеристика, яку явно чи неявно надано об'єкту (змінній, функції, полю запису, константі, масиву тощо). Тип даних визначає множину припустимих значень, формат їхнього збереження, розмір виділеної пам'яті та набір операцій, які можна робити над даними.

1.1.1 Машинн типи даних

У всіх комп'ютерах, заснованих на цифровій електроніці, інформація на найнижчому рівні представляється у вигляді бітів (із значенням 0 або 1). Найменша адресована одиниця інформації називається байт (зазвичай як октет, який містить 8 бітів). Одиниця інформації, яка оброблюється інструкціями машинного коду, називається словом (станом на 2006 рік, зазвичай по 32 або 64 біти). Більшість інструкцій сприймають слово якдвійкове число, щоб 32-бітне слово могло бути представлене беззнаковим цілим числом від 0 до 232(мінус)1, або знакове ціле від (мінус)231 до .231(мінус) Через наявність доповнюючого коду, машині не потрібно розрізняти знакове та беззнакове числа для більшості випадків.

Існує спеціальний набір арифметичних інструкцій, які використовують різні представлення бітів у слова, для операцій з рухомою крапкою.

1.1.2 Складні типи даних

Складні типи даних — це типи, які складаються з елементів, що відносяться до простих типів. До складних типів даних відносяться: масиви; множини; рядки; записи; файли; динамічні змінні; вказівники; лінійні списки (стеки, черги); нелінійні списки (двійкові дерева, несиметричні дерева, тексти, графи); процедурний тип; об'єкти.

2 Масив

Масив - це послідовність елементів одного типу даних, які розміщуються в суміжних комірках пам'яті, до кожного з яких можна доступитися за допомогою індексу, який додається до ідентифікатору. Це означає що, наприклад, для масиву, який складається з 5 значень типу int, не потрібно створювати 5 окремих змінних, де кожна буде з власним ідентифікатором. Замість того, ми можемо зберігати 5 різних значень одного типу, під одним унікальним ідентифікатором.

Наприклад, структура масиву під назвою “array” може бути представлений так:

Рисунок 1 – розміщення масиву в пам’яті

Кожен пустий прямокутник представляє собою елемент масиву типу int. Ці елементи нумеруються з 0 до 4, оскільки перший індекс масиву завжди 0. Як і звичайний тип даних масив повинен бути оголошений перед використанням. Типовий формат оголошення масиву наступний:

назва_типу ім’я [розмір];

де “назва_типу” це тип даних (такий як int, float...), ім’я це унікальний ідентифікатор і розмір – це кількість елементів в масиві, яка завжди сказується у квадратних дужках. Таким чином, наш масив з 5-и елементів буде створений таким чином:

int array [5];

Слід зазначити, що вказувати кількість елементів масиву можна лише за допомогою константного значенння, оскільки масиви не є динамічними блоками пам’яті і їх розмір має бути визначений до виконання програми.

2.1 Ініціалізація масивів

При створенні звичайних масивів в локальній області видимості (у функції, наприклад), якщо ми не визначемо значення елементів, вони будуть містити випадкові значення, отже їх вміст буде не визначений доки ми не занесемо туди конкретні значення.

Елементи глобальних і статичних масивів, ініціалізуються автоматично їхніми значеннями за замовчуванням, що для елементарних типів означає, що вони заповнюються нулями.

В обох випадках, глобальний наш масив чи локальний, коли ми його оголошуємо, ми маємо можливість задати йому початкові значення, для кожного його елемента. Наприклад:

int array [5] = { 1, 2, 4, 8, 16 };

Цей масив буде виглядати так:

Рисунок 2 – Розміщення заповненого масиву в пам`яті

Кількість значень між дужками { } не повинна бути більшою ніж розмір масиву, який ми задали раніше. При ініціалізації значень масиву, C дозволяє залишити квадратні дужки пустими. В такому випадку, компілятор буде вважати, що розмір масиву відповідатиме кількості заданих значень в фігурних дужках. Наприклад, такий вираз також створить масив з 5-ти елементів:

int array [] = { 1, 2, 4, 8, 16 };

2.2 Доступ до елементів масиву

Доступ до окремих елементів масиву і операції з ними здійснюються так ніби це звичайна змінна, яку можна модифікувати і зчитувати. Формат доступу до n-го елементу масиву виглядає так:

array[n]

Наприклад: щоб записати значення третього елементу масиву, ми маємо написати:

int array [5] = { 1, 2, 0, 8, 16 }; 

array[2] = 4; // привласнюємо значення 4 для третього елементу масиву

int a = array[2]; // у змінну a записується значення 3-го елементу масиву

Якщо спробуємо звернутися до шостого елементу нашого масиву, оскільки елементів всього п’ять ми вийдемо за рамки массиву. В C це не вважається синтаксичною помилкою, і компілятор нічього не повідомить і така помилка проявить себе лише в момент виконання програми.

2.3 Багатомірні масиви

Багатомірні масиви можна описати як "масиви масивів". Наприклад, двомірний масив можна розглядати як таблицю елементів, які мають однаковий тип даних.

Приклад оголошення масиву розміром 3 на 5 виглядатиме так:

int array [3][5];

   

Рисунок 3 - Розміщення заповненого багатовимірного масиву в пам`яті

Доступ до елементів аналогічний одномірному масиву, але задаватися буде порядковий номер у кожному вимірі. Багатовимірні масиви не мають обмежень у кількості вимірів, їх може бути більше ніж два.

2.4 Характеристика масиву

  •  Розмірність — кількість індексів елемента (одновимірний, двовимірний, ..., багатовимірний)
  •  Розмір — загальна кількість елементів у масиві.
  •  За типом поділяється на числовий та символьний.
  •  В кожній мові є свої правила опису масив.

В програмуванні масив — сукупність елементів одного типу даних, впорядкованих за індексами, які зазвичай репрезентовані натуральними числами, що визначають положення елемента в масиві.

Масив може бути одновимірним (вектором), та багатовимірним (наприклад, двовимірною таблицею), тобто таким, де індексом є не одне число, а кортеж (сукупність) з декількох чисел, кількість яких збігається з розмірністю масиву.

У переважній більшості мов програмування масив є стандартною вбудованою структурою даних.

3 Рядок

Рядок - це послідовність символів. Як відомо, послідовності в С представляються масивами або покажчиками. Програми на C зберігають  рядки як масиви типу char. Для оголошення  строкової змінної усередині програми просто оголосіть масив типу char з кількістю елементів, достатнім для зберігання необхідних символів.

char s[64];

Головна відмінність між символьними рядками та іншими типами масивів полягає в тому, що C визначає останній елемент масиву. Програми на C представляють кінець символьного рядка за допомогою символу NULL, який в C зображується як спеціальний символ '\ 0', або нульовий байт.

3.1 Оголошення символьних рядків

Символьний рядок у С являє собою масив елементів типу char, який закінчується символом (NULL). Масиви символів оголошуються так:

char назва_рядка[довжина_рядка];

Наприклад:

Char a[32];

const int len=80; char str[len];

Оскільки рядки є масивами символів, то назва рядка є вказівником на його перший елемент.

3.2 Ініціалізація символьного рядка

С дозволяє ініціалізувати масиви при оголошенні:

const char text[]=“Ми вивчаємо програмування”;

char slovo[11]=“University”;

char sl[]={‘U’,’n’, ‘i’,’v’,’e’,’r’,’s’,’i’,’t’,’y’,’\0’};

char tit[32]=“Hello, C++”;

Якщо кількість символів, що присвоюється рядку, менша від розміру масиву, більшість компіляторів С++ присвоюють символи NULL елементам рядкового ма сиву, що залишаються. Пізніше, в програмі, у цей масив можна буде вмістити довший рядок, обов'язково помістивши в кінці символ ‘\0’.


4 Структура

В програмуванні та комп'ютерних науках структури даних — це способи організації даних в комп'ютерах. Часто разом зі структурою даних пов'язується і специфічний перелікоперацій, що можуть бути виконаними над даними, організованими в таку структуру.

Правильний підбір структур даних є надзвичайно важливим для ефективного функціонування відповідних алгоритмів їх обробки. Добре побудовані структури даних дозволяють оптимізувати використання машинного часу та пам'яті комп'ютера для виконання найкритичніших операцій.

Підтримка базових структур даних, які використовуються в програмуванні, включена в комплекти стандартних бібліотек найбільш розповсюджених мов програмування.

Структура складається з даних різного типу, з якими зручно працювати, як з єдиним блоком. Наприклад, для обліку різних товарів у магазині потрібно знати їхні найменування, ціни, кількість. Усі ці дані можна записати в одну структуру. Наприклад, на мові С така структура матиме вигляд:

struct {

char name[20];

double price;

int quantity;

} A;

Структури широко використовуються в структурному програмуванні. В об'єктно-орієнтованому програмуванні поняття структури розширюються до поняття класу - складеного типу даних, який містить не лише самі дані, а й методи їхньої обробки.

 


5 Файли

Файл  - це сукупність даних, які розміщені на зовнішніх носіях.

Ключовими моментами в роботі з файлами є:

  •  відкриття файлу для роботи з ним;
  •  запис даних до файлу або читання з нього;
  •  закриття файлу після роботи з ним;
  •  керування створеними файлами в цілому – в найпростішому випадку це знищення файлу в процесі роботи програми та зміна поточної назви конкретного файлу.

Для будь-якої операції з файлами використовуються стандартні бібліотечні функції мови програмування С. Відповідно, прототипи всіх функцій, що забезпечують роботу з файлами, описані в бібліотечному заголовочному файлі stdio.h. Цей файл підключається до кожної програми в самому початку коду.

5.1 Типи файлів і оголошення файлових змінних

Файли класифікують за типом компонентів і за методом доступу до них. За типом компонентів розрізняють текстові та бінарні (двійкові) файли, а за методом доступу — файли послідовного і прямого доступу. Текстові файли призначені для збереження текстів, а бінарні файли використовуються для збереження даних різних типів.

Текстовий файл є сукупністю символьних рядків змінної довжини. Кожен рядок завершується маркером кінця рядка — спеціальною парою керуючих символів. Приклад текстового файла, що складається з двох рядків:

 Рисунок 4 – Текстовий файл, що є сукупністю рядків.

5.2 Закриття файлів

Після завершення роботи з файлом, його слід закрити. Для закриття файлів слугує бібліотечна функція fclose ( ). Аргументом функції є вказівник на файлові структуру, асоційовану з файловим потоком.

5.3 Операції керування файлами

Функції, що забезпечують керування файлами з середовища програмування С надають можливості зміни поточного імені файлу та знищення вказаного файлу.

Для перейменування файлу призначена функція rename ( ). У функції два аргументи – поточне та нове ім'я файлу. Функція повертає до основної функції (main ( )) значення цілого типу – 0 (у випадку вдалої зміни імені файлу) або – 1 (у разі виникнення помилки). В даному випадку помилкою вважається відсутність файлу, у відношенні якого відбувається спроба перейменування, або наявність файлу з іменем, яке повинне бути привласнене перейменованому файлу. Ще одним варіантом помилки може бути спроба перемістити файл з одного логічного диску комп’ютера на інший за допомогою операції перейменування.

Для знищення файлів призначена функція remove ( ). В якості аргументу до функції передається ім'я файлу, який підлягає видаленню. Функція повертає до основної функції (main ( )) значення цілого типу – 0 (у випадку вдалого знищення файлу) або – 1 (у разі виникнення помилки).

 


6. Вказівники

Вказівникце змінна яка містить адресу іншої змінної.

При декларації змінної в програмі на С, компілятор виділяє для її зберігання ділянку пам’яті з унікальною адресою. Компілятор асоціює цю адресу з іменем змінної. І кожного разу, коли в ході виконання програми використовується ім’я цієї змінної, відбувається звернення за адресою до відповідного місця пам’яті.

6.1 Операції з вказівниками

Мови програмування, в яких передбачений тип вказівник, містять, як правило, дві основні операції над ними: присвоювання і розіменування. Операція присвоювання записує в значення вказівника певну адресу в пам'яті комп'ютера.

6.2 Розіменування  вказівника

Операція отримання значення, на яке посилається вказівник, називається розіменування вказівника.

У мові програмування С:

double A = 5; /*декларація дійсної змінної подвійної точності */

double *a; /*декларація вказівника на дійсну змінну */

a = &A; /* присвоєння вказівнику адреси змінної A. a тепер вказує на A */

*a = 10; /*Присвоєння значення тому, на що вказує а. *a — операція розіменування вказівника */

a є вказівником на число типу double. *a — розіменування вказівника. У результаті змінна A отримує значення 10.


7 Лінійні списки

Лінійний список в інформатиці та програмуванні визначається як екземпляр абстрактного типу даних, що формалізує концепцію впорядкованої множини елементів. Наприклад, абстрактний тип даних для безтипових, змінних списків можна визначити із допомогою конструктора та чотирьох операцій[1]:

  •  конструктор для створення порожнього списку;
  •  операція визначення порожності списку;
  •  операція для додавання елемента в початок списку (cons в Лісп);
  •  операція отримання першого елемента списку (або «голови») списку (car в Лісп);
  •  операція для визначення списку, що складається із всіх елементів списку окрім першого (або його «хвоста») (cdr в Лісп).

Важливими окремими випадками лінійних списків, в яких операції додавання та вилучення певних значень можуть бути виконані лише для першого чи останнього елементу, є:

стек

лінійний список, в якому операції додавання та вилучення виконуються лише на одному кінці списку (верхівці стеку). Принцип побудови стеку називають LIFO (англ. last in, first out).

черга (однобічна черга)

лінійний список, в якому усі операції додавання виконується на одному кінці (в голові черги), а операції вилучення — на іншому кінці списку (в хвості черги). Принцип побудови черги називають FIFO (англ. first in, first out).

дек або двобічна черга 

лінійний список, в якому всі операції вставки та видалення виконуються на обох кінцях списку.

Не менш важливим окремим випадком лінійного списку є зв'язаний список, в якому кожний елемент окрім поля даних зберігає також вказівник на наступний.

Така структура дозволяє зняти обмеження на зберігання лінійного списку в безперервній області пам'яті.

Важливим узагальненням лінійного списку є багатовимірний масив.

8. Нелінійні списки

8.1 Двійкове дерево
В програмуванні двійкове дерево  структура даних у вигляді дерева, в якому кожна вершина має не більше двох дітей. Зазвичай такі діти називаються правим та лівим. На базі двійкових дерев будуються такі структури, як двійкові дерева пошуку та двійкові купи.

8.2 Різновиди двійкових дерев

Двійкове дерево — таке кореневе дерево, в якому кожна вершина має не більше двох дітей. Повне (закінчене) двійкове дерево — таке двійкове дерево, в якому кожна вершина має нуль або двох дітей.

Ідеальне двійкове дерево — це таке повне двійкове дерево, в якому листя (вершини без дітей) лежать на однаковій глибині (відстані від кореня).

Двійкове дерево на кожному n-му рівні має від 1 до 2n вершин.

Представлення n-арних дерев як двійкові
Існує єдине та взаємооднозначне відображення довільного впорядкованого дерева в двійкове.
   

       Рисунок 5 – двійкове дерево.

Для цього слід послідовно зв'язати усіх дітей кожної сім'ї з першою дитиною та видалити усі вертикальні з'єднання за виключенням з'єднання батька з першою дитиною в сім'ї. Тобто кожна вершина N впорядкованого n-арного дерева відповідає вершині M деякого двійкового дерева. Ліва дитина вершини M відповідає першій дитині вершини N, а права дитина M відповідає першому з наступних братів N (тобто першому з наступних дітей батька вершини N). Така відповідність має назву природної відповідності між n-арним та двійковим деревом.

9 TIME.H

time.h — заголовний файл стандартної бібліотеки мови програмування СІ, що містить типи і функції для роботи з датою й часом.

Деякі функції можуть працювати з місцевим часом, який може відрізнятися від календарного, наприклад у зв'язку з часовими поясами. Визначено арифметичні типи clock_t і time_t для представлення часу, а структура struct tm містить компоненти календарного часу.

Таблиця 1 – Функції для роботи з датою і часом

Ім'я

Опис

int tm_sec;

Секунди від початку хвилини (0,59)

int tm_min;

Хвилини від початку години (0,59)

int tm_hour;

Години від півночі (0,23)

int tm_mday;

Число місяця (1,31)

int tm_mon;

Місяці після січня (0,11)

int tm_year;

Роки з 1900 (в Windows), з 1970 (в Unix)

int tm_wday;

Дні з неділі (0,6)

Inttm_yday;

Дні з першого січня (0,365)

int tm_isdst;

Ознака літнього часу

Поле tm_isdst має позитивне значення, якщо активний режим літнього часу, нуль в іншому випадку і негативне значення, якщо інформація про сезон часу недоступна / невідома.

 9.1 Основні функції

clock_t clock (void)

Повертає час, вимірюваний процесором в тактах від початку виконання програми, або −1, якщо воно не відомо. Перерахунок цього часу в секунди виконується за формулою clock:

() / CLOCKS_PER_SEC.

time_t time (time_t * tp)

Повертає поточне календарний час або −1, якщо цей час не відомо. Якщо покажчик tp не дорівнює NULL, то повертається значення записується також і в * tp.

double difftime (time_t time2, time_t time1)

Повертає різницю time2-time1, виражену в секундах.

time_t mktime (struct tm * tp)

Перетворює місцевий час, заданий структурою * tp, в календарне і повертає його в тому ж вигляді, що і функція time (). Компоненти структури будуть мати значення в зазначених вище діапазонах. Функція повертає календарне час або −1, якщо воно не представимо.

char * asctime (const struct tm * tp)

Перетворює час із структури * tp в рядок виду «Sun Jan 3 15:14:13 1988 \ n \ 0»

9.2 Константи

CLOCKS_PER_SEC

Визначає кількість тактів системного годинника в секунду. Використовується для перерахунку величини, що повертається функцією clock (), в секунди.

CLK_PER_SEC

Альтернативне ім'я константи CLOCKS_PER_SEC, що використовується в деяких бібліотеках.

CLK_TCK

макрос для константи CLOCKS_PER_SEC, вийшов з ужитку.

9.3 Типи даних

clock_t

Повертається функцією clock (). Зазвичай визначений як int або long int.

time_t

Повертається функцією time (). Зазвичай визначений як int або long int.

struct tm

Нелінійне, дискретне календарне уявлення часу.

Приклади використання:

Виведення на екран поточного часу:

   #include <stdio.h>

   #include <time.h>

   int main(void)

   {

  const time_t timer = time(NULL);

  printf("%s\n", ctime(&timer));

    return 0;}

    10 Постановка задачі     

На мові системного програмування Сі написати програму з використанням функції. Функція повинна отримати вектор В з матриці розміром М[40][30]. Вектор формується за правилом – k-му елементу привласнюється значення 0, якщо усі елементи k-го стовпця матриці нульові, і 1 в протилежному випадку. Масив передати в функцію через формальний параметр, результат повернути через покажчик. Введення масива М і виведення результату на екран організувати у головній програмі.

11 Практична частина

 Опис функцій та їх призначення

 fopen() – здійснює відкриття файлу.

fscan() – здійснює зчитування матриці з файлу.

printf() – здійснює вивід інформації на екран.

scanf() – здійснює зчитування інформації з клавіатури.

 

 

 Опис функції користувача

int* Vector(int M[][I2])

{

int i, j, k = 0, *B = (int*)malloc(sizeof(int)*I2);

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

{

k = 0;

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

{

if(M[i][j] != 0)

k++;

}

if(k == 0)

B[j] = 0;

else

B[j] = 1;

}

return(B);}//Повертання результату функції користувача до головної програми

     

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

   Рисунок 6 – зчитування масиву

  Рисунок 7 – зчитування зміненого масиву

  Рисунок 8 – Файл з якого зчитується

    

    Висновок

Під час виконання курсової роботи, я розробив програму з якої функція повинна отримати вектор з матриці. Масив передати в функцію через формальний параметр, результат повернути через покажчик. При створенні програми було використано такі бібліотеки як: <stdio.h>, <conio.h>, <stdlib.h>. Складні типи даних мають внутрішню структуру, яка складається з сукупності простих типів. До складних типів відносяться масиви, множини, записи, файли, об`єкти, посилання і процедурний тип. Time.h – заголовний файл стандартної бібліотеки мови програмування С, що містить типи і функції для роботи з датою та часом.

   

    Література

1 http://mapyourinfo.com 

2 http://5fan.ru

3 А. Крупник «Изучаем язык С»

4 Шпак З.Я. «Програмування мовою С. Навчальний посібник»  

5 http://uk.wikipedia.org

.

   

Додаток А
(Обов`язковий)

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#define I1 40

#define I2 30

int* Vector(int M[][I2]);

void main()

{

clrscr();

FILE *fp;

int M[I1][I2], i, j;

int *B;

fp = fopen("Vvid.txt", "r");

if(fp != NULL)

{

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

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

fscanf(fp, "%i", &M[i][j]);

B = Vector(M);

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

printf("%i ", B[i]);

 }

else

printf("Faila ne isnuye!");

getch();

}

int* Vector(int M[][I2])

{

int i, j, k = 0, *B = (int*)malloc(sizeof(int)*I2);

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

{

k = 0;

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

{

if(M[i][j] != 0)

k++;

}

if(k == 0)

B[j] = 0;

else

B[j] = 1;

}

return(B);

}

Додаток Б
(Обов`язковий)

Блок-схема основної програми

Додаток В
(Обов`язковий)

Блок-схема функції користувача


Зм

.

Арк.

№ докум.

Підпис

Дата

Аркуш

2

СумДУ МК I КП 0034 ПЗ

Розроб.

Карепін В. О

Перевір.

Овсянко А.М

Реценз.

Н. Контр.

Затверд.

Зміст

Літера

Аркушів

31

Гр.211-і

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

3

умДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

4

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

5

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

6

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

7

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

8

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

9

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

10

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

11

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

12

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

13

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

14

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

15

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

16

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

17

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

18

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

19

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

20

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

21

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

22

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

23

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

24

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

25

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

26

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

27

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

28

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

29

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

30

СумДУ МК I КП 0034 ПЗ

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

31

СумДУ МК I КП 0034 ПЗ


 

А также другие работы, которые могут Вас заинтересовать

68531. Бухгалтерский учет финансовых результатов на ООО «БУЛГАРНЕФТЕПРОДУКТ» 637.78 KB
  Прибыль - показатель эффективности работы предприятия, источник её жизнедеятельности. Рост прибыли создает финансовую основу для самофинансирования деятельности предприятия, осуществление расширенного воспроизводства и удовлетворения растущих социальных и материальных потребностей трудовых коллективов.
68532. ПОТРЕБНОСТЬ В САМОПОЗНАНИИ И ЛИЧНОСТНЫЕ ХАРАКТЕРИСТИКИ СТУДЕНТОВ ВУЗОВ 79.5 KB
  Анализ процентного соотношения испытуемых по двум кластерам позволяет утверждать что студенты из первой группы в большей степени направлены на самопознание чем из второй. Для проверки выдвинутого нами предположения две полученные в результате кластерного анализа группы группа...
68533. ЦЕННОСТНЫЕ ОРИЕНТАЦИИ УЧАЩЕЙСЯ МОЛОДЕЖИ КАК ПСИХОЛОГИЧЕСКАЯ СОСТАВЛЯЮЩАЯ ПРОЯВЛЕНИЯ ПАТРИОТИЗМА 139 KB
  Необходимо акцентировать внимание на том что основными структурными компонентами патриотизма являются: патриотическое сознание патриотическое отношение и патриотическая деятельность. Данный диагностический инструментарий позволил выявить ценностное отношение к таким феноменам как семья Отечество...
68534. ТЕОРЕТИЧЕСКИЕ И ЭМПИРИЧЕСКИЕ ИССЛЕДОВАНИЯ МЕТАКОГНИТИВНЫХ СТРАТЕГИЙ В СОВРЕМЕННОЙ ЗАРУБЕЖНОЙ ПСИХОЛОГИИ 66 KB
  В статье на основе теоретического анализа современных зарубежных исследований в данной области рассматриваются представления о метакогнитивных стратегиях в западной психологии. Рассмотрены взгляды ученых на учебный процесс в ВУЗах с учетом метакогнитивных стратегий и навыков.
68535. АКТУАЛЬНЫЕ ВОПРОСЫ ОПРЕДЕЛЕНИЯ СУБЪЕКТНОГО СОСТАВА В ПРАВООТНОШЕНИЯХ ПО ДЕЛАМ О ЗАЩИТЕ ЧЕСТИ И ДОСТОИНСТВА 57 KB
  Судебные дела связанные с защитой чести и достоинства представляют собой отдельную категорию гражданско-правовых споров. Специфика данной категории дел обусловлена прежде всего особым характером субъективных прав которые должны быть защищены судом неотчуждаемых личных...
68536. СРЕДСТВА МАССОВОЙ ИНФОРМАЦИИ КАК ИСТОЧНИК АГРЕССИИ 61.5 KB
  Возможно росту насилия способствует усиление индивидуализма и материализма в обществе Или причиной является все более расширяющаяся пропасть между могуществом богатства и бессилием бедности А может назойливое смакование сцен насилия в поделках массовой культуры ведет к такому результату...
68537. БАШКИРО-КАЗАХСКИЕ ОТНОШЕНИЯ ДО XIX В. В ИСТОРИЧЕСКИХ ИСТОЧНИКАХ И УСТНОМ НАРОДНОМ ТВОРЧЕСТВЕ БАШКИР 85 KB
  Материалы башкирского народного творчества по данной тематике можно разделить на две категории. Прежде всего это сюжеты не повествующие напрямую о башкиро-казахских отношениях но при сопоставлении с их аналогами в фольклоре казахов и других тюркских народов позволяющие выяснить наиболее древние...
68538. Евразийство и империализм 73.5 KB
  Именно в период его жизни в России и в эмиграции оформлялись столь разные течения как российский либеральный консерватизм и евразийство большевизм и националбольшевизм парадигмы до сих пор во многом определяющие идейное развитие нашего общества. Гумилева определявшего наше время для России как период золотой осени...
68539. ЕВРОПОЦЕНТРИЗМ И ЕВРАЗИЙСТВО 61.5 KB
  Бердяева историю в России делали в основном западники. Именно Пушкин при патриотической попытке как-то объяснить отсталость России сформулировал ложное положение по которому долгое время двигалась отечественная историография. России было предопределено более высокое предназначение.