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

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