Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методические указания к Лабораторным работам на языке С++

.pdf
Скачиваний:
187
Добавлен:
01.05.2014
Размер:
508.33 Кб
Скачать

21

 

 

clrscr()

ch !=13

 

i = 0

ch = getch()

y, nemu[y ]

 

j<N

ch

 

 

 

y = y - 1

 

y = y - 1

gotoxy(10, i + 5 )

 

 

y < 0

 

y >= N

nemu[ i ]

 

 

i ++

y = N -1

y = 0

 

 

y = oldy = 0

y !=oldy

 

 

textcolor(LIGHTGRAY)

 

 

textcolor(YELLOW)

 

textbackground()

 

 

textbackground()

 

gotoxy(10,5+ oldy)

 

 

gotoxy(10, y + 5 )

 

nemu[ oldy ]

 

 

nemu[ i ]

 

textcolor(YELLOW)

 

 

 

 

textbackground()

 

 

gotoxy(10, y + 5 )

 

 

nemu[ i ]

 

 

oldy = y

Рис. 6.2. Укрупненная блок-схема программы вывода меню

22

Листинг 6.1. Программа меню

#include<conio.h> void main(void)

{

char *menu[4] ={“new”, “open”, “save”, NULL} ; int i, ch, y, oldy, N ;

N = 3 ; clrscr() ;

textcolor(LIGHTGRAY) ; textbackground(BLACK) ; for(i=0; i<N; i ++ )

{

gotoxy(10,5+i) ; cprintf(%6s”, nemu[ i ] ) ;

}

y=oldy=0 ; textcolor(YELLOW) ; textbackground(BLUE) ; gotoxy(10, 5 + y ) ; cprintf(%6s”, nemu[ y ] ) ; while(ch != 13)

{

ch=getch() ; switch(ch)

{

case ‘↓’ : y= y – 1 ; if( y<0 ) y = N=1 ; break ; case ‘↑’ : y= y + 1 ; if( y>=0 ) y = 0 ; break ;

}

if(y != oldy)

{

textcolor(LIGHTGRAY) ; textbackground(BLACK) ; gotoxy(10, 5 + oldy ) ; cprintf(%6s”, nemu[ oldy ] ) ; textcolor(YELLOW) ; textbackground(BLUE) ; gotoxy(10, 5 + y ) ; cprintf(%6s”, nemu[ y ] ) ; oldy = y ;

}

}

cprintf(“\n Выбран пункт меню N%d – %s”, y, nemu[ y ] ) ;

}

23

6.5.Требование к отчету по лабораторной работе

1)титульный лист;

2)текст задания (в т.ч. рисунок заданной фигуры);

3)блок-схему и листинг программы, желательно размещение операторов программы напротив соответствующих элементов блок-схемы.

Лабораторная работа 7. Простейшая программа телефонного справочника

7.1.Цель лабораторной работы

1.Освоить работу со структурами.

2.Освоить методы сортировки структурированных данных.

7.2.Используемое программное обеспечение

Для выполнения лабораторной работы используется Borland С версия 3.1 и контролирующая программа lab7.exe.

7.3. Порядок выполнения лабораторной работы

Запустить программу генерации задания lab7 и Borland C.

1.Зарегистрироваться в контролирующей программе.

2.Получить задание (генерируется контролирующей программой).

3.Составить программу.

4.Проверить правильность работы программы с помощью контролирующей программы и ручного расчета.

5.Проверить работу программы в отладчике.

7.4.Пример выполнения лабораторной работы

Программа генерации заданий придумывает формат структуры и критерии сортировки. На основании задания описывается структура, например:

struct BOOK /* Описание своего типа struct BOOK */

{

char Name[20];

/* Поле имени */

Имя

 

char Adres[40];

/* Поле адреса */

Адрес

 

int Year;

/* Возраст */

Возраст

 

};

/* Кон. описания

структуры

BOOK */

struct BOOK Book[50]; /* Описание переменной массива структур */ После этого составляем блок-схему программы (рис. 7.1).

Введите N

N

i = 0

i < N

Введите имя

B[ i ].name

Адрес

B[ i ].adress

Возраст

B[ i ].year

i ++

i = 0

i < N

i , B[ i ]

i ++

24

 

 

Номер зап.

flag = 1

 

для удал.

 

 

 

Ndel

falg == 1

 

 

 

i = Ndel

falg = 0

 

 

 

i < N

i = 1

 

B[ i ]= B[ i + 1 ]

i < N

 

 

 

i ++

