
6. Исходный текст программы
Содержание проекта sq2.prj:
main2.c
myio2.c
calc2.c
text2.c
/*****
Файл: main2.c
Содержание: Основная функция программы "Квадраты целых чисел".
Компилятор: Turbo C, v.2.0.
Автор: Ахундов З.С., гр А1-05
Версия: 1.0.
Дата: 20.10.11.
*****/
#include "myfuncs.h"
extern char *SQUARES, *QUERY, *FINAL;
void main ( void )
/*****
Вход: Нет.
Действие: Выводит заголовок на экран, получает входные данные, вычисляет
и выводит результат на экран, при согласии пользователя
повторяет все действия, при несогласии - выходит из программы.
Выход: Нет.
*****/
{
do
{
Title ( SQUARES ) ;
GetPar () ;
Calc () ;
} while ( YesNo ( QUERY ) ) ;
Finish ( FINAL ) ;
}
/*****
Файл: myio2.c
Содержание: Реализация функций ввода/вывода программы "Квадраты целых
чисел
Компилятор: Turbo C, v.2.0.
Автор: Ахундов З.С., гр А1-05.
Версия: 1.0.
Дата: 20.10.11.
*****/
#include <STDIO.H>
#include "const.h"
extern char *STARTNUM, *NUMBERS;
15
int Begnum, /* Начальное число, задаваемое пользователем */
Maxnum /* Количество чисел, задаваемое пользователем */
void Title ( char *text )
/*****
Вход: Текст для вывода на экран.
Действие: С новой строки выводит текст на экран.
Выход: Нет.
*****/
{
printf ( "\n%s", text );
}
int GetNum ( char *query, /* текст запроса целого числа */
int minnum, /* минимальная граница числа */
int maxnum, /* максимальная граница числа */
)
/*****
Вход: См. аргументы. Считается, что minnum <= maxnum.
Действие: С новой строки выводит текст запроса на экран, добавляет « = «
и ожидает ввода пользователем целого числа.
Выход: Возвращает число в указанном диапозоне.
ПРИМЕЧАНИЕ: При попытке выхода за диапозон возвращает значение ближайшей
границы; при нарушении правил набора целого числа возвращает
значение середины диапозона.
*****/
{
int n;
printf ( «\n%s = », query ) ;
fflush ( stdin ) ;
if ( scanf ( «%d», &n ) ! = 1 )
n = ( minnum + maxnum ) / 2;
else if ( n < minnum )
n = minnum;
else if ( n > maxnum )
n = maxnum;
return n;
}
void GetPar ( void )
/*****
Вход: Нет.
Действие: Получение начального числа и количества обрабатываемых чисел в
глобальные переменные Begnum и Maxnum с контролем их ОДЗ,
совместимости и коррекцией переменной Maxnum при необходимости.
Выход: Нет.
*****/
{
Begnum = GetNum ( STARTNUM, MINNUM, MAXNUM ) ;
Maxnum = GetNum ( NUMBERS, MINLINES, MAXLINES ) ;
if ( Begnum + Maxnum > MAXNUM )
Maxnum = MAXNUM – Begnum + 1;
}
16
int YesNo ( char *query )
/*****
Вход: Текст запроса типа "Да/Нет".
Действие: С новой строки выводит текст запроса на экран, добавляет
" [ Y/N ] ? ", и ожидает ввода пользователя.
Выход: Возвращает 1 при нажатии клавиши 'У' или 'Y' , иначе 0.
*****/
{
int c;
printf( "\n%s [ Y/N ] ? ", query ) ;
fflush( stdin ) ;
c = getchar( ) ;
if ( ( c == 'y' ) || ( c == 'Y' ) )
return 1 ;
else
return 0 ;
}
void Finish( void )
/*****
Вход: Нет.
Действие: С новой строки выводит текст сообщения Final на экран.
Выход: Нет.
*****/
{
printf( "/n%s", FINAL );
}
/*****
файл: calc2.c
Содержание: Реализация функции вычисления и выводов результатов
программы "Квадраты целых чисел"
Компилятор: Turbo C, v.2.0.
Автор: Ахундов З.С., гр А1-05.
Версия: 1.0.
Дата: 20.10.11.
*****/
#include <STDIO.H>
extern char *OUTMSG;
extern int Begnum, Maxnum;
void Calc( void )
/*****
Вход: Нет.
Действие: Вычисляет Maxnum квадтатов чисел начиная от Begnum и выводит на
экран таблицу со строками вида:
"Число = ххх, его квадрат = ууууу".
Выход: Нет.
*****/
17
{
int i, k;
for ( i = 0; i < Maxnum; i++ )
{
k = Begnum + i;
printf ( OUTMSG, k, k*k );
}
}
/*****
Файл: text2.c
содержание: Тексты сообщений программы "Квадраты целых чисел".
Компилятор: Turbo C, v.2.0.
Автор: Ахундов З.С., гр А1-05.
Версия: 1.0.
Дата: 20.10.11.
*****/
#include "version.h"
#ifdef ENGLISH
char *SQUARES = "Integer squares output";
char *STARTNUM = "The first number";
char *NUMBERS = "The amount of numbers";
char *FINAL = "The work is finished!";
char *QUERY = "Repeat";
char *OUTMSG = "\nNumber = %3d, its square = %5d";
#else
char *SQUARES = "Вывод квадратов целых чисел";
char *STARTNUM = "Начальное число";
char *NUMBERS = "Количество чисел";
char *FINAL = "Работа закончена!";
char *QUERY = "Повторить";
char *OUTMSG = "\nЧисло = %3d, его квадрат = %5d";
#endif
/*****
Файл: const.h
Содержание: Числовые константы программы "Квадраты целых чисел".
Компилятор: Turbo C, v.2.0.
Автор: Ахундов З.С., гр А1-05.
Версия: 1.0.
Дата: 20.10.11.
*****/
#define MINNUM -181 /* минимальное обрабатовыемое число */
#define MAXNUM 181 /* максимальное обрабатываемое число */
#define MINLINES 1 /* минимальное количество строк, выводимое на экран */
#define MAXLINES 18 /* максимальное количество строк, выводимое на экран */
18
/*****
Файл: myfuncs.h
Содержание: Прототипы функций программы "Квадраты целых чисел".
Компилятор: Turbo C, v.2.0.
Автор: Ахундов З.С., гр А1-05
Версия: 1.0.
Дата: 20.10.11.
*****/
extern
void Title ( char *text )
/*****
Вход: Текст для вывода на экран.
Действие: С новой строки выводит текст на экран.
Выход: Нет.
*****/
;
extern
void GetPar ( void )
/*****
Вход: Нет.
Действие: Получение и сохранение начального числа и количество
обрабатываемых чисел в глобальные переменные Begnum и
Maxnum, проверка значений Begnum и Maxnum на ОДЗ и коррекция
переменной Maxnum при необходимости.
Выход: Нет.
*****/
;
extern
int GetNum ( char *query, /* запрос ввода числа пользователем */
int minnum, /* минимальная граница числа */
int maxnum /* максимальная граница числа*/
)
/*****
Вход: См. аргументы. Считается, что minnum < = maxnum.
Действие: С новой строки выводит текст запроса на экран,
добавляет " = " и ожидает ввода пользователем целого числа.
Выход: Возвращает число в указанном диапозоне.
ПРИМЕЧАНИЕ: При выходе за диапозон возвращается значение ближайшей
границы; при нарушении правил набора целого числа возвращает
значения середины диапозона.
/*****
;
extern
void Calc ( void )
/*****
Вход: Нет.
Действие: Вычисляет Maxnum квадратов чисел начиная от Begnum и выводит
на экран таблицу со строками вида:
"Число = ххх, его квадрат = ууууу".
Выход: Нет.
*****/
19
;
extern
int YesNo ( char *query )
/*****
Вход: Текст запроса "Да/Нет".
Действие: С новой строки выводит текст запроса на экран, добавляет
" [Y/N]? ", и ожидает ввода пользователя.
Выход: Возвращает 1 при нажатии клавиши 'y' или 'Y', иначе 0.
*****/
;
extern
void Finish ( void )
/*****
Вход: Нет.
Действие: С новой строки выводит текст сообщения на экран.
Выход: Нет.
*****/
;
/*****
Файл: version.h
Содержание: Управление генерируемой версией программы "Квадраты целых
чисел".
Компилятор: Turbo C, v.2.0.
Автор: Ахундов З.С., гр А1-05.
Версия 1.0.
Дата: 20.10.11.
*****/
#define ENGLISH1 /* ENGLISH 1 - диалог на английском языке,
ENGLISH1 - диалог на русском языке. */
20