Работа с файлами на верхнем уровне 


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



ЗНАЕТЕ ЛИ ВЫ?

Работа с файлами на верхнем уровне



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

 

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

1. Изучить:

-основную терминологию, связанную с файловыми структурами данных: файл и его структура, физическая и логическая записи, методы доступа, форматные и бесформатные записи;

- возможности языка программирования по обработке файла: запись данных в файл, чтение из файла, добавление записей в файл и т. п.;

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

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

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

 

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

Задание А.

  1. Скопировать содержимое одного файла в другой. Работу с файлами организовать на верхнем уровне. Имена файлов передавать через параметры командной строки, в случае недостаточности параметров в командной строке, имена файлов вводить с клавиатуры.
  2. Посчитать время выполнения программы для файлов разных размеров.

 

Задание Б.

Выполнить на ЭВМ программу в соответствии с вариантом задания из таблицы 10. Работу с файлом организовать на верхнем уровне.

 

Задание В.

Выполнить на ЭВМ программу поиска в файле слов в соответствии с вариантом задания из таблицы 11. Для каждого слова вычислить частоту появления и построить в графическом режиме гистограмму. При работе программы осуществлять вывод на экран “градусника”. Работу с файлом организовать на верхнем уровне.

 

Задание Г.

  1. Скопировать содержимое одного файла в другой. Работу с файлами организовать на нижнем уровне. Имена файлов передавать через параметры командной строки, в случае недостаточности параметров в командной строке, имена файлов вводить с клавиатуры.
  2. Посчитать время выполнения программы для файлов разных размеров.
  3. Провести анализ полученных результатов с результатами из задания А.

 

Задание Д.

Выполнить на ЭВМ программу в соответствии с вариантом задания из таблицы 14. Работу с файлом организовать на нижнем уровне.


Таблица 10

Вариант задания Условия задачи
  Перенести из одного файла в другой только половину информации.
  Переписать файл- источник в файл- приемник, начиная с конца файла.
  Переписать один файл в другой с нумерацией строк.
  На основе исходного файла сформировать файл, в котором каждое слово из исходного начинается с новой строки (между словами в исходном файле возможно несколько пробелов).
  Имеется текстовый файл. Отформатировать все строки файла до максимальной путем вставки пробелов после первого слова.
  Имеется текстовый файл. Отформатировать все строки файла до максимальной путем вставки пробелов между словами равномерно.
  Заменить все большие символы в файле на маленькие, а маленькие на большие.
  Имеется текстовый файл. Вывести на экран частоту появления каждой цифры, встречающейся в этом файле.
  Переписать содержимое одного файла в другой, заменяя символ ‘;’ на символы “…”.
  Написать программу, формирующую файл вида: Уважаемый ФИО! Приглашаем Вас Дата в Время на наименование праздника. Требуемую информацию вводить с клавиатуры.
  Закодировать информацию в файле по принципу: из кода символа вычитается длина слова, в котором этот символ находится, для символов с кодом меньше 32, код остается неизменным.
  Вывести на экран из файла самое короткое и самое длинной слова.
  На основе исходного файла сформировать файл, в котором каждое слово из исходного начинается с новой строки (между словами в исходном файле возможно несколько пробелов).
  Переписать содержимое одного файла в другой, заменяя символ ‘…’ на символы “;”.
  Имеется текстовый файл. Вывести на экран частоту появления каждой цифры, встречающейся в этом файле.

 

Таблица 11

Вариант задания Условия задачи
  Путь, команда, балл.
  Файл, каталог, диск.
  Novell, LANtastic, C++.
  Байт, регистр, слово.
  Меню, пункт, опция.
  Тема, проект, память.
  Record, date, save.
  Си, Паскаль, Ассемблер.
  Азбука, алфавит, буква.
  Книга, страница, абзац.
  Creat, append, open.
  Час, минута, секунда.
  Диск, дискета, файл
  Карандаш, ручка, пенал
  Принтер, сканер, плоттер

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

Задание А, Б.

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

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

 

#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; //выход из программы;

}

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

  1. Объяснить, что обозначают следующие термины: файл, запись, структура записи?
  2. Каково назначение функций открытия и закрытия файла?
  3. Допустимы ли различные типы данных для элементов одной записи?
  4. Указать с помощью каких функций выполняется запись в файл, чтение из файла при работе на верхнем уровне? Привести примеры.
  5. Указать с помощью каких функций выполняется запись в файл, чтение из файла при работе на нижнем уровне? Привести примеры.
  6. Привести примеры использования файлов.
  7. В чем отличия при работе с файлами на верхнем и нижнем уровнях?

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



Поделиться:


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

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