DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

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

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

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

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

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

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

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

Про що ця робота

Звіт про лабораторну роботу присвячено опрацюванню одно- та двовимірних масивів на мові C. Розроблено програму для множення квадратної матриці на матрицю-стовпець із динамічним виділенням пам'яті.

У роботі розглядаються

  • Системне програмування
  • Одержання аргументів main
  • Двовимірні масиви
  • Динамічна пам'ять
  • Адресна арифметика
  • Множення матриць

Зміст і розділи

  1. Мета роботи
  2. Завдання на лабораторну роботу
  3. Аналіз завдання та опис алгоритму вирішення задачі
  4. Текст програми
  5. Опис результатів тестування
  6. Висновок
Для кого:Студенти технічних спеціальностей, які вивчають системне програмування та мову C.
Викладачі:Не вказано

Ключові поняття

масивматрицяадресна арифметикааргументи mainдинамічна пам'ятьмноження матрицьфункціяпам'ятькодтестування

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин Звіт про виконання лабораторної роботи № 6 з курсу „ Засоби системного програмування ” Тема: Опрацювання одно- та двовимірних масивів. Львів – 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(), при вводі невірної кількості параметрів, або параметрів з невірною назвою параметру, програма повідомляє про помилку та припиняє свою роботу.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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