B[i-1].yaer<B[i].yaer

 

 

 

N = N - 1

r =B[ i ]

 

 

i = 0

B[ i ]=B[ i -1 ]

 

 

 

B[ i -1 ] = r

i < N

falg

= 1

 

i , B[ i ]

 

 

i ++

i ++

 

 

 

 

i = 0

 

 

i < N

 

 

i , B[ i ]

 

 

i ++

 

Рис. 7.1. Блок-схема программы ввода и удаления записей

На рис. 7.1 представлена программа, организующая ввод указанного числа записей, удаления одной из записей и сортировки по возрасту.

25

В том случае, если сравнение необходимо организовать по имени или по адресу (текстовым полям) то необходимо написать функцию, реализующую сравнение строк. Блок-схема данной функции представлена на рис. 7.2. Данная функция, получив в качестве параметров указатели на две строки символов, находит первый различный символ строки и по нему сравнивает строки. Результат сравнения возвращается в виде числа (0 или 1).

char *s1, char *s2

i = 0

s1[i]==s2[i]

i = i + 1

s1[i] < s2[i]

1

0

Рис. 7.2. Блок–схема функции сравнения строк

По блок-схеме составить программу (листинг 7.1 и 7.2 ) и ввести ее в компьютер, сохранить на диске (F2), проверить правильность работы (Ctrl+F9). При проверке необходимо проверить попадание точек во все области на рисунке.

Листинг 7.1. Программа простейшего телефонного справочника

#include <conio.h> #include <stdio.h> void main(void)

{

struct book

{

char name[ 20 ] ; char address[ 40 ] ; int year ;

} B[ 20 ], r ;

int i, ch, N, Ndel, flag ; printf(“\n Введите N:” ) ; scanf(“%d”, &N ) ;

for( i=0 ; i < N; i ++ )

{

26

printf(“\n Введите имя: “) ; scanf(“%s”, B[ i ].name ) ; printf(“\n Введите адрес: “) ; scanf(“%s”, B[ i ].adress ) ; printf(“\n Введите возраст: “) ; scanf(“%d”, &B[ i ].year ) ;

}

printf(“\n Исходный телефонный справочник ”) ; for( i=0 ; i < N; i ++ )

printf(“\n %2d %20s %40s %3d”, i+1, B[i].name, B[i].adress, B[i].year);

printf(“\n Введите номер записи для удаления”) ; scanf(“%d”, &Ndel) ;

for( i = Ndel ; i <N ; i ++ ) B[ i ] = B[ i + 1 ] ;

N = N - 1 ;

printf(“\n Телефонный справочник после удаления записи”) ; for( i=0 ; i < N; i ++ )

printf(“\n %2d %20s %40s %3d”, i+1, B[i].name, B[i].adress, B[i].year);

flag =1 ;

while( flag == 1 )

{

flag = 0 ;

for( i =1 ; i < N ; i ++ )

if( B[ i - 1 ].year < B[ i ].year )

{

r = B[ i ] ; B[ i ] = B[ i – 1 ] ; B[ i -1 ] = r ; flag = 1 ;

}

}

printf(“\n Телефонный справочник после сортировки”) ; for( i=0 ; i < N; i ++ )

printf(“\n %2d %20s %40s %3d”, i+1, B[i].name, B[i].adress, B[i].year);

}

Листинг 7.2. Функция сравнения строк по алфавиту

int StCmp( char *s1, char *s2 )

{

int i ; i=0 ;

while( s1[ i ] == s2[ i ] )

27

i = i + 1 ; if( s1[ i ] >s2[ i ] )

return( 1 ) ; return( 0 ) ;

}

Проверить результаты работы программы с помощью контролирующей программы. Для этого выбрать в контролирующей программе имя исполнимого файла. Внимание! Для правильной работы контролирующей программы вывод на экран необходимо организовать, используя функцию printf().

Проверяем работу созданной программы в пошаговом режиме в отладчике, контролируем изменение значения переменных (F7, F4, Ctrl + F7).

7.5. Требования к отчету по лабораторной работе

Отчет должен содержать:

1)титульный лист;

2)текст задания, включая заданный Вам формат структуры данных ;

3)блок-схему и листинг программы, желательно размещение операторов программы напротив соответствующих элементов блок-схемы;

4)пример работы программы.

Лабораторная работа 8. Программа телефонного справочника

8.1.Цель лабораторной работы

1.Освоить работу со структурами.

2.Освоить методы сортировки структурированных данных.

8.2.Используемое программное обеспечение

