Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОС_ответы.doc
Скачиваний:
43
Добавлен:
27.10.2018
Размер:
21.59 Mб
Скачать

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

Основные показатели надёжности:

  • Вероятность безотказной работы (P(t)): P(t)=N0-n/N0 (стат.), Pe=e-λ*t (экспон.), Pb=e-λ*t^β (Вейбулла);

  • MTTF: tc = 1/ λпрпр = Кэ* λi);

  • MTTR: Tрем = Σ ti / n;

  • MTBF.

Наработка на отказ – период времени, в течении которого изделие гарантированно не откажет ни разу. MTTF – среднее время наработки на отказ (предп. – группы устройств). MTBF – среднее время работы между отказами.

Воздействие внешней среды задаётся определённым коэффициентом К, который определяется таблично (для различных условий). Значение оного для лаборатории =1. Используется для расчёта интенсивности отказов и MTTF.

Показатели надёжности РЭ указывается в техническом паспорте или технических условиях (обычно, указывается интенсивность отказов и MTTF).

Основные показатели могут быть определены статистически, при помощи математических моделей либо опытным способом (табл. – λ).

Основные показатели надёжности определяются на этапах проектирования, лабораторных и производственных испытаний.

График интенсивности отказов показывает зависимость вероятности поломки прибора от времени работы.

28 Приведіть формулу ймовірності безвідмовної роботи Pc(t) системи з навантаженим загальним резервом. Приведіть графік залежності нароботки до відказу від кратності резерву.

Формула імовірності безвідказної роботи системи з навантаженим резервуванням

Графік залежності MTBF відносно кратності n резервування представлений на рисунку 2.5.

Рисунок 7.1 - Графік залежності середнього часу напрацювання на відказ від кратності резерву

Середній час безвідказної роботи в резервованій навантаженій системі зростає спочатку швидко відповідно до зростання n, Але подальше збільшення n неефективно. Графік показує, що система із ненавантаженим резервом має вищу надійність ніж з навантаженим.

29 Дайте визначення графу надійності системи та приведіть приклади для резервованих та нерезервований систем.

