1375

Вычислительная техника

Лабораторная работа

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

Возвращаем массив битов в место вызова функции. Сложение в двоичном коде уже преобразованных чисел. Перевод двоичного числа в десятичное представление. Количество битов в двоичном представлении числа.

Русский

2013-01-06

111 KB

3 чел.

Министерство образования и науки Украины

кафедра «Компьютеризированные системы управления»

Отчёт

по лабораторной работе №1

дисциплина: «Вычислительная техника»

Выполнил:

Студент 3 курса

Группы АТ-092

Папач В.В.

  

                                                    

                                                           Одесса  2012

                         


Листинг программы

#include<stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <string.h>

#include <iostream>

#include <math.h>

intPerenos = 0;

/*

Открытые файлы. В случае успешного действия возвращает

Указатель на файл или NULLв противном случае

*/

FILE* OpenFileResult(char *filename, // Режимдоступакфайлу

char* mode /*Имя файла*/)

{

setlocale(LC_ALL, "Russian");

printf("%s", filename);

     FILE *fp; // Указательнафайл

if ((fp = fopen(filename, mode)) == NULL) // Проверкаоткрития

     {

         // ВозвращаемNULL –файланет

return NULL;

     }

else

     {

         // Открываемфайлfilenameс режимомmode

fp = fopen(filename, mode);

     }

     // Возвращаем указатель на файл

returnfp;

}

/*

Считывание числа из файла filename и возврат массива битов

*/

int* ReadNumberFromFile(char* filename, intsize_num)

{

setlocale(LC_ALL, "Russian");

    FILE *fp;

int* number = new int[size_num];

fp = OpenFileResult(filename, "r"); // Открываемфайл

    //std::cout<<fp<<" "<<filename<<std::endl;

if (fp == NULL) // Если файла нет, завершаем работу программы

{

printf("Ошибкачтенияфайла %s.Проверьтеегоналичие и права доступа!!!\n\n\n", filename);

getch();

getch();

fclose(fp); // Закрываем файловый поток

exit(0);

    }

else

    {

        // Считываем побитово информацию из файла в массив Number

for (inti = 0; i<size_num; i++)

        {

fscanf(fp, "%d ", &number[i]);

        }

    }

printf("\n");

for (inti = 0; i<size_num; i++)

printf("%d ", number[i]);

printf("\n\n");

fclose(fp); // Закрываем файловый поток

returnnumber; // возвращаем массив битов в место вызова функции

}

// Инвертируемчисло mas

int* InverseCode(int *mas, intsize_mas)

{

setlocale(LC_ALL, "Russian");

int* result_inverse = new int [size_mas];

for (inti = 0; i<size_mas; i++)

    {

if (mas[i] == 0)

result_inverse[i] = 1;

else if (mas[i] == 1)

result_inverse[i] = 0;

}

returnresult_inverse;

}

// Сложение в двоичном коде уже преобразованных чисел

int* AdditionInBoolCode(int *num1, int* num2, intsize_num)

{

Perenos = 0;

setlocale(LC_ALL, "Russian");

int *result = new int[size_num];

printf("\n");

for (inti = (size_num - 1); i >= 0; i--)

    {

result[i] = num1[i] + num2[i] + Perenos;

        //printf("%d +%d + %d = %d", num1[i], num2[i], Perenos, result[i]);

if (result[i] == 2)

        {

result[i] = 0;

Perenos = 1;

        }

if (result[i] == 3)

        {

result[i] = 1;

Perenos = 1;

        }

else

Perenos = 0;

        //printf(" %d\n", result[i]);

    }

return result;

}

// Добавление 00000001кчислу

int* AddOneByte(int* number, intsize_num)

{

setlocale(LC_ALL, "Russian");

int *one = new int[8];

int *result = new int[8];

printf("\n\nOutputAddOneByte:\n");

for (inti = 0; i< (size_num - 1); i++)

one[i] = 0;

one[size_num - 1] = 1;

for (inti = 0; i<size_num; i++)

printf("%d ", one[i]);

printf("\n\n");

result = AdditionInBoolCode(number, one, size_num);

returnresult;

}

// Перевод двоичного числа в десятичное представление

int Perevod10(int *mas, intsize_mas)

{

setlocale(LC_ALL, "Russian");

int number = 0;

int step = size_mas;

for (inti = 0; i<size_mas; i++)

   {

step--;

if (mas[i] == 1)

number += (int) pow(2, step);

   }

return number;

}

voidPrint_Result(int* num1, int* num2, intsize_num, int* obr, int* obr_preobr, int* dop_code)

{

setlocale(LC_ALL, "Russian");

printf("Выводрезультатанаэкран:\n\n");

printf("\Результат вычитания в обратном коде:\n");

for (inti = 0; i<size_num; i++)

{

printf("%d ", obr[i]);

    }

printf("\Результат в прямом коде(Обратное преобразование):\n");

for (inti = 0; i<size_num; i++)

    {

printf("%d ", obr_preobr[i]);

}

printf("\nПредставление результата в дополнительном коде:\n");

for (inti = 0; i<size_num; i++)

    {

printf("%d ", dop_code[i]);

}

}

intmain(void)

