Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет по squares.doc
Скачиваний:
2
Добавлен:
26.11.2018
Размер:
336 Кб
Скачать
☆

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 - диалог на русском языке.

*/