Резервована, або нерезервована система може бути представлена у виглядi структурноi схеми надiйностi, або зв`язаного графа надiйностi.

У зв`язаному графi надiйностi вершини вiдповiдають пiдсистемам, а дуги - сполюченням мiж пiдсистемами. При цьому, вiдказу пiдсистеми вiдповiдае обрив i-го ребра графа, а вiдказу системи - втрата зв`язку мiж двома вершинами графа А та В.

30 Приведіть граф надійності та визначіть ймовірніть безвідмовної роботи мережі топології "загальна шина".

Вероятность безотказной работы системы:

P=(1 - (1 - Ppc)N) * (Pterm2), где N – количество компов в сети

31 Приведіть граф надійності та визначіть ймовірніть безвідмовної роботи мережі топології "зірка".

Вероятность безотказной работы системы:

P=(1 - (1 - Ppc)N) * (Phub2), где N – количество компов в сети.

8 ГРУППА

1 Розробити на мові С++ програму, в якій 500 елементам масиву чисел типу int привласнюються випадкові числа від -100 до 100, знаходиться сума та кількість додатних чисел. Якщо елемент масиву дорівнює 0, то цикл завершується.

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

int main()

{clrscr(); // очистка экрана

randomize(); // запуск генератора случайных чисел

const int N=500; // размер массива – константное число

int mas[N]; // определение массива целых чисел

long double pol_sum=0.0;// начальное значение суммы положительных чисел

int pol_kol=0; //счетчик количества положительных чисел

for (int i=0;i<N; i++)

{ mas[i]=(random(201)-100; //заполнение массива случайными числами

if (mas[i]==0)

{printf (“цикл закончился, mas[%d]=%d\n”,i, mas[i]);

break; // завершение цикла

}

else

if (mas[i]>0) {pol_kol++; //подсчет положительных чисел

pol_sum+=mas[i]; //нахождение суммы положительных чисел

}

}

printf("Kolichestvo pologitelnih = %d\n",pol_kol); //вывод результатов

printf("Summa pologitelnih = %Lf\n",pol_sum);

getch(); // ожидание нажатия какой-либо клавиши

return 0;

}

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

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

int main()

{clrscr(); // очистка экрана

int *mas; // определение указателя на массив целых чисел

int n; // переменная для задания размера массива

printf("Задайте размер массива:\n");

scanf("%d",&n); //ввод размера массива с клавиатуры

mas=new int[n]; //запрос динамической памяти под массив

if(mas==NULL){printf(“ошибка выделения памяти”);

return 1; // завершение программы

}

int i,j, tmp;

printf("Введите %d значений элементов массива\n",n);

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

scanf("%d",&mas[i]); //ввод элементов массива

printf("Вы ввели массив\n",n);

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

printf("%d ", mas[i]); //вывод элементов массива

for (i=0;i<n;i++) //пузырьковая сортировка

for (j=i;j<n;j++)

if (mas[i]>mas[j]) //перемещение минимального элемента на начало массива

{tmp=mas[i];

mas[i]=mas[j];

mas[j]=tmp; }

printf("\nМассив после сортировки:\n ");

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

printf("%d ",mas[i]); //вывод массива на экран

puts("\n");

delete [] mas; // освобождение памяти

getch(); // ожидание нажатия какой-либо клавиши

return 0;

}

3 Розробити на мові С++ програму, в якій, використовуючи масив структур, вводяться такі дані: прізвище, рік народження, стать, номер курсу. Розмір масиву задається за допомогою препроцесорної директиви #define.

#include <stdio.h>

#include <conio.h>

#define n 5 //размер массива структур

int main()

{clrscr(); // очистка экрана

//описание структуры данных

struct inf {char surname[20]; // фамилия

int bith; // год рождения

char sex; // пол

int kurs;}; // номер курса

inf mas[n]; // определение массива структур

for (int i=0;i<n;i++) //цикл ввода данных

{printf("Student N %d\n",i+1);

printf("Введите фамилию:\n");

gets(mas[i].surname);// ввод фамилии

printf("Введите год рождения:\n");

scanf("%d",&mas[i].bith);

fflush(stdin); // очистка потока ввода

printf("Введите пол: 1- мужской или 0 – женский\n");

scanf("%d",&mas[i].sex);

fflush(stdin); // очистка потока ввода

printf("Введите курс:\n");

scanf("%d",&mas[i].kurs);

fflush(stdin); // очистка потока ввода

}

//вывод результатов на экран

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

{printf("%d. %15s год рождения %6d ",i+1, mas[i].surname,mas[i].bith);

if (mas[i].sex==1) printf("пол- мужской ”);

else printf("пол- женский ”);

printf(“курс - %d\n”, mas[i].kurs);

}

getch(); // ожидание нажатия какой-либо клавиши

return 0;

}

4 Розробити на мові С++ програму підсумовування елементів масиву чисел типів int, float, double, використовуючи перевантажені функції.

#include <stdio.h>

#include <conio.h>

//функция, в которую передается массив типа int и размер массива

int sum (int x[],int n)

{int add=0; //переменная для суммы элементов

for (int i=0;i<n;i++)

add+=x[i];

return add; }

//функция, в которую передается массив типа float и размер массива

float sum (float x[],int n)

{float add=0.0; //переменная для суммы элементов

for (int i=0;i<n;i++)

add+=x[i];

return add; }

//функция, в которую передается массив типа double и размер массива

double sum (double x[],int n)

{ double add=0.0; //переменная для суммы элементов

for (int i=0;i<n;i++)

add+=x[i];

return add;

}

int main()

{clrscr(); // очистка экрана

int a[8]={11,20,32,4,5,21,6,26}; // массив из 8-и чисел типа int

float b[6]={1.1f,2.2f,0.3f,4.4f,5.5f, 0.2f}; // массив из 6-и чисел типа float

double c[5]={1.01,2.02,3.03,4.04,5.05}; // массив из 5-и чисел типа double

int res1= sum(a,8); // вызывается первая функция sum

printf("Sum of int=%d\n", res1);

float res2= sum(b,6); // вызывается вторая функция sum

printf("Sum of float=%.2f\n", res2);

double res3= sum(c,5); // вызывается третья функция sum

printf("Sum of double=%.2lf\n", res3);

getch(); // ожидание нажатия какой-либо клавиши

return 0;

}

5 Розробити на мові С++ програму підсумовування елементів масиву чисел довільного типу, використовуючи шаблон функції.

#include <stdio.h>

#include <conio.h>

template <class A> //шаблон функции

// в функции используется шаблон, в нее передается массив типа шаблона и размер массива

A sum (A x[],int n)

{A add=0; //переменная для суммы элементов

for (int i=0;i<n;i++)

add+=x[i];

return add; }

int main()

{clrscr(); // очистка экрана

int a[8]={3,92,13,64,55,1,6,6}; // массив из 8-и чисел типа int

long b[4]={1000,223,3,4000}; // массив из 4-и чисел типа long

double c[5]={1.01,2.02,3.03,4.04,5.05}; // массив из 5-и чисел типа double

int res1= sum(a,8); // А заменяется на int

printf("Sum of int=%d\n", res1);

long res2= sum(b,4); // А заменяется на long

printf("Sum of long =%ld\n", res2);

double res3= sum(c,5); // А заменяется на double

printf("Sum of double=%.2lf\n", res3);

getch(); // ожидание нажатия какой-либо клавиши

return 0;

}

6 Розробити на мові С++ програму пошуку максимального елементу масиву чисел типів int, float, double, використовуючи перевантажені функції.

#include <stdio.h>

#include <conio.h>

//функция, в которую передается массив типа int и размер массива

int max_arr(int x[],int n)

{int max=x[0]; //переменная для максимального элемента массива

for (int i=0;i<n;i++)

if (x[i]>max) max=x[i];

return max; }

//функция, в которую передается массив типа float и размер массива

float max_arr (float x[],int n)

{float max=x[0]; //переменная для максимального элемента массива

for (int i=0;i<n;i++)

if (x[i]>max) max=x[i];

return max; }

//функция, в которую передается массив типа double и размер массива

double max_arr (double x[],int n)

{ double max=x[0]; //переменная для максимального элемента массива

for (int i=0;i<n;i++)

if (x[i]>max) max=x[i];

return max;

}

int main()

{clrscr(); // очистка экрана

int a[10]={4,11,27,32,94,5,21,6,22,8}; // массив из 10-и чисел типа int

float b[6]={18.1f,2.32f,60.3f,4.14f,25.5f, 16.2f}; // массив из 6-и чисел типа float

double c[5]={1.01,32.02,3.03,4.04,5.05}; // массив из 5-и чисел типа double

int res1= max_arr (a,10); // вызывается первая функция max_arr

printf("max_arr типа of int=%d\n", res1);

float res2= max_arr (b,6); // вызывается вторая функция max_arr

printf("max_arr типа float=%.2f\n", res2);

double res3= max_arr (c,5); // вызывается третья функция max_arr

printf("max_arr типа double=%.2lf\n", res3);

getch(); // ожидание нажатия какой-либо клавиши

return 0;

}

7 Розробити на мові С++ програму пошуку мінімального елементу масиву чисел довільного типу, використовуючи шаблон функції.

#include <stdio.h>

#include <conio.h>

template <class A> //шаблон функции

//в функции используется шаблон, в нее передается массив типа шаблона и размер массива

A min_arr (A x[],int n)

{ A min=x[0]; //переменная для суммы элементов

for (int i=0;i<n;i++)

if (x[i]<min) min=x[i];

return min;

}

int main()

{clrscr(); // очистка экрана

int a[8]={3,92,13,64,-55,1,5,6}; // массив из 8-и чисел типа int

long b[4]={1000,223,3,4000}; // массив из 4-и чисел типа long

double c[5]={1.01,2.02,3.03,4.04,5.05}; // массив из 5-и чисел типа double

int res1= min_arr (a,8); // А заменяется на int

printf("min_arr of int=%d\n", res1);

long res2= min_arr (b,4); // А заменяется на long

printf("min_arr of long =%ld\n", res2);

double res3= min_arr (c,5); // А заменяется на double

printf("min_arr of double=%.2lf\n", res3);

getch(); // ожидание нажатия какой-либо клавиши

return 0;

}

8 Розробити на мові С++ програму обчислення виразу y=a*x*х+b*x+c, використовуючи функцію з замовчаними параметрами a, b, c. Продемонструвати роботу цієї програми з різними параметрами

#include <stdio.h>

#include <conio.h>

long func (long x, long a=10, long b=5, long c=4)

//функция с умалчиваемыми значениями параметров

{printf(“%ld*%ld*%ld+%ld*%ld+%ld=”,a,x,x,d,x,c);

return (a*x*x+b*x+c); //вычисление выражения

}

int main()

{clrscr(); // очистка экрана

printf("%ld\n",func(2)); //значения умалч. параметров не передаются

printf("%ld\n",func(2,20)); //передается 1 умалч. параметр

printf("%ld\n",func(2,20,3));//передается 2 умалч. параметра

printf("%ld\n",func(2,20,3,10));//передаются все 3 умалч. параметры

getch(); // ожидание нажатия какой-либо клавиши

return 0;

}

На экране будет :

10*2*2 + 5*2 + 4 = 54

20*2*2 + 5*2 + 4 = 94

20*2*2 + 3*2 + 4 = 90

20*2*2 + 3*2 + 9 = 95

9 Розробити на мові С++ програму для одержання значень параметрів, визначених у командному рядку. Передати в головну функцію з командного рядка ім'я студента. Якщо воно вірне, то на екран вивести прізвище студента та назва спеціальності, інакше повідомлення про помилку.

#include <stdio.h>

#include <conio.h>

#include <string.h>

int main(int argc, char **argv)

{clrscr(); // очистка экрана

char str1[]="Ivan;

char str2[]="Petrov";

char str3[]="KCM";

if (strcmp(str1,argv[1])!=0)

{printf("Error! Не правильное имя\n"); //имя, введенное в командной строке, не совпало с заданным

getch();

return 1; //завершение программы

}

printf("Вы ввели в командной строке:\n");

for(int i=0;i<argc;i++)

printf("argv[%d] = %s\n",i,argv[i]);

printf("\n%s %s\n", str2, str3);

getch(); // ожидание нажатия какой-либо клавиши

return 0;

}

Если в командной строке ввести Ivan 18.02.07 ККЗ, то на экране получим:

F:\Users\zao\sad8_9.exe

Ivan

18.02.07

ККЗ

Petrov KCM

Если в командной строке ввести Petr 18.02.07 ККЗ, то на экране получим:

Error! Не правильное имя

10 Розробіть на мові С++ клас матриць, у якому матриця зберігається як динамічний масив, а методи дозволяють складати вводити виводити значення елементів матриці, складати і множити дві матриці.

#include <stdio.h>

#include <conio.h>

#include <string.h>

class matrix //класс матриц

{public:

int **m; //указатель на матрицу

int x; //кол-во столбцов

int y; //кол0во строк

matrix(int a, int b) //конструктор (передаются размерв матрицы)

{

x=a;

y=b;

m=new int*[x]; //динамическое выделение памяти

int i;

for (i=0;i<x;i++) m[i]=new int[y];

int j;

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

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

m[i][j]=0; //начальное обнуление

}

~matrix() //деструктор

{

int i;

for (i=0;i<x;i++) delete m[i]; //освобождение памяти

delete [] m;

}

int sum_el() //вычисляет сумму элементов матрицы

{

int i,j;

int sum=0;

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

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

sum+=m[i][j];

return sum; //возвращает сумму

}

void input() //вводит элементы матрицы с клавиатуры

{

int i,j;

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

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

{

printf("Get the element of %d row and %d column: ",i,j);

scanf("%d",&m[i][j]);

}

}

void output() //выводит матрицу на экран

{

int i,j;

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

{

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

{

printf("%d ",m[i][j]);

}

printf("\n");

}

}

void add(matrix mm)

//складывает 2 матрицы (к каждому элементу текущей матрицы добавляется соотв. эл-т второй матрицы,

//которая передается как параметр

{

if (x==mm.x && y==mm.y) //необходимость одинаковых размеров

{

int i,j;

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

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

m[i][j]+=mm.m[i][j];

}

}

void mul(matrix mm1, matrix mm2)

//перемножает матрицы (текущая матрица становится равной произведению

//2х матриц, которые передаются как параметры

{

if (x==mm1.x && x==mm2.y && mm1.y==mm2.x)

//математическая необходимость соответствия размеров всех 3х матриц

{

int i,j,k;

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

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

for (k=0;k<mm1.y;k++)

m[i][j]+=mm1.m[i][k]*mm2.m[k][j]; //вычисляется каждый элемент

}

}

};

int main()

{

matrix m1(2,3); //создание 1й матрицы размером 2х3

m1.input(); //ввод эл-тов

puts("");

m1.output(); // вывод на экран

puts("");

printf("Sum of elements=%d\n\n",m1.sum_el()); //сумма эл-тов матрицы

matrix m2(2,3);//создание 2й матрицы размером 2х3 (для суммирования с 1й)

m2.input();

puts("");

m2.output();

puts("");

m1.add(m2); //симмирование 1й и 2й матриц

m1.output();

matrix m3(3,2);//создание 3й матрицы размером 3х2 (для перемножения с 1й)

m3.input();

puts("");

m3.output();

puts("");

matrix m4(2,2);//создание 4й матрицы размером 2х2 (для хранения рез-та перемножения матриц)

m4.mul(m1,m3); //произведение 1й и 3й матриц (результат - в 4ю)

m4.output();

getch();

return 0;}

11 Розробіть на мові С++ клас матриць, у якому матриця зберігається як динамічний масив, а методи дозволяють вводити, виводити значення елементів матриці, складати дві матриці.

#include <stdio.h>

#include <conio.h>

#include <string.h>

class matrix //класс матриц

{public:

int **m; //указатель на матрицу

int x; //кол-во столбцов

int y; //кол0во строк

matrix(int a, int b) //конструктор (передаются размерв матрицы)

{

x=a;

y=b;

m=new int*[x]; //динамическое выделение памяти

int i;

for (i=0;i<x;i++) m[i]=new int[y];

int j;

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

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

m[i][j]=0; //начальное обнуление

}

~matrix() //деструктор

{

int i;

for (i=0;i<x;i++) delete m[i]; //освобождение памяти

delete [] m;

}

void input() //вводит элементы матрицы с клавиатуры

{

int i,j;

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

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

{

printf("Get the element of %d row and %d column: ",i,j);

scanf("%d",&m[i][j]);

}

}

void output() //выводит матрицу на экран

{

int i,j;

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

{

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

{

printf("%d ",m[i][j]);

}

printf("\n");

}

}

void add(matrix mm)

//складывает 2 матрицы (к каждому элементу текущей матрицы добавляется соотв. эл-т второй матрицы,

//которая передается как параметр

{

if (x==mm.x && y==mm.y) //необходимость одинаковых размеров

{

int i,j;

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

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

m[i][j]+=mm.m[i][j];

}

}

};

int main()

{

matrix m1(2,3); //создание 1й матрицы размером 2х3

m1.input(); //ввод эл-тов

puts("");

m1.output(); // вывод на экран

puts("");

matrix m2(2,3);//создание 2й матрицы размером 2х3 (для суммирования с 1й)

m2.input();

puts("");

m2.output();

puts("");

m1.add(m2); //симмирование 1й и 2й матриц

m1.output();

getch();

return 0;}

12 Розробіть на мові С++ клас TRIANGLE (прямокутний трикутник). Конструктор повинен ініціалізувати координати гіпотенузи та обчислювати координати катетів. Клас повинен мати закритий метод обчислювання довжин сторін та відкриті методи обчислювання периметру та площі трикутника.

#include <stdio.h>

#include <conio.h>

#include <math.h>

class triangle

{

private: //закрытые методы и свойства

double x1; //коорд. х первого конца гипотенузы

double y1; //коорд. у первого конца гипотенузы

double x2; //коорд. х второго конца гипотенузы

double y2; //коорд. у второго конца гипотенузы

double x3; //коорд. х прямого угла

double y3; //коорд. у прямого угла

double len(double xa,double ya,double xb,double yb)

{ //длина стороны по координатам

return (sqrt( (xb-xa)*(xb-xa)+(yb-ya)*(yb-ya) ));

}

public: //открытые методы

triangle(double xg1,double yg1,double xg2,double yg2) //коструктор

{ //в него передаются координаты гипотенузы

x1=xg1;

y1=yg1;

x2=xg2;

y2=yg2;

x3=x1; //координаты прямого угла

y3=y2; //координаты прямого угла

}

double perim() //вычисление периметра (сумма длин всех сторон)

{

return ( len(x1,y1,x2,y2)+len(x1,y1,x3,y3)+len(x3,y3,x2,y2) );

}

double square() //вычисление площади

{

return ( len(x1,y1,x3,y3)*len(x3,y3,x2,y2)/2.0 );

}

};

int main()

{

triangle t1(3.0,0.0,0.0,2.0);

printf("Perimetr=%.2lf\n",t1.perim());

printf("Square=%.2lf\n",t1.square());

getch();

return 0;

}

На экране:

Perimetr=8.61

Square=3.00

13 Розробіть на мові С++ класи Circle (круг), Quart (квадрат) та дружню функцію для класів , яка не є членом-функцією класу. Конструктори класів повинні ініціалізувати довжини радіуса круга та сторони квадрату. Класи повинні мати методи обчислювання площі. Дружня функція повинна виводити на екран повідомлення, площя якої фігури більше, та обчислювати сумарну площу двох фігур.

#include <stdio.h>

#include <conio.h>

#include <math.h>

#define pi 3.1415926

class quart;

class circle //класс circle

{

public:

double r; //радиус

circle (double rr) //конструктор

{

r=rr;

}

friend void func(circle c1, quart q1); //дружественная функция

private:

double square() //вычисление площади

{

return pi*r*r;

}

};

class quart //класс quert

{

public:

double a; //сторона квадрата

quart (double aa) //конструктор

{

a=aa;

}

friend void func(circle c1, quart q1); //дружественная функция

private:

double square()

{

return a*a;

}

};

void func(circle c1, quart q1)

// дружественная функция (может использовать закрытые методы)

{

if (c1.square()>q1. square ()) printf("Square of circle > Square of quart\n");

if (c1.square()<q1. square ()) printf("Square of circle < Square of quart\n");

if (c1.square()==q1. square ()) printf("Square of circle == Square of quart\n");

printf("Square of both figures=%.2lf\n",c1.square()+q1.square());

return;

}

int main()

{

circle c(4); //радиус=4

quart q(4); //сторона=4

func(c,q); //вызов функции

getch();

return 0;

}

На экране:

Square of circle > Square of quart

Square of both figures=66.27

14 Розробіть на мові С++ клас матриць розміру 3 на 3, в якому конструктор ініціалізує значення елементів матриці довільними числами, а методи дозволяють вводити елементи матриці з клавіатури, виводити їх на екран по стовбцям. В класі повинна бути перевантажена операція (знак +) складання двох матриць та матриці з числом.

#include <stdio.h>

#include <conio.h>

#include <math.h>

#include <stdlib.h>

#define n 3

class matrix //класс матриц 3x3

{

public:

int m[n][n]; //матрица

matrix() //конструктор

{

int i,j;

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

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

m[i][j]=floor(random(10)); //начальные значения

}

void input() //вводит элементы матрицы с клавиатуры

{

int i,j;

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

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

{

printf("Get the element of %d row and %d column: ",i,j);

scanf("%d",&m[i][j]);

}

}

void output() //выводит матрицу на экран

{

int i,j;

printf("Po strokam:\n"); //по сторокам

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

{

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

{

printf("%d\t",m[i][j]);

}

printf("\n");

}

printf("Po stolbcam:\n"); //по столбцам

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

{

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

{

printf("%d\t",m[j][i]);

}

printf("\n");

}

}

void operator+(matrix mm) //оператор + с матрицей

{

int i,j;

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

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

m[i][j]+=mm.m[i][j];

}

void operator+(int a) //оператор + с числом

{

int i,j;

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

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

m[i][j]+=a;

}

};

int main()

{

randomize();

matrix m1;

m1.input(); //ввод с коавиатуры

puts("");

m1.output(); //вывод на экран

puts("");

matrix m2;

m2.output(); //вторая матрица запояняется произвольными числами

puts("");

printf("Sum of 2 matrix:\n");

m1+m2; //сумма 2х матриц

m1.output();

puts("");

printf("Sum of matrix and number 3:\n");

m1+3; //сумма матрицы и числа

m1.output();

puts("");

getch();

return 0;

}

На экране:

Po strokam:

1 2 3

4 5 6

7 8 9

Po stolbcam:

1 4 7

2 5 8

3 6 9

Po strokam:

3 3 9

6 2 8

8 2 6

Po stolbcam:

3 6 8

3 2 2

9 8 6

Sum of 2 matrix:

Po strokam:

4 5 12

10 7 14

15 10 15

Po stolbcam:

4 10 15

5 7 10

12 14 15

Sum of matrix and number 3:

Po strokam:

7 8 15

13 10 17

18 13 18

Po stolbcam:

7 13 18

8 10 13

15 17 18

15 Розробіть на мові асемблер фрагмент програми для обчислення виразу z=(a – b + c)/10, де a, b, c змінні типу байт.

data segment para public 'data' ;сегмент данных

a db 10

b db 8

c db 14

d db 10

data ends

stk segment stack

db 256 dup ('?') ;стек

stk ends

code segment para public 'code'

main proc

assume cs:code,ds:data,ss:stk,es:data

mov ax,data ;передача в ds расположение сегмента данных

mov ds,ax

mov al,a ;арифметические операции

mov bl,b

sub al,bl

mov bl,c

add al,bl

cbw

div d

exit: mov ax,4c00h ;завершение программы

int 21h

endp main

code ends

end main

16 Розробити на мові асемблер фрагмент програми для обчислення виразу z=10*(a + b – c), де a, b, c змінні типу слово.

data segment para public 'data' ;сегмент данных

a dw 10 ;переменные типа слово

b dw 8

c dw 14

d dw 10

data ends

stk segment stack

db 256 dup ('?') ;стек

stk ends

code segment para public 'code'

main proc

assume cs:code,ds:data,ss:stk,es:data

mov ax,data

mov ds,ax

mov ax,a ;арифметические операции

mov bx,b

add ax,bx

mov bx,c

sub ax,bx

mul d

exit: mov ax,4c00h

int 21h

endp main

code ends

end main

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]