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;

}


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


 

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

29999. Разработка автоматизированного электропривода шлифовального станка 127.05 KB
  В некоторых тяжелых станках применяется автоматическое регулирование скорости вращения двигателя в диапазоне примерно 2:1 с целью поддержания постоянства скорости резания. Поэтому при сравнительно больших диаметрах шлифовальных кругов до 1000 мм скорость вращения шлифовального шпинделя ниже или равна скорости вращения приводного двигателя около 950 об мин. Скорости вращения этих двигателей 24000 : 48000 об мин а при малых диаметрах шлифовальных кругов доходят до 150000 : 200000 об мин. При скоростях вращения до 48000 об мин ротор...
30001. Анализ и структура активных операций, проводимых в Московском филиале ОАО АКБ «Росбанк», а также технология их осуществления 893.82 KB
  Успех того или иного банка все больше зависит от эффективного управления постоянного повышения конкурентоспособности. Поэтому вопрос управления активными и пассивными банковскими операциями в современных условиях приобретает особую остроту поскольку от того насколько эффективно используются ресурсы банка зависит основной финансовый показатель деятельности банка прибыль. Опыт как мировой так и отечественной практики показывает что недооценка управления в банках приводит к негативным последствиям в их деятельности. В соответствии со...
30002. ОЦЕНКА ВЛИЯНИЯ АНТРОПОГЕННОГО ФАКТОРА НА ПРОСТРАНСТВЕННУЮ ДИНАМИКУ ГИДРОХИМИЧЕСКИХ ПАРАМЕТРОВ В РЕКЕ МОСКВА 8.72 MB
  Антропогенное загрязнение водных ресурсов Московского региона в последнее время приобретает черты неуправляемого и неконтролируемого процесса, предоставляющего серьёзную угрозу здоровью населения. Загрязнение вод нарушает экологическую устойчивость водной среды, приносит значительный экономический ущерб народному хозяйству.
30003. Организация ресторана. Роль повара – кондитера на предприятии общественного питания 956.86 KB
  Пищевая ценность блюд. Соблюдение санитарных требований правил личной гигиены при приготовлении блюд. Бракераж готовых блюд. Характер приготовления блюд русской кухни в значительной мере обусловлен особенностям русской печи которая в качестве очага столетиями с 14 века верно служила и богатому и простому народу.
30004. Применение оптимальных способов преобразования и регулирования социальных отношений и процессов в жизнедеятельности людей 118.18 KB
  Политические и социально-экономические катаклизмы, вызванные резким переходом страны от социалистической системы хозяйствования к капиталистической, создали благоприятную почву для роста преступности, коррупции, разрыву между доходами богатых и бедных
30006. Анализ коммуникационных связей и деятельности на предприятии в системе руководитель-подчиненный. Общая характеристика организации ООО «Весна» 380 KB
  Коммуникация это связующие нити объединяющие взаимозависимые части организации. Коммуникация является жизненно важной системой организации : если каким то образом ликвидировать потоки сообщений в организации то она прекратит свое существование. Коммуникация предоставляет средства для выработки и исполнения решений осуществления обратной связи и корректировки целей и процедур деятельности организации в соответствии с требованиями ситуации. Организационная коммуникацияэто процесс с помощью которого руководители развивают...
30007. Обоснование содержания экспериментальной Программы адаптивной физической реабилитации и методики использования ее средств на различных формах занятий для улучшения рессорных функций стопы при плоскостопии у детей среднего школьного возраста 328.06 KB
  1 Общая характеристика строения и видов нарушений свода стопы___6 1. Слабость мышц поддерживающих своды стопы является одним из условий нарушений нормального свода стопы что в конечном счёте может привести к патологическим изменениям не только стопы но и всего опорнодвигательного аппарата ОДА а также к нарушению сердечно сосудистой и нервной системам. Плоскостопие нарушает рессорные функции стопы почти пропадает амортизация и при ходьбе вся отдача встряска достается голени и тазобедренному суставу что может привести к...