Для выполнения лабораторной работы используется Borland С версия 3.1 и контролирующая программа lab8.exe.

8.3. Порядок выполнения лабораторной работы

Запустить программу генерации задания lab8 и Borland C.

1.Зарегистрироваться в контролирующей программе.

2.Получить задание (генерируется контролирующей программой).

3.Составить программу.

4.Проверить правильность работы программы с помощью контролирующей программы и ручного расчета.

 

 

28

 

5.

Проверить работу программы в месте с преподавателем.

6.

Проверить работу программы в отладчике.

 

PutBook()

 

 

ch != F10

 

 

ch

= getch()

 

 

 

ch

 

 

Ntek = N

i = Ntek

flag = 1

Ntek = Ntek - 1

 

 

 

N = N + 1

i < N

flag == 1

 

Ntek<0

 

 

 

 

Введите

B[ i ] = B[ i + 1 ]

flag = 0

 

Ntek = 0

 

 

 

B[Ntek]

i ++

i = 1

 

readraw = 1

i < N

Ntek = Ntek + 1

 

 

Ntek>=N

readraw = 1

B[i-1]<B[i]

 

 

 

Ntek = N - 1

N = N -1

B[ i-1 ] <=> B[ i ]

 

 

 

Доп.функц.

flag = 1

 

 

 

 

 

readraw = 1

 

readraw = 1

 

 

 

 

i ++

 

redraw

redraw

 

 

PutBook()

PutLine(Ntek)

 

 

 

PutLine(OldNtek)

 

 

 

OldNtek = Ntek

Рис. 8.1. Блок-схема программы телефонного справочника

8.4.Пример выполнения лабораторной работы

Необходимо написать программу, телефонного справочника, программа должна содержать средства выбора текущей записи (с помощью клавиш управления курсора), сортировки по различным полям, вывода

29

на экран обработанного списка (для взаимодействия с контролирующей программой).

Блок-схема программы представлена на рис. 8.1–2. В целом программа повторяет программу представленную на рис. 7.1–3, дополнительно необходимо разработать интерфейс пользователя.

 

 

n, ct, cb

clrscr()

 

textcolor(ct)

№ Фамилия адрес

возр.

textbackgrapun(cb)

 

 

i = 0

 

gotoxy(1, n+4)

i < N

 

B[ n ]

 

 

PutLine(i, c1,c2)

 

i ++

 

 

PutLine(Ntek,c3,c4)

 

а) б)

Рис. 8.2. Бок–схема функций: а – PutBook(), б – PutLine()

Предлагается сделать функцию void PutLine(int n, char ct, char cb) вы-

водящую на экран в заданную позицию (определяется номером записи) запись с номером n. Цвета c1 и c2 определяют цвет выводимой строки (подсвеченной для активной строки или обычной). Функция void PutScr(void) выводит на экран содержимое всей базы данных.

30

Массив структур (B), их количество (N), номер активной записи (Ntek), рекомендуется сделать глобальными переменными. Переменная redraw отвечает за перерисовку экрана, если данная переменная установлена в значение 1, то вызывается функция PutBook(), перерисовывающая экран.

По блок-схеме составляем программу и вводим ее в компьютер, сохраняем на диске (F2), проверяем правильность работы (Ctrl+F9). При проверки необходимо проверить попадание точек во все области на рисунке.

Проверяем результаты работы программы с помощью контролирующей программы. Для этого выбираем в контролирующей программе имя исполнимого файла. Внимание! Для правильной работы контролирующей программы вывод на экран необходимо организовать используя функцию cprintf().

Проверяем работу созданной программы в пошаговом режиме в отладчике, контролируем изменение значения переменных (F7, F4, Ctrl + F7).

8.5. Требование к отчету по лабораторной работе

Отчет должен содержать:

1)титульный лист;

2)текст задания, включая заданный Вам формат структуры данных ;

3)блок-схему и листинг программы;

4)пример работы программы.

Лабораторная работа 9. Работа с текстовыми файлами

9.1.Цель лабораторной работы

1.Освоить работу с текстовыми файлами.

2.Освоить методы обработки текстовых файлов.

9.2.Используемое программное обеспечение

Для выполнения лабораторной работы используется Borland С версия

3.1и контролирующая программа lab9.exe.

9.3.Порядок выполнения лабораторной работы

Запустить программу генерации задания lab9 и Borland C:

1.Зарегистрироваться в контролирующей программе.

2.Получить задание (генерируется контролирующей программой).

3.Составить программу.