Типовые приемы алогитмизации 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Типовые приемы алогитмизации



Цель работы – овладение практическими навыками работы с проектами в интегрированной среде Borland C++.

 

Задания для самостоятельной подготовки:

1. Изучить:

- принципы работы с проектами в интегрированной среде Borland C++.

2. Разработать проект в соответствии с заданием.

3. Подготовить тестовый вариант исходных данных. Выполнить на ЭВМ программу с тестовым вариантом.

Задание к работе:

Разместить функции программы создания светового меню в отдельных файлах. Объединить созданные файлы в проекте.

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

Задание.

Написать программу, осуществляющую вывод и управление меню с подсветкой. Главное меню должно содержать пункты:

1. Ввод информации

2. Вывод информации

3. Выход

При выборе первого пункта осуществить ввод в массив структур информации

- ФИО рабочего;

- год рождения;

- табельный номер.

При выборе второго пункта осуществить вывод меню второго уровня

  1. Вывод ФИО рабочего и года рождения
  2. Вывод ФИО рабочего и табельного номера
  3. Вывод всей информации
  4. Выход.

Разместить функции программы создания светового меню в отдельных файлах. Объединить созданные файлы в проекте.

 

Программа решения задачи имеет вид:

 

Файл 1:

void menu(int j, int c1, int c2, int ys, unsigned char *textmenu[])

{

int i;

textcolor(c1);

textbackground(c2);

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

{

gotoxy(1,ys);

clreol();

cprintf("%s",textmenu[ys/2-1]);

ys+=2;

}

// ys+=2;

return;

}

Файл 2:

int winmenu(char* u[])

{

int y,predy;

union

{

int p;

unsigned char b[2];

} key;

textbackground(0);

clrscr();

window(7,3,73,22);

textbackground(15);

clrscr();

window(10,4,70,21);

textbackground(2);

clrscr();

y=2;

predy=2;

menu(3,0,2,2,u);

menu(1,15,0,2,u);

for(;;)

{

key.p=bioskey(0);

switch (key.b[1])

{

case 72: y-=2;

if(y<2) y=6;

break;

case 80: y+=2;

if(y>6) y=2;

break;

case 28: return y/2;

}

menu(1,0,2,predy,u);

menu(1,15,0,y,u);

predy=y;

}

}

Файл 3:

 

int vvod(struct pass mas[])

{

int i,kol;

clrscr();

cprintf("Введите кол-во жителей:");

scanf("%d",&kol);

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

{

cprintf("\r\n");

cprintf("Введите ФИО: ");

scanf("%s", &mas[i].fio);

cprintf("\r\nВведите год рождение: ");

scanf("%d", &mas[i].god);

cprintf("\r\nВведите его табельный номер: ");

scanf("%d", &mas[i].tabn);

}

return kol;

}

 

Файл 4:

void vivod(int k,struct pass mas[],int de)

{

int i;

clrscr();

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

switch(de)

{

case 1:cprintf("ФИО:%20s\r\nГод рождения:%5d\r\n",mas[i].fio,mas[i].god); break;

case 2:cprintf("ФИО:%20s\r\nТабельный номер:%d\r\n",mas[i].fio,mas[i].tabn); break;

case 3:cprintf("ФИО:%20s\r\nГод рождения:%5d\r\nТабельный номер:%d\r\n",mas[i].fio,mas[i].god,mas[i].tabn);

}

getch();

return;

}

 

Файл 5:

 

#include<stdio.h>

#include<string.h>

#include<conio.h>

#include<stdlib.h>

#include<graphics.h>

#include<math.h>

#include<dos.h>

#include<bios.h>

 

 

struct pass

{

char fio[30]; int god; int tabn;

};

 

void main()

{

struct pass s[30];

int koll,R=1,P=1;

unsigned char *textmenu1[]={"1.Ввод инфо","2.Вывод инфо","3.Выход"};

unsigned char *textmenu2[]={"1.Вывод ФИО и год рождения","2.Вывод ФИО и табельный номер","3.Вывод всей инфо"};

clrscr();

// koll=vvod(s);

_setcursortype(_NOCURSOR);

while(R!=3)

{

R=winmenu(textmenu1);

switch(R)

{

case 1: koll=vvod(s); break;

case 2: P=winmenu(textmenu2); vivod(koll,s,P); break;

case 3: clrscr(); textcolor(4); cprintf("Программа выполнила недопустимую операцию и будет закрыта!!!"); getch();

}

}

return;

}

