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;

}


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


 

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

43487. Птенцы гнезда Петрова 108.5 KB
  Содержание Введение Жизнь Петра I Оценка личности Петра Великого Оценка реформ Петра Птенцы гнезда Петрова Лефорт Франц Яковлевич Меншиков Александр Данилович Шереметев Борис Петрович Ромодановский Федор Юрьевич Брюс Роман Вилимович Заключение...
43488. АНАЛИЗ НАЛОГОВЫХ ОБЯЗАТЕЛЬСТВ ООО «ПРОФМЕДИА ФИНАНС» 293 KB
  Целью налогового учета является формирование полной и достоверной информации о порядке учета хозяйственных операций а также обеспечение информацией внутренних и внешних пользователей обеспечивающей контроль за правильностью исчисления полнотой и своевременностью уплаты в бюджет налога. В главе 25 НК РФ нашли отражение следующие принципы ведения налогового учета: принцип денежного измерения т. 271 272 НК РФ; принцип последовательности применения норм и правил налогового учета т. нормы и правила налогового учета должны применяться...
43489. Информационно-поисковая система веб-форума 402 KB
  Сортировка производится согласно выбранному алфавиту (по умолчанию используется шведский). Эту установку можно изменить при запуске сервера MySQL. Чтобы ознакомиться с примером очень грамотной сортировки, можно обратиться к коду сортировки для чешского языка. MySQL поддерживает много различных кодировок, которые можно задавать во время компиляции и в процессе работы.
43490. ГРАЖДАНСКОЕ ПРАВО. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ 183 KB
  Общая характеристика договора розничной куплипродажи. Понятие договора розничной куплипродажи Элементы договора розничной куплипродажи. Виды договора розничной куплипродажи. Содержание договора розничной куплипродажи Обязанности продавца.
43491. ИСТОРИЯ ГОСУДАРСТВА И ПРАВА. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ 72.5 KB
  При разработке темы курсовой работы следует использовать материалы учебников и учебных пособий по курсу соответствующей дисциплины дополняя их при необходимости сведениями из смежных юридических история государства и права России история политических и правовых учений римское право конституционное право административное право международное право и др. Основные черты древневосточного права Древнегреческий полис как форма античной государственности. Источники римского права.
43492. ИСТОРИЯ ОТЕЧЕСТВЕННОГО ГОСУДАРСТВА И ПРАВА. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИ 76 KB
  При написании курсовой работы студент овладевает навыками работы с источниками специальной литературой учится приемам самостоятельного творческого исследования. Ответственность за достоверность данных содержащихся в работе и за соответствие ее требованиям несет автор исполнитель курсовой работы. Алгоритм написания курсовой работы выглядит следующим образом: Шаг первый – выбор темы.
43493. Информационная система Оценка оплаты отгруженного товара 2.45 MB
  В справочнике заказчиков хранятся данные о заказчиках: их наименованиях кодах адресах и датах заключения договоров. Условно постоянная информация Форма. Справочник готовой продукции Наименование изделия Код изделия Единица измерения Код единицы измерения Цена за единицу руб. 1 18 Форма 2 – Данные о заказчиках взяты из договоров Наименование заказчика Код заказчика Адрес Дата заключения договора Магазин В школу 501 Ул.2010 Оперативно учетная информация Форма 3 –Данные об отгрузке товаров из ТТН № ТТН Дата отгрузки Код заказчика...
43494. КРИМИНАЛИСТИКА. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ И ЗАДАНИЯ 51.5 KB
  Расследование преступных нарушений правил безопасности и охраны труда . Расследование преступных нарушений правил дорожного движения. Расследование преступлений скрытых инсценировками. Расследование преступлений совершенных в условиях неочевидности.
43495. Процесс управления организацией на основе анализа деятельности фирмы ЗАО «Комфорт» 338 KB
  Миссия организации и стратегическое видение Цели организации SWOTанализ Оценка и анализ внешней среды Управленческое обследование внутренних сильных и слабых сторон организации Анализ стратегических альтернатив и выбор стратегии Реализация стратегического плана Организация взаимодействия и полномочия Мотивация Контроль Выводы и рекомендации Далее описывается основное содержание глав курсовой работы. Рекомендации по выполнению курсовой работы Характеристика организации В настоящем разделе кратко излагаются основные характеристики...