

Объектно-ориентированное программирование. Лектор – к.т.н., доцент Петренко Т.Г. Лабораторные работы. 2012 -2013 уч.год.
Срок сдачи студентами лабораторной работы – последняя неделя сентября 2012 г.
Приложение Г
Пример решения задачи сложения 2-х целых чисел «в столбец»
Задача: Реализовать операцию сложения 2-х целых чисел а и b по правилу сложения в «столбец», организовать ввод-вывод данных в двоичном и десятичном представлении на экран монитора.
//подключаемые файлы с прототипами функций
#include <stdio.h>// ввода-вывода #include <string.h>//работы со строками
#include <windows.h> //WinAPI
//прототипы функций void ChangeOut( char *); void BinOut(unsigned char);
unsigned char BinAdd (unsigned char, unsigned char); //глобальные переменные
unsigned char a,b,sum; void main ()
{ char * strstr="Сложение 2-х чисел а и b в столбец.";
ChangeOut(strstr);
printf("unsigned char a,b, 0<=a,b,a+b<=255 \n\n"); printf("Enter a: ");
scanf("%d",&a);
BinOut(a); printf("Enter b: ");
scanf("%d",&b);
BinOut(b); sum=BinAdd (a,b);
printf("Decimal presentation a+b=%d\n",sum); BinOut(sum);
printf("Decimal presentation\n a=%d,b=%d,a+b=%d\n", a,b,sum); system( "pause" );
}
//вывод двоичного представления десятичного числа х void BinOut(unsigned char x)
{int i;
printf(" Binary presentation: "); for (i=0;i<8;i++){
if (x & 0x80) putchar ('1'); else putchar('0');
x=x<<1;
}
putchar('\n');
}
// вычисление суммы двух чисел “в столбец” unsigned char BinAdd(unsigned char x, unsigned char y)
11
Объектно-ориентированное программирование. Лектор – к.т.н., доцент Петренко Т.Г. Лабораторные работы. 2012 -2013 уч.год.
Срок сдачи студентами лабораторной работы – последняя неделя сентября 2012 г.
{int i;
unsigned char mem=0, rez=0; for(i=0;i<8;i++) {
rez>>=1;
if (((x>>i)&1)^((y>>i)&1)) {if (!(mem&1)) rez|=0x80;}
else if ((x>>i)&1) if (mem) {mem=1;rez|=0x80;} else mem=1;
else
if (mem) {mem=0;rez|=0x80;} }
return rez; }
// отображение русского текста void ChangeOut( char * str)
{char * lpsz = new char[strlen(str)]; strcpy(lpsz, str);
//функция используется для преобразования кодировки (прототип доступен из
//windows.h)
CharToOem(lpsz,lpsz);
printf("%s\n",lpsz);
}
Рисунок 1 Листинг программы
Сложение 2-х чисел а и b в столбец. unsigned char a,b, 0<=a,b,a+b<=255 Enter a: 33
Binary presentation: 00100001 Enter b: 67
Binary presentation: 01000011 Decimal presentation a+b=100 Binary presentation: 01100100 Decimal presentation a=33,b=67,a+b=100
Press any key to continue
Рисунок 2 Отображение работы программы на экране монитора
Примечание. При работе с проектами в Visual C++ необходимо учитывать настройки проекта по умолчанию и изменять их при необходимости (см. пункт меню Project->…Properties (Alt+F7)->Configuration Properties->C/C++). Например,
при компиляции программы может быть установлен менее жесткий контроль за стилистическими ошибками (см. Project->…Properties (Alt+F7)->Configuration Properties->C/C++->Warning Level->Level3(/W3) )
12