Контрольные вопросы

  1. Что такое проект в интегрированной среде Borland C++?
  2. Для чего предназначен проект? Приведите примеры использования проекта.
  3. Какие файлы могут входить в состав проекта?

Лабораторная работа №8

Обработка символьных данных

Цель работы – овладение навыкамиалгоритмизации и программирования задач, обрабатывающих символьные данные, ввода и вывода символьных данных, их обработки, использование стандартных функций обработки символьных данных.

 

Задания для самостоятельной подготовки:

1. Изучить:

- правила записи символьных данных (констант, переменных, массивов) и их объявление;

- способы ввода и вывода символьных данных;

- способы обработки символьных данных;

- использование стандартных функций обработки символьных данных.

2. Разработать алгоритм решения в соответствии с заданием.

3. Составить программу решения задачи.

4. Подготовить тестовый вариант исходных данных для проверки работы программы.

 

Задание к работе:

  1. Составить и выполнить на ЭВМ программу обработки символьных данных в соответствии с вариантом задания, указанного в табл. 8.
  2. Проверить правильность выполнения программы с помощью тестового варианта.

Таблица 6

Вариант задания Условия задачи
  В строке найти самое длинное симметричное слово, например ALLA, MOM и т. д.
  В строке найти самое длинное слово и вывести его на экран.  
  В строке найти самое короткое слово и вывести его на экран.  
  Из строки выбрать и напечатать символы, которые встречаются в ней один раз.  
  Из строки выбрать целые числа и записать их в массив N.  
  В строке удалить все символы, расположенные между скобками (…), включая ().
  В строке указать слово, в котором доля согласных максимальна.  
  В строке указать слово, в котором доля гласных A, E, I, O максимальна.  
  Для каждого слова строки указать долю согласных.
  Для встречающихся в тексте пар рядом расположенных символов указать, сколько раз встречается каждое из таких двухбуквенных сочетаний.
  Отредактировать строку вида: МАРИЯ ПЕТРОВНА СИДОРОВА. КАРЛ ИВАНОВИЧ ГЕ. в строку вида: СИДОРОВА М. П. ГЕ К. И.
  На основе исходной строки сформировать строку, в которой сначала записаны все буквы, а затем все цифры исходной строки.
  В строке указать слово, в котором доля гласных максимальна.
  Из строки выбрать и напечатать символы, которые встречаются в ней два раза.
  Для каждого слова строки указать долю гласных

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

В строке удалить все лишние пробелы, оставляя между словами по одному пробелу.

Обработку строки нужно производить с конца, чтобы не пропускать сочетание двух пробелов. Если встречаются два пробела подряд (текущий символ и предыдущий), удалить предыдущий символ путем копирования части строки с новой позиции, отличающейся от предыдущей на 1.

Программа решения задачи имеет вид:

 

#include <stdio.h> //подключение файла

#include <string.h> //подключение файла

 

void main () //заголовок функции main

{

char str[80],*n;

int i; // объявление переменных

printf (“Введите строку\n”);

gets(str); //ввод строки

i=strlen(str); //начальное значение (длина строки)

while(i) //пока не конец строки (i не равно нулю)

{if(*(str+i)= =’ ‘ &&(*(str+i-1)= =’ ‘)

//если текущий и предыдущий символы пробелы

{n=str+i-1; //n устанавливается на предыдущий символ

while((*n=*(n+1))!=’\0’)

//пока не конец строки, текущий символ переписывается на предыдущий

n++; //переход к следующему символу

}

i--; //переход к предыдущему символу

}

if(*(str+strlen(str)-1)= =’ ‘) //если конечный символ пробел

*(str+strlen(str)-1)=’\0’; //то он удаляется

if(*(str)= =’ ‘) //если первый символ пробел

{n=str; //запоминается номер текущей позиции

while((*n=*(n+1))!=’\0’) //то он удаляется

n++;

}

printf (“Строка без лишних пробелов:\n%s\n”,str);

//вывод значения переменной

return; //завершение функции main

}

 

Контрольные вопросы

  1. Указать области применения символьных данных.
  2. Указать способы записи символьных констант.
  3. Указать, какие действия можно выполнять над символьными данными.
  4. Указать способы объявления и определения символьных данных.

 


Лабораторная работа №9



Поделиться:


Последнее изменение этой страницы: 2017-02-19; просмотров: 221; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.90.33.254 (0.015 с.)