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;

}


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


 

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

48223. ТЕРМИЧЕСКИЕ МЕТОДЫ ОЧИСТКИ ВОД 81.5 KB
  Установки термического обезвреживания минерализованных сточных вод должны соответствовать следующим основным требованиям: I обеспечивать снижение концентрации вредных веществ в очищаемой воде до значений меньших ПДК; 2 иметь незначительную чувствительность к составу стоков; 3 обеспечивать надежность и экономичность в работе; 4. Концентрирование сточных вод Многокорпусные выпарные установки. На практике используют однокорпусные и многокорпусные выпарные установки включающие аппараты с естественной и принудительной циркуляцией. Наибольшее...
48224. Основні підходи до визначення поняття парламентаризму 56 KB
  : Поняття П = відображає з одно боку місце парламенту в мехзмі поділу влади і в цьому значенні наближене до політичного режиму а з іншого принципи устрою парламенту. влади: У вузькому розумінні: оргція і функціонування органу законодавчої влади що хться верховенством парламенту наявністю в нього виключних прерогатив і повноважень Журавський В. влади з особливою активною 1998 роллю парламенту. влади з вагомою і значною роллю парламенту передбаченими Кцією можливостями його активного впливу на сусп.
48225. Бізнес план виноробного заводу «INKERMAN International» 135 KB
  Щорічно вина Inkerman виграють тендер Міністерства закордонних справ України, присутні на заходах державного рівня — поставляються до закордонних представництв і посольств України, подаються на всіх офіційних дипломатичних прийомах.
48226. Теорія та методика обраного виду спорту 155 KB
  До таких показників ставляться: час рухової реакції час виконання одиночного руху величина й характер зусиль що розвивають дані про біоелектричну активність м'язів частота скорочень серця частота подиху вентиляція легенів серцевий викид споживання кисню швидкість нагромадження й кількість лактата в крові. При визначенні ступеня специфічності вправ потрібно орієнтуватися не тільки на зовнішню форму рухів але й на характер їхньої координаційної структури особливості функціонування м'язів вегетативні реакції. До вправ загального...
48227. Релігієзнавство. Курс лекцій 486 KB
  Це зумовлено тією роллю яку відіграє релігія в житті сучасного суспільства та окремої людини впливом релігії на політику культуру тощо. Інтерес до закономірностей розвитку релігії її історії інших проблем пов'язаних з взаємовідносинами церкви і держави міжконфесійними стосунками постійно зростає. Таким чином слід наголосити що об'єкт і предмет релігієзнавства співпадають: це закономірності становлення та розвитку релігії її роль у житті суспільства та індивіда. До структури релігієзнавства насамперед входять такі науки:  Філософія...
48228. ТЕОРЕТИЧНІ ОСНОВИ МЕТРОЛОГІЧНОГО ЗАБЕЗПЕЧЕННЯ ВИТРАТОВИМІРЮВАННЯ 3.65 MB
  ТЕОРЕТИЧНІ ОСНОВИ МЕТРОЛОГІЧНОГО ЗАБЕЗПЕЧЕННЯ ВИТРАТОВИМІРЮВАННЯ КОНСПЕКТ ЛЕКЦІЙ Для студентів спеціальності Метрологія та інформаційновимірювальна техніка Рекомендовано методичною радою університету ІваноФранківськ 2011 ІваноФранківський національний технічний університет нафти і газу С. Лекційне заняття №3 Класифікація засобів відтворення і вимірювання одиниць обєму та обємної витрати газу. Газова промисловість України як окрема галузь паливноенергетичного напряму економіки держави складає сьогодні чи не...
48229. ТЕОРИЯ ОРГАНИЗАЦИИ 542.5 KB
  Фокина ТЕОРИЯ ОРГАНИЗАЦИИ Курс лекций для студентов специальности Менеджмент организации ИЗДАТЕЛЬСТВО САРАТОВСКОГО УНИВЕРСИТЕТА Теория организации: Курс лекций для студ. Менеджмент организации.В курсе лекций рассмотрены основные вопросы теории организации предусмотренные образовательным стандартом а также некоторые новые проблемы и точки роста.
48230. ПРЕДМЕТ І СИСТЕМА ТРУДОВОГО ПРАВА 391 KB
  Будьяка соціальноекономічна формація формувалася зростала й розвивалася на основі праці. Але юридичні науки цікавить не загальне поняття праці а праця як правове явище як міра праці необхідна для творчого зростання людини з урахуванням як особистого так і колективного та суспільного інтересів. Трудове право провідна галузь українського права яка є системою правових норм що регулюють сукупність трудових відносин працівників1 із роботодавцями а також інші відносини що випливають з трудових або тісно пов'язані з ними і...
48231. Конспект лекцій з філософії 753 KB
  Філософія моралі наука про правильні вчинки яка поділялась на монастику тобто етику науку про управління діями окремої людини економіку науку про управління державою. Виходячи із значення яке відіграє філософія як наука в житті та діяльності людини можна виділити поруч із методологічною такі її функції: а світоглядну філософія дозволяє людині осмислити проблеми сенсу людського життя: чому і для чого живе людина Яке її місце та призначення в світі і т. Поняття та типи світогляду Для того щоб зрозуміти значення філософії та її...