{

   // Количество битов в двоичном представлении числа

constintsize_number = 8;

int *number1 = new int[size_number], // 1 число

       *number2 = new int[size_number], // 2 число

*result_dop = newint[size_number], // Результатвычитаниявдополнительном коде

       *result_obr = newint[size_number], // Результатвычитаниявобратном коде

       *num1 = newint[size_number], // Временный массив (если будут нужны промежуточные вычисления )

       *num2 = newint[size_number], // Временный массив (если будут нужны промежуточные вычисления)

*temp = new int[size_number];

char *FirstNumberFile = "input_first.txt",

        *SecondNumberFile = "input_second.txt";

   // Считываемчиславфайл

   number1 = ReadNumberFromFile(FirstNumberFile, size_number);

   number2 = ReadNumberFromFile(SecondNumberFile, size_number);

for (inti = 0; i<size_number; i++)

   {

num1[i] = number1[i];

num2[i] = number2[i];

}

   // Вычитание в обратном коде

   // Инвертируем числа если их знаковые разряды отрицательные

if (number1[0] == 1)

   {

      num1 = InverseCode(number1, size_number);

   }

if (number2[0] == 0)

   {

      num2 = InverseCode(number2, size_number);

printf("\n");

for (inti = 0; i < 8; i++)

printf("%d ", num2[i]);       

   }

temp = AdditionInBoolCode(num1, num2, size_number);

if (Perenos == 1)

   {

result_obr = AddOneByte(temp, size_number);

   }

else

   {

result_obr = InverseCode(temp, size_number);

   }

result_dop = AddOneByte(temp, size_number);

Print_Result(number1, number2, 8, temp, result_obr, result_dop);

// Вычитание в дополнительном коде

getch();

return 0;

}


Блок-схема алгоритма


 

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

45380. Соотношение права и морали 51.65 KB
  соотношение права и морали. Единство права и морали заключается в следующем: право и мораль являются универсальными регуляторами поведения людей имеют способность проникать в различные области общественной жизни; право и мораль являются многомерными образованиями имеющими сложную структуру которая состоит из одинаковых и взаимодействующих между собой элементов; право и мораль действуют в едином поле социальных отношений; право и мораль служат общей цели – совершенствованию и упорядочению общественной жизни...
45381. Принципы права понятие и классификация 47.7 KB
  принципы права понятие и классификация Принципы права – это основные исходные начала положения идеи выражающие сущность права как специфического социального регулятора. Они воплощают закономерности права его природу и социальное назначение представляют собой наиболее общие правила поведения которые либо прямо сформулированы в законе либо выводятся из его смысла.Представляется что принципы права должны отражать и выражать основные ценности на которые ориентируется право. Принципы выступают в качестве своеобразной несущей конструкции...
45382. ТГП в системе общественных наук 45.79 KB
  Теория права и государства имея свой предмет функции и метод занимает специфическое место в системе общественных неюридических наук. Философия и теория права и государства. Что касается теории государства и права то она изучает государство и право мно гогранно обращаясь при этом к передовым достижениям философии и используя философские категории сущность содержание и форма часть и целое возможность и действительность система и структура и др. Теория государства и права вооружает философию материалом позволяющим делать обобщения и...
45383. Место и роль тгп в системе юридических наук. 47.03 KB
  Теория государства и права входит в систему юридических наук объединенных общим названием правоведение. По классификации юридических наук она относится к теоретикоисторическим наукам вместе с историей государства и права и историей политических и правовых учений или учений о праве и государстве. История государства и права изучает процесс исторического развития государственноправовых форм жизни конкретных стран в хронологическом порядке т. Теория государства и права исследует развитие государства и права в обобщеннотеоретическом виде...
45384. Предмет и методология тгп 48.66 KB
  Предмет и методология тгп Теория государства и права система научных знаний об объективных свойствах государства и права их внутренней структуре и логике развития; об основных и общих закономерностях возникновения развития и функционирования государственноправовых явлений. Как и любая другая наука теория государства и права имеет свой предмет и метод. Предмет теории государства и права объективные свойства государства и права основные и общие закономерности возникновения развития и функционирования государственных и правовых...
45385. Социально-исторические предпосылки происхождения государства 72 KB
  юридические факты и фактические составы понятие чиды Юридические факты – это определённые жизненные обстоятельства условия ситуации с которыми нормы права связывают возникновение прекращение или изменение правоотношений. Эти факты становятся юридическими не в силу какихто особых внутренних свойств а в результате при знания их таковыми государством законом. Не право порождает подобные факты они возникают и существуют помимо не го но право придает им статус юридических в целях их регуляции и упорядочения общественной и государст...
45386. Основные теории происхождения государств 80 KB
  Теологическая теория Фома Аквинский базируется на идее божественного создания государства с целью реализации общего блага. Теологическая теория пронизана идеей вечности государства его незыблемости. Данная теория основывается на идее происхождения государства в результате соглашения договора как акта разумной воли людей. Договорившись о создании государства люди либо передают правителю часть своих прирожденных прав чтобы потом получить их из его рук один вариант трактовки происхождения государства либо условливаются о сохранении...
45387. Понятие и сущность государства 67.5 KB
  Государство характеризуют следующие признаки отличающие его как от догосударственных так и него сударственных организаций: 1 наличие публичной власти выделенной из общества и не совпадающей с населением страны государство обязательно обладает аппаратом управления принуждения правосудия ибо публичная власть – это чиновники армия полиция суды а также тюрьмы и другие учреждения; 2 система налогов податей займов выступая основной доходной частью бюджета любого государства они необходимы для проведения определённой политики и...
45388. Публичная политическая власть как признак государства. Понятие и свойства, легитимность легальность 47.59 KB
  юридический прецедент как источник права Юридический прецедент судебная практика более распространенный в современном мире источник права чем правовой обычай. Иначе говоря юридический прецедент это следование не общему правилу установленному нормой права а норма сформировавшаяся в результате практики разрешения аналогичных дел. Судебный прецедент признавался источником права еще в Древнем Риме. Многие институты римского права сложились на базе судебных решений.