Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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; просмотров: 306; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.176 (0.006 с.) |