Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Работа с файлами на верхнем уровне
Цель работы – овладение навыками алгоритмизации и программирования файловых структур данных, проектирование структуры файла, вывод данных в файл, чтение данных из файла.
Задания для самостоятельной подготовки: 1. Изучить: -основную терминологию, связанную с файловыми структурами данных: файл и его структура, физическая и логическая записи, методы доступа, форматные и бесформатные записи; - возможности языка программирования по обработке файла: запись данных в файл, чтение из файла, добавление записей в файл и т. п.; 2. Разработать алгоритм решения в соответствии с заданием. 3. Составить программу решения задачи. 4. Подготовить тестовый вариант исходных данных. Выполнить на ЭВМ программу с тестовым вариантом.
Задание к работе: Задание А.
Задание Б. Выполнить на ЭВМ программу в соответствии с вариантом задания из таблицы 10. Работу с файлом организовать на верхнем уровне.
Задание В. Выполнить на ЭВМ программу поиска в файле слов в соответствии с вариантом задания из таблицы 11. Для каждого слова вычислить частоту появления и построить в графическом режиме гистограмму. При работе программы осуществлять вывод на экран “градусника”. Работу с файлом организовать на верхнем уровне.
Задание Г.
Задание Д. Выполнить на ЭВМ программу в соответствии с вариантом задания из таблицы 14. Работу с файлом организовать на нижнем уровне. Таблица 10
Таблица 11
Пример выполнения работы
Задание А, Б. Написать программу, осуществляющую запись информации, введенной с клавиатуры, в файл. Работу организовать на верхнем уровне. Имя файла передавать через параметры командной строки, в случае недостаточности параметров в командной строке, имя файла вводить с клавиатуры. Программа решения задачи имеет вид:
#include<stdio.h> #include<conio.h> #include<string.h> #include<stdlib.h> #include<bios.h> void main(int argc, char *argv[) {FILE *f; //объявление переменной с типом указатель на структуру файл int key; //код нажатой клавиши char gh[50]; //строка для чтения данных с клавиатуры и записи в файл clrscr(); //очистка экрана if(argc<2) //если нет параметров в командной строке, ввод имени файла с клавиатуры { printf(" Введите имя файла "); scanf("%s ",argv[1]); } f=fopen(argv[1],"w"); //открытие файла для записи for(;;) {key=bioskey(0); printf("Exit: press ESC\n"); if(key>>8!=1) //если не нажата клавиша Escape { gets(gh); fputs(gh,f); //запись строки gh в файл (поток) f } else break; //иначе оператор break передаёт управление //следующему за for оператору } fclose(f); //закрытие файла f return; //выход из программы } Задание В, Г, Д.
Выполнить на ЭВМ программу поиска в файле слов Сеть, Локальный, Сервер. Для каждого слова вычислить частоту появления и построить в графическом режиме гистограмму. При работе программы осуществлять вывод на экран “градусника”. Работу с файлом организовать на нижнем уровне.
#include<dos.h> #include<stdio.h> #include<string.h> #include<fcntl.h> #include<sys\stat.h> #include<io.h> #include<alloc.h> #include<stdlib.h> #include<conio.h> #include<graphics.h> void main(int argc, char *argv[])
{ int h,r,gd=0,gm; //h – файловая переменная, r – число прочитанных символов из файла // gd, gm – для организации работы в графическом режиме, графический драйвер и режим unsigned int i, //вспомогательная, для организации цикла left=1,top=100,right=20,bottom=105; //координаты прямоугольника для высвечивания градусника char *s="сеть", *w="локальный",*q="сервер",*a, *p; //строки для поиска слов float k=0,ks=0,kq=0,kw=0; //счетчики слов clrscr(); //очистка экрана if(argc<2) { printf(" Введите имя файла "); //вывод сообщения на экран scanf("%s ",argv[1]);//считывает введённые с клавиатуры данные } if((h=open(argv[1], O_RDONLY | O_TEXT))= =-1) { printf(" Ошибка открытия файла: %s\n",argv[1]); getch(); //останов выполнения программы пока не нажата клавиша return; //выход из программы } p=(char *)malloc(2000); //выделение памяти for(i=0;i<2000;i++) //очистка строки p[i]='\0'; initgraph(&gd,&gm,"C:\\BC"); //инициализация графической системы setfillstyle(1,14); //устанавливает цвет наполнителя bar(0,98,640,107); //вычерчивает закрашенный прямоугольник outtextxy(250,30,"Press any key");//выводит на экран текстовую строку getch(); getch(); setcolor(0); //устанавливает цвет графических образов outtextxy(250,30,"Press any key"); setcolor(15); while(!eof(h)) //пока не конец файла { if(left>640) //если выход за пределы экрана по x { left=1; //встать в начало экрана по x и высвечивать градусник снова right=20; setfillstyle(1,14); bar(0,98,640,107); } setfillstyle(1,2); bar(left,top,right,bottom); //вывод прямоугольника (градусника) floodfill(left+1,top+1,2);//заполняет установленным ранее наполнителем //область экрана,в которую попадает точка с //координантами (left+1,top+1) //2-цвет линий,ограничивающих данную область delay(50); //приостанавливает выполнение программы на 50 миллисекунд r=read(h,p,2000); //чтение данных из файла h while(strlen(p)>0) { sscanf(p,"%s",a); //чтение данных из строки p
if(strstr(a,s)!=NULL) { ks++; k++; } if(strstr(a,q)!=NULL) { kq++; k++; } if(strstr(a,w)!=NULL) { kw++; k++; }//подсчет числа вхождений слов "сеть", "локальный", "сервер" if(strstr(a,s)= =NULL && strstr(a,q)= =NULL && strstr(a,w)= =NULL) k++; //подсчет общего числа слов"сеть", "локальный", "сервер" p+=strlen(a)+1; //смещение p на прочитанное слово } left+=10; right+=10; //смещение для рисования градусника } if(ks= =0 && kq= =0 && kw= =0) printf("Слов сеть, локальный, сервер, в файле нет!!!\n"); else printf("Частота слова сеть: %f\n локальный: %f\n сервер: %f\n",ks/(ks+kq+kw),kw/(ks+kq+kw),kq/(ks+kq+kw)); printf("Всего слов - %2.0f\n",k); printf("Всего заданных слов - %2.0f\n",ks+kq+kw);
getch(); getch();
//вывод гистограммы
line(100,150,100,450); line(100,150,103,158); line(100,150,97,158); line(100,450,500,450); line(500,450,492,447); line(500,450,492,453); settextstyle(1,1,1); //линии координатной сетки для гистограммы outtextxy(70,145,"Freequnsy"); top=250; for(i=0;i<5;i++) { line(97,top,103,top); //линии на оси y top+=40; } settextstyle(6,0,1);//устанавливает стиль текста //6-шрифт;0-горизантальное направление текста;1-показывает //во сколько раз надо увеличить размер символа outtextxy(87,235,"1"); outtextxy(68,274,"0.8"); outtextxy(68,274+39,"0.6"); outtextxy(68,274+2*39,"0.4"); outtextxy(68,274+3*39,"0.2"); outtextxy(87,278+4*39,"0"); //вывод текстовых надписей по оси y settextstyle(1,0,1); outtextxy(450,450,"Word"); outtextxy(135,450,"Server"); outtextxy(217,450,"Net"); outtextxy(283,450,"Local"); //вывод текстовых надписей по оси x setfillstyle(4,2); bar(150,(int)(450-200*kq/(ks+kq+kw)),170,450); bar(220,(int)(450-200*ks/(ks+kq+kw)),240,450); bar(290,(int)(450-200*kw/(ks+kq+kw)),310,450); //расчет частоты появления слов и вывод //прямоугольников гистограммы line(100,450,500,450); getch(); return; //выход из программы; } Контрольные вопросы
Лабораторная работа №13
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-02-19; просмотров: 218; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.193.129 (0.046 с.) |