Листинг файла notenew.txt




МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

 

УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ

ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ П. О. СУХОГО

 

Факультет автоматизированных и информационных систем

 

Кафедра «Информационные технологии»

 

 

ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ № 4

по дисциплине «Основы алгоритмизации и программирования»

 

Работа с текстовыми файлами

 

 

Выполнил: студент гр. ИТ-12

Жаворонков Д.В.

Принял: Лозовская Е.В.

 

 

Дата сдачи отчета: _____________________

Дата допуска к защите: ­_____________________

Дата защиты: _____________________

 

 

Гомель 2012

 

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

РАБОТА С ТЕКСТОВЫМИ ФАЙЛАМИ

Цель работы:

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

 

Задача №1

ВАРИАНТ 4

Выбрать все записи с данными только о тех ноутбуках, максимальный объем ОЗУ которых не менее 40 Мбайт. Записи в выходном файле должны быть упорядочены по невозрастанию объема ОЗУ.

Листинг файла note.txt

В файле note.txt находится информация о ноутбуках. Каждая строка содержит данные об одной модели. Данные в строке размещаются в следующих полях:

1:20 - наименование модели;

21:24 - цена в долларах США (целое число);

26:28 - масса ноутбука, кг (число с десятичной точкой из 4-х символов);

30:43 - габаритные размеры ноутбука в дюймах (высота х ширина х длина - три числа с десятичной точкой (4 символа, включая точку, разделенные "х"));

44:47 - частота процессора в МГц (целое число из 3-х символов);

49:51 - максимальный объем ОЗУ в мегабайтах (целое число из 3-х символов);

53:56 - размер дисплея по диагонали в дюймах (число с десятичной точкой из 4-х символов, включая точку);

58 - размер видеопамяти в мегабайтах (целое число из 1-го символа);

60:68 - разрешающая способность дисплея в пикселах (два целых числа, разделенные "х");

70:71 - частота регенерация дисплея в Гц (целое число из 2-х символов);

73:77 - объем HDD в гигабайтах (число с десятичной точкой из 5-ти символов);

 

Acer Note Light 2699 5.6 02.0x11.8x08.3 100 040 10.4 1 1024x0768 60 0.774

ASW ND5123T 3489 7.2 02.3x11.8x10.1 133 032 12.1 1 1024x0768 70 1.300

ARMNote TS80CD 3699 7.2 02.0x11.5x08.3 133 064 11.3 1 1024x0768 75 1.300

AST Ascentia H50 4499 7.5 02.3x11.3x09.0 133 040 11.3 1 0800x0600 70 0.774

 

Таблица соответствия переменных

Имя переменной Имя на С Тип Комментарий
Длина имени lnm Const int Длина имени
Длина размера Lrazm Const Int Длина размера
Длина пикселей Lpix Const int Длина пикселей
L l Const int Длина строки
name n.name Char Имя ноута
cena n.cena int Цена ноута
massa n.massa Float Масса ноута
razm n.razm char Размер ноута
chast n.chast Int Частота процессора
ozu n.ozu Int Оперативная память
dig n.dig Float Диагональ
vid n.vid Int Размер видео
pix n.pix char Размер в пикселях
gc n.gc Int Частота в ГЦ
hdd n.hdd Float Объем HDD
s s char Дополнительная строка
I i Int Количество ноутов
k K Int Параметр цикла
max max int Максимум ОЗУ
z z Int Номер максимума
t t int параметр

 

 

Листинг программы

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <windows.h>

char bufRus[256];

char* Rus(const char*text)

{ CharToOem(text, bufRus);

return bufRus;

}

main()

{ const int lnm=20,lrazm=15,lpix=10,

l=20+5+4+15+4+4+5+2+10+3+6;

struct Note

{ char name[lnm];

int cena;

float massa;

char razm[lrazm];

int chast;

int ozu;

float dig;

int vid;

char pix[lpix];

int gc;

float hdd;

};

Note n[10];

char s[l];

int i=0,k,max=0,z=0,t;

FILE *fin,*fo,*f1;

if((fin=fopen("note.txt","r"))==NULL)

{ puts(Rus("ошибка открытия\n"));

fflush(stdin);

getchar();

return(1);

}

puts(Rus("файл открыт"));

fo=fopen("out.txt","w");

f1=fopen("noteNew.txt","w");

while(!feof(fin))

{ fgets(s,l,fin);

//puts(s);

strncpy(n[i].name,s,lnm-1);

n[i].name[lnm-1]='\0';

n[i].cena=atoi(&s[19]);

n[i].massa=atof(&s[24]);

strncpy(n[i].razm,&s[28],lrazm-1);

n[i].razm[lrazm-1]='\0';

n[i].chast=atoi(&s[43]);

n[i].ozu=atoi(&s[47]);

n[i].dig=atof(&s[51]);

n[i].vid=atoi(&s[56]);

strncpy(n[i].pix,&s[58],lpix-1);

n[i].pix[lpix-1]='\0';

n[i].gc=atoi(&s[68]);

n[i].hdd=atof(&s[71]);

i=i+1;

//fputs(s,fo);

}

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

{ printf("%9s%5d%4.1f%15s%4d%4d%5.1f%2d%10s%3d%6.3f\n",n[k].name,n[k].cena,n[k].massa,n[k].razm,n[k].chast,n[k].ozu,n[k].dig,n[k].vid,n[k].pix,n[k].gc,n[k].hdd);

}

puts("\n");

for(t=0;t<i-1;t++)

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

{ if(n[k].ozu>=max)

{ max=n[k].ozu;

z=k;

}

}

if(n[z].ozu>=40)

{ fprintf(f1,"%9s%5d%4.1f%15s%4d%4d%5.1f%2d%10s%3d%6.3f\n",n[z].name,n[z].cena,n[z].massa,n[z].razm,n[z].chast,n[z].ozu,n[z].dig,n[z].vid,n[z].pix,n[z].gc,n[z].hdd);

//printf("%9s%5d%4.1f%15s%4d%4d%5.1f%2d%10s%3d%6.3f\n",n[z].name,n[z].cena,n[z].massa,n[z].razm,n[z].chast,n[z].ozu,n[z].dig,n[z].vid,n[z].pix,n[z].gc,n[z].hdd);

n[z].ozu=0;

z=0;max=0;

}

}

fclose(fin);fclose(fo);fclose(f1);

fflush(stdin);

getchar();

return(0);

}

Блок-схема

Тест

 

 

 

Листинг файла notenew.txt

ARMNote TS80CD 3699 7.2 02.0x11.5x08.3 133 64 11.3 1 1024x0768 75 1.300

AST Ascentia H50 4499 7.5 02.3x11.3x09.0 133 43 11.3 1 0800x0600 70 0.774

Acer Note Light 2699 5.6 02.0x11.8x08.3 100 40 10.4 1 1024x0768 60 0.774

Задача №2

Организовать бинарный файл с полями соответствующими пункту “атрибуты”.

Программа должна:

  1. Создавать бинарный файл.
  2. Добавлять запись в конец файла.
  3. Добавлять запись по номеру.
  4. Выводить на экран все записи в виде таблицы.
  5. Удалять запись по номеру.
  1. 6.Осуществлять поиск в соответствии с запросами указанными в пункте «основные функции». Результаты поиска выводить на экран в виде таблицы.
  2. Диалог с пользователем организовать в виде меню.
  1. Удалять весь файл.
  2. Копировать данные из файла в резервный файл.

 

ВАРИАНТ 4



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-05-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: