Министерство образования и науки Российской Федерации
Московский авиационный институт
(национальный исследовательский университет)
Неверовская В.А
О-209Б
Организация ЭВМ и систем
Отчет по лабораторным работам
Вариант № 20
Оглавление
1. ЛАБОРАТОРНАЯ РАБОТА №1. 3
2. ЛАБОРАТОРНАЯ РАБОТА №2. 8
ЛАБОРАТОРНАЯ РАБОТА №1
Постановка задачи
Необходимо разработать программу, которая будет включать в себя набор функций выполняющих базовые логические операции — отрицание, дизъюнкцию, конъюнкцию, сложение по модулю 2. В соответствии с вариантом № 20 языком программирования является Си, типом данных – short. Количество входов – 3.
ЛОЖЬ – четное значение, ИСТИНА – прочие.
Реализация
В соответствии с условиями задачи:
1. выводом является либо истина(1), либо ложь(0);
2. возвращаемым типом данных является short int;
3. в функциях количество формальных параметров – 3;
4. во всех функциях используется алгоритм вычисления свойства четности или нечетности. Исходя из полученного результата происходит дальнейший вывод(см.п.1);
|
|
5. для получения лучшего результата используются различные четные и нечетные числа(от 9 до 14), количество тестов увеличено до 8.
Исходный код
//LABA#1
//Неверовская В.А; Группа 6О-209Б; Вариант №20
//Тип логических данных - short. Ложь-четное значение, истина - прочие значения. Кол-во входов:3.
#include <stdio.h>
short int otrizanie(short int key);
short int diz(short int key, short int key2, short int key3);
short int con(short int key, short int key2, short int key3);
short int slozh(short int key, short int key2, short int key3);
int main(){
short int a=9,b=10,c=11,d=12,e=13,f=14;
short int m;
//Создание функции отрицания
short int otrizanie(short int key){
if ((key%2)!=0){
return 0;}
else{
return 1;}
}
//Создание функции дизъюнкции
short int diz(short int key,short int key2,short int key3){
short int s;
s=0;
if ((key%2)!=0){
s=1;
goto exit1;}
else{
s=0;}
if ((key2%2)!=0){
s=1;
goto exit1;}
else{
s=0;}
if ((key3%2)!=0){
s=1;
goto exit1;}
else{
s=0;}
exit1:
return s; }
// Создание функции конъюнкции
short int con(short int key,short int key2,short int key3){
short int s;
s=0;
if ((key%2)!=0){
s=1;}
else{
s=0;
goto exit1;}
if ((key2%2)!=0){
s=1;
}
else{
s=0;
goto exit1;}
if ((key3%2)!=0){
s=1;
}
else{
s=0;
goto exit1;}
exit1:
return s; }
//Создание функции сложения по модулю два
short int slozh(short int key, short int key2, short int key3){
int d=0;
if (key%2!=0){
d++;}
if (key2%2!=0){
d++;}
if (key3%2!=0){
d++;}
if ((d%2)!=0){
return 1;}
else{
return 0;} }
printf("******************\n");
//Отрицание
printf("ОТРИЦАНИЕ\n");
m = otrizanie(a);
printf("Функция отрицания от a=9: %hi \n",m);
m= otrizanie(b);
printf("Функция отрицания от b=10: %hi \n",m);
printf("******************\n");
//Дизъюнкция
m= diz(b,d,f);
printf("Дизъюнкция от b=10,d=12,f=14: %hi \n",m);
m= diz(b,d,a);
printf("Дизъюнкция от b=10,d=12,a=9: %hi \n",m);
m= diz(b,a,d);
printf("Дизъюнкция от b=10,a=9,d=12: %hi \n",m);
m= diz(a,b,d);
printf("Дизъюнкция от a=9,b=10,d=12: %hi \n",m);
|
|
m= diz(b,a,c);
printf("Дизъюнкция от b=10,a=9,c=11: %hi \n",m);
m= diz(a,b,c);
printf("Дизъюнкция от a=9,b=10,c=11: %hi \n",m);
m= diz(a,c,b);
printf("Дизъюнкция от a=9,c=11,b=10: %hi \n",m);
m= diz(a,c,e);
printf("Дизъюнкция от a=9,c=11,e=13: %hi \n",m);
printf("******************\n");
m= con(b,d,f);
printf("Коньюкция от b=10,d=12,f=14: %hi \n",m);
m= con(b,d,a);
printf("Коньюкция b=10,d=12,a=9: %hi \n",m);
m= con(b,a,d);
printf("Коньюкция от b=10,a=9,d=12: %hi \n",m);
m= con(a,b,d);
printf("Коньюкция от a=9,d=12,d=12: %hi \n",m);
m= con(b,a,c);
printf("Коньюкция от b=10,a=9,c=11: %hi \n",m);
m= con(a,b,c);
printf("Коньюкция от a=9,b=10,c=11: %hi \n",m);
m= con(a,c,b);
printf("Коньюкция от a=9,c=11,b=10: %hi \n",m);
m= con(a,c,e);
printf("Коньюкция от a=9,c=11,e=13: %hi \n",m);
printf("******************\n");
//Сложение по модулю два
m= slozh(b,d,f);
printf("Сложение по модулю два от b=10,d=12,f=14: %hi \n",m);
m= slozh(b,d,a);
printf("Сложение по модулю два от b=10,d=12,a=9: %hi \n",m);
m= slozh(b,a,d);
printf("Сложение по модулю два от b=10,a=9,d=12: %hi \n",m);
m= slozh(a,b,d);
printf("Сложение по модулю два от a=9,b=10,d=12: %hi \n",m);
m= slozh(b,a,c);
printf("Сложение по модулю два от b=10,a=9,c=11: %hi \n",m);
m= slozh(a,b,c);
printf("Сложение по модулю два от a=9,b=10,c=11: %hi \n",m);
m= slozh(a,c,b);
printf("Сложение по модулю два от a=9,c=11,b=10: %hi \n",m);
m= slozh(a,c,e);
printf("Сложение по модулю два от a=9,c=11,e=13: %hi \n",m);
printf("******************\n");
}
Тестирование
Выводы
В соответствии условиям задачи были разработаны наборы функций, вычисляющие базовые логические операции. Результатом всех операций были либо истина, либо ложь(по причине количества вхождений и логической операции количество выходных параметров изменялось от 2 до 8).