Опрацювання одно- та двовимірних масивів.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Електронні обчислювальні машини

Інформація про роботу

Рік:
2004
Тип роботи:
Лабораторна робота
Предмет:
Засоби системного програмування
Група:
КI

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин Звіт про виконання лабораторної роботи № 6 з курсу „ Засоби системного програмування ” Тема: Опрацювання одно- та двовимірних масивів. Виконав: студент групи КІ-2 Львів – 2004 Мета роботи: Закріпити теоретичні знання та оволодіти практичними навиками опрацювання одно- та двовимірних масивів. Засвоїти основи адресної арифметики. Завдання на лабораторну роботу Розробити програмне забезпечення для опрацювання одно- та двовимірних масивів (матриць) відповідно до заданого варіанту. Розміри матриць (в загальному не квадратних) передавати через аргументи функції main(). Параметри, що задають кількість рядків та стовпців повинні бути іменованими і можуть зустрічатися в командному рядку в довільному порядку. Значення елементів матриць вводити зі стандартного пристрою вводу. Пам’ять під матриці виділяти динамічно. Для трикутних матриць (опираючись на їх структуру) виділяти мінімальні об’єми пам’яті. Виконати контрольний друк вхідних даних та результатів. Звернути особливу увагу на обробку помилок, які користувач може зробити при використанні програми. При вирішенні задач забезпечити дружній інтерфейс з користувачем. Варіант 23. Множення квадратної матриці на матрицю стовпець. Аналіз завдання та опис алгоритму вирішення задачі Матрицю (двовимірний масив) зберігаємо в одновимірному масиві. Для звертання до елементу m[i][j] використовуємо звертання m[i*x+j], де х – кількість елементів в одному рядку масива. Розміри матриць передаємо програмі через аргументи функції main(). int argc (кількіть аргументів) ; char *argv[] – самі аргументи. Оскільки опрацьовуються квадратна матриця і матриця-стовпець такої ж висоти, то використовується лише один параметр. При множенні двох матриць ми отримуємо нову матрицю, в якій число рядків таке ж як і в першій, а кількість стовпців – як в другій матриці. Текст програми #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <alloc.h> #include <string.h> void Err (int e) { if (e==0) puts("ERROR: Wrong argument count!"); else if (e==1) puts("ERROR: Wrong argument name!"); puts("\nSYNTAX: <prog_name> x=<matrix_size>"); getchar(); exit(0); } void main (int argc,char *argv[]) { int *m, *s, *result, i, j, x, tmp=0; clrscr(); if (argc!=2) Err(0); for(i=1;i<argc;i++) { for(j=0;j<strlen(argv[i]);j++) { if(argv[i][j]>47&&argv[i][j]<58) { if(tmp>0)tmp*=10; tmp+=(argv[i][j]-48); } } if(argv[i][0]=='x') x=tmp; else Err(1); tmp=0; } printf("\nSquare matrix size : %d x %d",x,x); m=(int*)malloc(sizeof(int)*x*x); s=(int*)malloc(sizeof(int)*x); result=(int*)malloc(sizeof(int)*x); puts("\nInput elements of square matrix :"); for(i=0;i<x;i++) for(j=0;j<x;j++) scanf("%d",&m[i*x+j]); puts("\nInput elements of column-matrix :"); for(i=0;i<x;i++) scanf("%d",&s[i]); puts("\nVisualized matrixes :"); for(i=0;i<x;i++) { printf(" │"); for(j=0;j<x;j++) printf("%4d",m[i*x+j]); printf(" │ * │ %4d │\n",s[i]); } for(i=0;i<x;i++) { result[i]=0; for(j=0;j<x;j++) result[i] += m[i*x+j]*s[j]; } puts("\nResult of matrix multiplication :"); for(i=0;i<x;i++) { printf(" │ "); printf("%5d",result[i]); puts(" │"); } free(m); free(s); getchar(); getchar(); } Опис результатів тестування Для тестування програми було використано матрицю розміром 2 х 2. Для запуска програми в командний рядок потрібно ввести ім’я програми з необхідним аргументом: Lab6.exe x=n , де n – розмір матриці. Кінцевий вигляд результатів тестування програми: Square matrix size : 2 x 2 Input elements of square matrix : 1 2 3 4 Input elements of column-matrix : 100 200 Visualized matrixes : │ 1 2 │ * │ 100 │ │ 3 4 │ * │ 200 │ Result of matrix multiplication : │ 500 │ │ 1100 │ Висновок: Виконуючи дану лабораторну роботу, я закріпив теоретичні знання та оволодів практичними навиками опрацювання одно- та двовимірних масивів. Засвоїв основи адресної арифметики, використовував передачу параметрів програмі через аргументи функції main(), при вводі невірної кількості параметрів, або параметрів з невірною назвою параметру, програма повідомляє про помилку та припиняє свою роботу.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!