Читайте также:
|
|
Для реализации поставленных задач были использованы следующие стандартные библиотеки языка Си:
1. stdio.h – содержит константы и объявления функций и типов, используемых для различных операций стандартного ввода и вывода, таких как:
2. conio.h - консольный ввод-вывод.
3. stdlib.h - содержит в себе функции, занимающиеся выделением памяти, контроль процесса выполнения программы, преобразования типов и другие.
4. locale.h – позволяет использовать символы русского алфавита.
5. string.h - содержащий функции для работы с нуль-терминированными строками и различными функциями работы с памятью.
6. time.h - содержит типы и функции для работы с датой и временем.
Использованные функции из данных библиотек:
fopen – открытие файла;
fscanf – считывает данные из файла;
fclose – закрывает открытый файл;
printf – вывод данных;
scanf – считывает данные с клавиатуры;
_getch - считывает символ из консоли без отображения;
_flushall – очистка буффера клавиатуры;
malloc - обеспечивают выделение блока памяти, определенного размера
Формат и структура данных:
Структура данных состоит из двух полей: страна и столица это массивы символов.
Листинг А.1. Описание структуры:
struct Date
{
char country[81];
char capital[81];
};
Данные хранятся в текстовом файле input, расширения txt. Верхнее значение в текстовом файле указывает на количество записей, каждая запись пронумированна. Формат записи имеет следующий вид: «1. Страна Столица».
Для достижения поставленной цели был разработан необходимый набор функций:
Date *input_date(FILE *in, int N); - чтение данных из файла
Формальные параметры указатель на файл и количество записей типа-int.
bool find(Date dd,int mode2, char *answer); - проверка ответа
Формальные параметры: структура данных, режим типа int 1 или 0, и указатель на ответ типа char.
Глобальные переменные:
Date *d – массив данных
int N – размер массива d
FILE *in - указатель на файл с данными input.txt
int mode - режим: 0 - тренировка, 1 - тест
int mode2- режим: 0 - дана страна, 1 - дана столица
int index – полученное случайное число
char answer[81] - ответ
bool res - результат true - верно, false - нет
int ballet=0- кол-во набранных баллов (для теста)
char ch – отвечает за выбор режима
int i=0- счетчик
Листинг А.2.- интерфейс выбора режима:
printf("Введите режим:\n0 - тренировка \n1 - тест\n");
while(1)
{
_flushall();
ret = scanf("%d",&mode);
if(ret == 1 && (mode == 0 || mode == 1))//OK
break;
// Error
printf("Warning: Error mode\n");
}
printf("Введите режим2:\n0 - страна \n1 - столица\n");
while(1)
{
_flushall();
ret = scanf("%d",&mode2);
if(ret == 1 && (mode2 == 0 || mode2 == 1))//OK
break;
// Error
printf("Warning: Error mode\n");
}
Листинг А.3.- основной цикл работы программы:
while(i<10)
{ i++;
int index = rand()%N;
if(mode2 == 0)
{
printf("Страна: %s Введите столицу: ",d[index].country);
scanf(" %s",answer);
}
else
{
printf("Столица: %s Введите страну: ",d[index].capital);
scanf(" %s",answer);
}
res = find(d[index],mode2,answer);
if(res == true)
{
if(mode == 1)
ballet++;
}
else
{
if(mode == 0){
printf("\n\t\tError\n");
printf("\n%s%s\n\n",d[index].capital,d[index].country);
}
}
printf(" Продолжим? y/n ");
scanf(" %c",&ch);
if(ch == 'n')
break;
}
if(mode == 1)
printf("Набрано баллов из 10: %d\n",ballet);
return 0;
}
Дата добавления: 2015-10-13; просмотров: 114 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Введение | | | Тестирование |