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;

}


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


 

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

44033. Методы снижения нелинейных искажений в тракте звуковой частоты 2.1 MB
  Принцип действия электродинамической головки громкоговорителя ГД основан на взаимодействии проводника с током в поле постоянного магнита в результате которого возникает сила действующая на проводник. Основные характеристики головки громкоговорителей: Диффузорные головки громкоговорителей конструктивно состоят из трех частей: подвижной системы магнитной системы и корпуса. Конструкция электродинамической диффузорной головки громкоговорителя с кольцевым магнитом показана на рисунке 1...
44034. Технология создание буклета 2.61 MB
  Буклеты являющиеся информационно-рекламным листком исходя из своего функционала могут использоваться для рассылки по клиентской базе для раздачи во время контактов с клиентами деловыми партнерами или могут быть информационным средством распространения информации на массовых мероприятиях. Макетирование Составим макет буклета по следующему алгоритму: Определим назначение буклета Определим формат буклета Определим основные объекты Определим основные параметры каждого объекта Определим значение каждого объекта и место...
44035. Участковая станция «Б» узловая с поперечным расположением приемо-отправочного и сортировочного парков 969.5 KB
  В состав грузового поезда входит 60 вагонов. Выгрузка на грузовом дворе составляет 32 вагонов погрузка 26 вагонов. Выгрузка на подъездном пути завода составляет 46 вагонов погрузка 28 вагонов. 16 путь накопление вагонов на станцию А и далее 17 путь накопление вагонов на участок АБ 18 путь накопление вагонов на станцию Г и далее 19 путь накопление вагонов на участок БГ и т.
44036. Автоматизированная система управления для фитнес клуба 3.89 MB
  Инспектор Объектов состоит из двух страниц, каждую из которых можно использовать для определения поведения данного компонента. Первая страница - это список свойств, вторая - список событий. Если нужно изменить что-нибудь, связанное с определенным компонентом, то Вы обычно делаете это в Инспекторе Объектов. К примеру, Вы можете изменить имя и размер компонента TLabel изменяя свойства Caption, Left, Top, Height, и Width.
44037. Технологія нанесення декоративной штукатурки та виконання техніки терра 2.32 MB
  Композиції в стилі «терра» виконуються в коллажності техніці. Багато чому, що у повсякденному житті сприймається як сміття, в колажах знаходиться місце. Предмети, здавалося б, нецікаві самі по собі, будучи вбудованими в роботу, стають частиною свого роду містерії, ігри, вистави, в якому їм відведена значна роль. Чарівність техніки «терра» - в її багатозначності. З її допомогою можна відтворити обсяг, глибину, колір, гру світлотіні, різноманітність фактури. Багато що пов`язує колаж «терра» з живописом. На висохлий розчин накладається колористичний тон. Тон - це основний колір всієї композиції або який-небудь її частини.
44038. Разработка проекта по совершенствованию государственного регулирования налогообложения РФ 301.5 KB
  Экономическая сущность налога и налогообложения Формирование системы налогообложения Государственная политика в области налогообложения Принципы налогообложения и их современные интерпретации
44039. Дослідження стану галузі молочного скотарства 1.16 MB
  Метою нашої роботи є дослідження стану галузі молочного скотарства на прикладі одного господарства, визначення генетичного потенціалу стада та розробки рекомендацій щодо поліпшення племінних і продуктивних властивостей гурту великої рогатої худоби чорно-рябої породи.
44040. Разработка мультиплатформенного веб-приложения для размещения в локальных сетях и сети Интернет, предназначенного для ведения электронной истории болезни 4.37 MB
  Технология проектирования и отладки веб-приложений; централизованная база данных. Электронная История Болезни это совокупная информация о пациенте которая составляется и хранится в автоматизированной информационной базе данных медицинского учреждения и их сети. В систему входят: медицинские организации с их профессиональными и информационными образовательными ресурсами медицинскими диагностическими устройствами базами данных а также пользователи системы и др....
44041. Разработка системы помощи - справочная система «Art-shtrih.exe» 925 KB
  Вызов отчета из меню Охрана труда и окружающей среды. Правовые нормативные социально-экономические и организационные вопросы охраны труда Охрана труда необходима везде где трудится человек. Лишь охрана труда как система обеспечения безопасности жизни способна обеспечить здоровые и безопасные условия труда. Многосторонняя охрана труда имеет большое социальное экономическое и правовое значение.