- •Директивы препроцессора
- •Определяющие директивы Символические константы
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Void main(void)
Void main(void)
{
COMPLEX x,y,z;
vvod(&x,2.5,6.7);
vvod(&y,6.89,8.45);
puts("Введены числа:");
out(&x);
out(&y);
sum(&x,&y,&z);
puts("Сумма комплексных чисел равна:");
out(&z);
}
/* Вывод комплексного числа */
void out( COMPLEX *p)
{
printf("(%.2f,%.2f)\n", (*p).a,(*p).b);
return;
}
/* Вычисление суммы двух комплексных чисел */
void sum(COMPLEX *p1,COMPLEX *p2,COMPLEX *p3)
{
(*p3).a=(*p1).a+(*p2).a;
(*p3).b=(*p1).b+(*p2).b;
return;
}
/* Ввод значений для элементов структуры */
void vvod(COMPLEX *p,float a, float b)
{
p->a=a;
p->b=b;
return;
}
Вложенные структуры
Структура, являющаяся компонентом другой структуры, называется вложенной.
Пример 6.
/* Даны четыре точки - центры четырех окружностей. Заполнить структуру окружность, если все окружности проходят через начало координат. */
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
struct POINT {
float x;
float y;
};
struct CIRCLE {
struct POINT point; /* вложенная структура */
double r;
} circle[2], *p;
void main (void)
{
int i,j;
float a,b,c,d;
clrscr();
gotoxy(17,1);
cputs("ВВЕДИТЕ КООРДИНАТЫ ТОЧЕК :\r\n");
for(i=0;i<2;i++)
{
cprintf ("\n\n ВВЕДИТЕ X: ");
cprintf ("X[%d]= ",i+1);
cscanf("%f",&circle[i].point.x);
cprintf ("\n ВВЕДИТЕ Y: ");
cprintf ("Y[%d]= ",i+1);
cscanf ("%f",&circle[i].point.y);
}
p=circle;
gotoxy(17,12);
cputs("РЕЗУЛЬТАТ:\r\n\n");
for(i=0;i<2;i++)
{
a=p->point.x;
b=p->point.y;
c=sqrt(a*a+b*b);
p->r=c;
cprintf("\nРАДИУС : %lf ЦЕНТР (%f,%f)\r\n",p->r,a,b);
p++;
}
}
ЗАДАНИЕ
Общая формулировка для всех вариантов
Определить шаблон структуры на заданную тему, состоящий из полей различного типа. Создать файл с базой данных, состоящий из структур описанного шаблона (использовать функции fwrite и fread или функции системного ввода/вывода). Количество структур, если не оговорено особо, в пределе 10.
Вариант 1
Используя прямой доступ к видеопамяти, вывести каждую структуру из файла на экран, располагая каждое поле ровным столбцом (количество структур меньше 20). Изменяя байт атрибута в текущей строке организовать выбор нужной структуры с помощью клавиш "стрелка вверх" и "стрелка вниз" (аналогично меню). При нажатии на клавишу "ввод" экран очищается и остается только выбранная структура.
Вариант 2
Структуры вводятся в память (можно не создавать файла с базой данных) в виде однонаправленных связанных списков. Предоставить пользователю возможность вывода всех структур из списка на экран и в файл в отформатированном виде.
Вариант 3
Используя прерывание, вывести структуры из файла на разные страницы видеопамяти в зависимости от первого символа поля строка. В меню предусмотреть пункты "активна 1стр", и пр. для просмотра результата.
Вариант 4
Произвести ввод структур в файл, организовав тщательный контроль за вводом по полю целого типа:
1. по количеству введенных символов;
2. по качеству введенных символов (цифры, буквы, пробелы и пр.).
После обработки ввода вывести на экран получившееся число с предложением пользователю внести изменения. Предоставить возможность пользователю согласиться или отказаться от изменений.
Вариант 5
Считать базу данных из файла в массив структур, вывести ее на экран, использую функции консольного вывода. Массив структур организовать таким образом, чтобы память под каждую структуру выделялась динамически по мере необходимости. Отсортировать массив структур по возрастанию поля целого типа, вывести полученный массив структур на экран.
Вариант 6
Произвести удаление и замену структуры непосредственно в файле базы данных, не использую массивов структур и вспомогательных файлов. Предоставить возможность вывода базы на экран.
Вариант 7
Структуры вводятся в память (можно не создавать файла с базой данных) в виде однонаправленных связанных списков. Предоставить пользователю возможность вывода всех структур из списка на экран и удаления структуры из списка.
Вариант 8
Описать шаблон структуры, используя объединение нескольких структур (например, база данных, содержащая три вида документов с разными характеристиками). Создать базу данных в файле. Произвести выборку документов одного типа (по запросу) в другой файл в отформатированном виде.
Вариант 9
Заполнить статический массив структур из файла с базой данных и отсортировать его по убыванию поля целого типа. Вывести массив структур до и после сортировки, делая задержку при полном заполнении экрана (количество записей не менее 30).
Вариант 10
Произвести выборку структур из файла с базой данных по указанным ключам
Вариант 11
Произвести ввод структур в файл, организовав тщательный контроль за вводом по полю типа float или double:
1. по количеству введенных символов;
2. по качеству введенных символов (цифры, буквы, пробелы и пр.).
После обработки ввода вывести на экран получившееся число с предложением пользователю внести изменения. Предоставить возможность пользователю согласиться или отказаться от изменений.
Вариант 12
Структуры вводятся в память (можно не создавать файла с базой данных) в виде однонаправленных связанных списков. Предоставить пользователю возможность вывода всех структур из списка на экран и изменения структуры в списке.
Вариант 13
Считать базу данных из файла в массив структур. Массив структур организовать таким образом, чтобы память под каждую структуру выделялась динамически по мере необходимости. Отсортировать массив структур по убыванию поля типа double. Вывести массив структур до и после сортировки в файл в отформатированном виде.
Вариант 14
Используя прерывание, произвести просмотр базы данных на экране (количество структур не менее 30). После заполнения всего экрана производить прокрутку экрана вверх или вниз на одну строку в зависимости от нажатой клавиши. Для наглядности структуры пронумеровать.
Вариант 15
Используя прямой доступ к видеопамяти, вывести из файла на экран только структуры, у которых значение поля целого типа входит в заданный диапазон. Выделить цветом поле, по которому идет выборка, красиво расположить поля структур на экране.
Вариант 16
Считать базу данных из файла в массив структур. Массив структур организовать таким образом, чтобы память под каждую структуру выделялась динамически по мере необходимости. Отсортировать массив структур по возрастанию поля - строки. Вывести из массива на экран структуры, у которых первая буква отсортированной строки входит в заданный диапазон.
Вариант 17
Структуры вводятся в память (можно не создавать файла с базой данных) в виде однонаправленных связанных списков. Предоставить пользователю возможность вывода всех структур из списка на экран и выборки структур из списка по полю типа long.
Вариант 18
Из файла с базой данных прочитать произвольную структуру с указанным номером (например, пятую структуру от начала файла) и вывести на экран в заданной строке. Перезаписать измененную структуру на прежнее место в файле.
Вариант 19
Заполнить статический массив структур из файла с базой данных и отсортировать его по убыванию поля типа long. Вывести массив структур до и после сортировки, делая задержку при полном заполнении экрана (количество записей не менее 30).
Вариант 20
Структуры вводятся в память (можно не создавать файла с базой данных) в виде однонаправленных связанных списков. Предоставить пользователю возможность вывода всех структур из списка на экран и вставки структуры в список, не нарушая упорядоченности по определенному полю структуры.
Вариант 21
Описать шаблон структуры, используя вложенную структуру. Создать базу данных в файле. Произвести выборку структур из файла на экран по любому ключу (ключи выбирает пользователь).
Вариант 22
Считать базу данных из файла в массив структур. Массив структур организовать таким образом, чтобы память под каждую структуру выделялась динамически по мере необходимости. Произвести выборку структур по любому ключу (ключ задает пользователь) и вывод их на экран.
Вариант 23
Заполнить статический массив структур из файла с базой данных и отсортировать его по возрастанию поля - строки. Вывести массив структур в файл в отформатированном виде до и после сортировки.
Вариант 24
Произвести ввод структур в файл, организовав тщательный контроль за вводом по полю строке:
1. по количеству введенных символов;
2. по качеству введенных символов;
3. преобразование строки к единообразной форме.
После обработки ввода вывести на экран получившуюся строку с предложением пользователю внести изменения. Предоставить возможность пользователю согласиться или отказаться от изменений.
Вариант 25
Структуры вводятся в память (можно не создавать файла с базой данных) в виде двунаправленных связанных списков. Предоставить пользователю возможность вывода всех структур из списка на экран и выборку по ключевому полю структуры предыдущей и последующей структуры из списка.
ВАРИАНТЫ СТРУКТУР
Структура - книги.
Структура - ценная бумага.
Структура - товар.
Структура - игрушка.
Структура - ученик.
Структура - автомобиль.
Структура - пассажир.
Структура - банк.
Структура - осадки.
Структура - дневная температура.
Структура - сессия.
Структура - телефонный справочник.
Структура - квартира.
Структура - сотрудник учереждения.
Структура - акция и пр.
ЛИТЕРАТУРА
Р.Уинер Язык Турбо Си, Москва, 1991г,(6F7.3,У37) стр 200. (связанные списки)
М.Уэйт, С.Прата, Д.Мартин, Язык Си, Москва, 1988г, стр 406.
Д.Трой, Программирование на языке Си для персонального компьютера IBM PC, Москва, 1991, стр 84, 187.
С.О.Бочков, Д.М.Субботин, Язык программирования Си для персонального компьютера, Москва, 1990г,
В.К.Потоцкий, Работаем на языке Си, Москва, 1992г, стр 24.
Я.Белецкий, Энциклопедия языка Си, Москва, 1992г, стр 62.
