- •1. Формулировка задачи
- •2. Представление данных и ограничения
- •3. Описание функций программы
- •3.1. Иерархическая схема
- •3.2. Прототипы функций
- •4. Алгоритм решения задачи
- •5. Тестовые наборы данных и реакции
- •6. Исходный текст программы
- •7. Описание тестирования программы
- •Анализ работы по решению задачи
6. Исходный текст программы
Содержание проекта sq2.prj:
main2.c
myio2.c
calc2.c
text2.c
/*****
Файл: main2.c
Содержание: Основная функция программы "Квадраты целых чисел".
Компилятор: Turbo C, v.2.0.
Автор: Белова М.П., группа А1-05
Версия: 1.0.
Дата: 08.11.11.
*****/
#include "myfuncs.h"
extern char *SQUARES, *QUERY, *FINAL;
void main ( void )
/*****
|
Вход: |
Нет. |
|
Действие: |
Выводит заголовок на экран, получает входные данные, вычисляет и выводит результат на экран, при согласии пользователя повторяет все действия, при несогласии – выводит сообщение: «Работа закончена!» и выходит из программы. |
|
Выход: |
Нет. |
*****/
{
do
{
Title( SQUARES );
GetPar();
Calc();
} while ( YesNo ( QUERY ) );
Finish();
}
/*****
Файл: myio2.c
Содержание: Реализация функций ввода/вывода программы "Квадраты ооооооооооооцелых чисел"
Компилятор: Turbo C, v.2.0.
Автор: Белова М.П., группа А1-05.
Версия: 1.0.
Дата: 08.11.11.
*****/
#include <STDIO.H>
#include "const.h"
extern char *STARTNUM, *NUMBERS, *FINAL;
int Begnum, /* Начальное число, задаваемое пользователем */
Maxnum; /* Количество чисел для вывода, задаваемое лллллллллллллллпользователем */
void Title ( char *text )
/*****
Вход: Текст для вывода на экран.
Действие: С новой строки выводит текст сообщения на экран.
Выход: Нет.
*****/
{
printf ( "\n%s", text );
}
int GetNum ( char *query, /* текст запроса целого числа */
int minnum, /* нижняя граница числа */
int maxnum /* верхняя граница числа */
)
/*****
|
Вход: |
См. аргументы. Считается, что minnum <= maxnum. |
|
Действие: |
С новой строки выводит текст запроса query, затем выводит " = ", опорожняет буфер клавиатуры и ожидает ввода пользователем целого числа. |
|
Выход: |
Возвращает число в указанном диапазоне. |
|
|
|
|
ПРИМЕЧАНИЕ: |
При попытке выхода за диапазон возвращает значение ближайшей границы; при нарушении правил набора целого числа, возвращает значение середины диапазона. |
*****/
{
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;
}
int YesNo ( char *query )
/*****
|
Вход: |
Текст запроса типа "Да/Нет". |
|
Действие: |
С новой строки выводит текст запроса, выводит " [Y/N]? ", опорожняет буфер клавиатуры и ожидает реакцию пользователя. |
|
Выход: |
Возвращает 1 при нажатии клавиши 'Y' или '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.
Дата: 08.11.11.
*****/
#include <STDIO.H>
extern char *OUTMSG;
extern int Maxnum, Begnum;
void Calc( void )
/*****
|
Вход: |
Нет. |
|
Действие: |
Исходя из значений Begnum и Maxnum, вычисляет квадраты заданных чисел и выводит строки результата вида: |
|
|
"Число = ххх, его квадрат = ууууу".
|
|
Выход: |
Нет. |
*****/
{
int i, k;
for ( i = 0; i < Maxnum; i++ )
{
k = Begnum + i;
printf ( OUTMSG, k, k*k );
}
}
/*****
Файл: text2.c
Cодержание: Cтроки сообщений программы "Квадраты целых чисел".
Компилятор: Turbo C, v.2.0.
Автор: Белова М.П., группа А1-05.
Версия: 1.0.
Дата: 08.11.11.
*****/
#include "version.h"
#ifdef ENGLISH
char *SQUARES = "Integer squares output";
char *STARTNUM = "First value";
char *NUMBERS = "Number of value";
char *FINAL = "The work is finished!";
char *QUERY = "Repeat";
char *OUTMSG = "\nValue = %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.
Дата: 08.11.11.
*****/
#define MINNUM -181 /* минимальное обрабатываемое число */
#define MAXNUM 181 /* максимальное обрабатываемое число */
#define MINLINES 1 /* минимальное выводимое число строк
таблицы квадратов */
#define MAXLINES 23 /* максимальное выводимое число строк
таблицы квадратов */
/*****
Файл: myfuncs.h
Содержание: Прототипы функций программы "Квадраты целых чисел".
Компилятор: Turbo C, v.2.0.
Автор: Белова М.П., группа А1-05
Версия: 1.0.
Дата: 08.11.11.
*****/
extern
void Title ( char *text )
/*****
Вход: Текст для вывода на экран.
Действие: С новой строки выводит текст сообщения на экран.
Выход: Нет.
*****/
;
extern
void GetPar ( void )
/*****
|
Вход: |
Нет. |
|
Действие: |
Получает входные данные Begnum и Maxnum с контролем на ОДЗ и совместимость и корректирует значение Maxnum при необходимости. |
|
Выход: |
Нет. |
*****/
;
extern
int GetNum ( char *query, /* текст запроса целого числа */
int minnum, /* нижняя граница числа */
int maxnum /* верхняя граница числа */
)
/*****
|
Вход: |
См. аргументы. Считается, что minnum < = maxnum. |
|
Действие: |
С новой строки выводит текст запроса query, затем выводит " = ", опорожняет буфер клавиатуры и ожидает ввода пользователем целого числа. |
|
Выход: |
Возвращает число в указанном диапазоне. |
|
|
|
|
ПРИМЕЧАНИЕ: |
При выходе за диапазон возвращается значение ближайшей границы; при нарушении правил набора целого числа возвращает значения середины диапазона. |
/*****
;
extern
void Calc ( void )
/*****
|
Вход: |
Нет. |
|
Действие: |
Исходя из значений Begnum и Maxnum, вычисляет квадраты заданных чисел и выводит строки результата вида: |
|
|
"Число = ххх, его квадрат = ууууу".
|
|
Выход: |
Нет. |
*****/
;
extern
int YesNo ( char *query )
/*****
|
Вход: |
Текст запроса query типа "Да/Нет". |
|
Действие: |
С новой строки выводит текст запроса, выводит "[Y/N]? ", опорожняет буфер входного потока и ожидает реакцию пользователя. |
|
Выход: |
Возвращает 1 при нажатии клавиши 'Y' или 'y', иначе 0. |
*****/
;
extern
void Finish ( void )
/*****
Вход: Нет.
Действие: Дважды переводит строку и выводит текст FINAL.
Выход: Нет.
*****/
;
/*****
Файл: version.h
Содержание: Управление генерируемой версией программы
"Квадраты целых чисел".
Компилятор: Turbo C, v.2.0.
Автор: Белова М.П., группа А1-05.
Версия 1.0.
Дата: 08.11.11.
*****/
#define ENGLISH1 /* При ENGLISH 1 - диалог на английском языке,
При ENGLISH1 - диалог на русском языке.
*/
