Составить программу, которая проверяла бы, не приводит суммирование двух целых чисел А и В к переполнению (результату большему чем 32767). Если будет переполнение, то сообщить об этом, иначе вывести сумму этих чисел.
Решение 1 (написано на Borland C++ v 3.1):
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <conio.h> #include <iostream.h> void main () { int a,b,c; printf ("\nThe Program of the checking the summation two integers.\nIf result will more than 32767, will be a report on error\n"); printf ("\nWill enter the number 1 and press Enter,\n will then number 2 and press Enter\n"); scanf("%d%d",&a,&b); c=a+b; if (a,b,c <= 32767) { c=a+b; printf ("\n %d+%d",a,b); printf ("\n %d",c); } else printf ("\aThe Error! The Result of the adding brings about overflow!\n"); getch(); }
Решение 2 (написано на Microsoft Visual Studio C++ v.6, вывод в консоли русским и разноцветным текстом):
#include <windows.h> #include <stdio.h> #include <math.h> #include <conio.h> #include <iostream.h> void main () { int a,b,c; HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); char name[128]; CharToOem("Проверка суммирования двух целых чисел",name); //Заголовок в активном окне char ls[512]="Программу написал:\n \n"; CharToOem(ls,ls); cout<<ls<<endl; SetConsoleTextAttribute(hOut,FOREGROUND_INTENSITY | FOREGROUND_GREEN); //Вывод зелёным цветом char start[512]="Программа проверки суммирования двух целых чисел"; CharToOem(start,start); cout<<start<<endl; SetConsoleTextAttribute(hOut,FOREGROUND_GREEN | FOREGROUND_INTENSITY | FOREGROUND_BLUE); char enter[512]="Пожалуйста, введите число №1 и нажмите Enter,\n затем введите число №2 и нажмите Enter\n"; CharToOem(enter,enter); cout<<enter<<endl; SetConsoleTitle(name);//Дополнения к заголовку PCONSOLE_SCREEN_BUFFER_INFO bu=(PCONSOLE_SCREEN_BUFFER_INFO)malloc(sizeof(PCONSOLE_SCREEN_BUFFER_INFO)); SetConsoleTextAttribute(hOut,FOREGROUND_GREEN | FOREGROUND_INTENSITY | FOREGROUND_RED);//Вывод желтым цветом цветом scanf("%d%d",&a,&b); c=a+b; if (a,b,c <= 32767) { c=a+b; printf ("\n %d+%d",a,b); printf ("\n %d",c);} else { SetConsoleTextAttribute(hOut,FOREGROUND_INTENSITY | FOREGROUND_RED); //Вывод красным цветом char enter1[512]="\aОшибка! Результат сложения приводит к переполнению!\n"; CharToOem(enter1,enter1); cout<<enter1<<endl; } getch(); }