Главная страница

ОПЯВУ Отчет по КСР Веселов. Отчет по самостоятельной работе Выполнил слушатель гр. 403321 Фамилия, имя, отчество


Скачать 216.24 Kb.
НазваниеОтчет по самостоятельной работе Выполнил слушатель гр. 403321 Фамилия, имя, отчество
Дата06.05.2018
Размер216.24 Kb.
Формат файлаdocx
Имя файлаОПЯВУ Отчет по КСР Веселов.docx
ТипОтчет
#42986

ИИТ БГУИР
Факультет повышения квалификации и переподготовки


Кафедра МПСС

Дисциплина: ОАПЯВУ



Отчет по самостоятельной работе


Выполнил слушатель гр. 40332-1

Фамилия, имя, отчество:

Веселов Дмитрий Владимирович
Задания: №40, №11

Минск 2015

40 Для хранения данных о ноутбуках описать структуру вида, описанного в Задаче 39.

Написать функцию, которая читает данные о ноутбуках из файла note.txt в структуру приведенного вида. Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура бинарного файла: первые два байта — целое число записей в файле; далее записи в формате структуры NOTEBOOK.

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

Пример файла note.txt:

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

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

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

AST Ascentla P50 4499 7.5 02.3x11.3x09.0 133 40 11.3 1 0800x0600 70 0.774

BSI NP8657D 2605 8.0 02.3x11.8x09.3 133 40 11.3 1 1024x0768 60 0.810

BSI NP5265A 3765 8.2 02.5x12.0x09.0 150 32 12.1 2 1024x0768 70 1.300

Dell Xpi P100SD 3459 6.0 02.3x11.0x08.8 100 40 10.3 1 1024x0768 60 0.773

Digital HiNote 4799 4.0 01.3x11.0x08.8 120 40 10.4 1 0800x0600 56 1.000

Gateway Solo S5 4499 5.6 02.0x11.9x08.8 133 40 11.3 2 1024x0768 60 0.686

Hertz Z - Optima NB 3995 8.0 02.3x11.9x09.0 150 40 11.2 2 1024x0768 75 1.000

HP Omni Book 5500 6120 7.1 02.0x11.5x09.0 133 64 11.4 1 1024x0768 75 1.300

IBM ThinkPad 560 3749 4.1 01.3x11.8x08.8 120 40 12.1 2 1024x0768 85 0.774

NEC Versa 4080H 4780 6.6 02.3x11.8x09.5 120 48 10.4 1 0800x0600 70 0.776

Polywell Poly 500 3300 7.9 02.3x11.9x09.0 120 40 10.4 1 1024x0768 72 1.000

Samsung SENS 810 3667 8.7 02.3x11.5x09.5 100 32 11.4 2 1024x0768 75 0.773

Twinhead Slimnote 2965 7.4 02.0x11.5x08.0 075 64 10.4 1 1024x0768 70 0.772

Схема алгоритма задание 40





Текст программы

#define _CRT_SECURE_NO_WARNINGS

#include

#include

#include

#include

#include

#include


#include

int n = 0;//глобальный счетчик

typedef struct notebook {

char name[20];//20 наименование модели;

int price;//5 цена в долларах;

float weight;//4 масса ноутбука в кг;

struct dem{//5x4x4

float width;//5

float lenght;//4

float height;//4

};//габаритные размеры ноутбука в дюймах(ВЫСОТАхДЛИНАхШИРИНА три числа с десятичной точкой(4 символа, включая точку, разделенные 'х');

dem dement;

int freq;//4 частота процессора в МГц;

int ram;//3 максимальный объем ОЗУ в мегабайтах;

float ich;//4 размер диагонали дисплея в дюймах (число с десятичной точкой из четырех символов, включая точку);

int gram;//2 размер видеопамяти в мегабайтах ;

struct res{//5x4

int width;//5

int height;//4

}; // разрешающая способность дисплея в пикселах;

res resol;

int dfreq;// 3 частота регенерации дисплея в Гц;

float hdd;// 6 объем HDD в гигабайтах.

char x[5];//буфер для разделительных символов "x"

}noot;

noot a[40], b[20], c[20];//a для чтения из .txt b
void func_read(){

setlocale(LC_CTYPE, "Russian");

char h;

printf("\nДля продолжения нужен файл note.txt по адресу D:\\Work\\.\n - продолжить <любая клавиша> для отмены\n");

h = _getch();

if (h != '\r')return;//чек подтверждение

FILE *f;

if (!(f = fopen("D:\\Work\\note.txt", "r+"))){

printf("Не могу открыть файл!\n"); return;

}

while ((fgets(a[n].name, 20, f) != NULL)) {//цикл пока можем считывать имя из начала новой строки

fscanf(f, " %d %f %f%c%f%c%f %d %d %f %d %d%c%d %d %f\n", &a[n].price, &a[n].weight, &a[n].dement.width, a[n].x, &a[n].dement.lenght, a[n].x, &a[n].dement.height, &a[n].freq, &a[n].ram, &a[n].ich, &a[n].gram, &a[n].resol.width, a[n].x, &a[n].resol.height, &a[n].dfreq, &a[n].hdd);

//считываем в структуру чмсловые значения и символы "х"

n++; //инкремент

}

fclose(f);

printf("\n Конец чтения note.txt\n\n прочитано %d строк", n);

}

void func_calc_and_sort(){

setlocale(LC_CTYPE, "Russian");

int ii = 0;//количество ноутов за $3500

for (int i = 0; i < n; i++){

if (a[i].price >= 3500){//если цена проходит приравниваем текущую позицию к полученному массиву структур

b[ii] = a[i]; //printf("ii=%d\n",b[ii].price) ;//проверка через вывод прошедших значений

ii++;//счетчик полученного массива структур

}

}

c[0] = b[0]; // создаем начальные данные для сортировки массива

for (int i = 1; i < ii; i++){//счет по возрастанию

for (int k = i; k >= 0; k--) { // по убыванию с возрастающим количеством элементов

if (b[i].freq <= c[k - 1].freq){// !!!!изменяя знак "<"- сортируем по возрастанию ">" -сортируем по убыванию

c[k] = c[k - 1]; // смещение элементов в концу масива

if (k == 1){ c[k - 1] = b[i]; break; }//исключения в случае сомого большого числа в массиве

}

else if (b[i].freq > c[k - 1].freq){ c[k] = b[i]; break; }// если встречается число бельшее чем сравниваемое!!!!изменяя знак ">"- сортируем по возрастанию <" -сортируем по убыванию

}

} //for (int i=0; i < ii;i++) printf("i=%d %d\n", i, c[i].freq);// проверка вывод отсортированных частот CPU

printf("\n\n найдено и отсортировано по возрастанию %d строк с ценой больше $3500", n = ii);//колво строк(приравниваем глобальный счетчик к счетчику в функции)

}

void func_bin_write(){

setlocale(LC_CTYPE, "Russian");

FILE *f;

if (!(f = fopen("D:\\Work\\note.dat", "wb"))){

printf("Не могу открыть файл!\n"); return;

}

fprintf(f, "%2d", n); //количество данных после сортировки

fwrite(c, sizeof(c[0]), n, f);//сортированные даные

fclose(f);

printf("\n\nфайл D:\\Work\\note.dat записан \n\n");

//-------------------ПРОВЕРКА-------------

//puts("Проверка:"); int d; noot D[10]; FILE *z = fopen("D:\\Work\\note.dat", "rb"); fscanf(z, "%2d", &d); int co = sizeof(D[0]); fread(D, sizeof(D[0]), d, z); for (int i = 0; i
//printf(" %20s %5d %.1f %.1fx%.1fx%.1f\n %4d %3d %.2f %2d %5dx%d %3d %.4f\n", D[i].name, D[i].price, D[i].weight, D[i].dement.width, D[i].dement.lenght, D[i].dement.height, D[i].freq, D[i].ram, D[i].ich, D[i].gram, D[i].resol.width, D[i].resol.height, D[i].dfreq, D[i].hdd); fclose(z);

//----------------------------------------

}

void main(){

setlocale(LC_CTYPE, "Russian");

func_read();

func_calc_and_sort();

func_bin_write();

_getch();

}

11 С помощью текстового редактора БЛОКНОТ создать файл, содержащий текст, длина которого не превышает 1000 символов (длина строки текста не должна превышать 70 символов).

Файл должен иметь расширение DAT.

Написать программу, которая:

  • выводит текст на экран дисплея;

  • определяет количество букв “a” в последнем слове текста.

Схема алгоритма задание 11



#define _CRT_SECURE_NO_WARNINGS

#define N 1100

#include

#include

#include

#include

#include

#include

void readfile(char *te){

setlocale(LC_CTYPE, "Russian");

int i = 0, sp = 0, n = 0;

char *D = "а";

FILE *f;

if (!(f = fopen("D:\\work\\indwork.dat", "r+"))) {

printf("Невозможно создать файл");

return;

}

for (;;){

char c = fgetc(f);

if (c == EOF){

if (feof(f) != 0)break;

}

else if (c == '\n')continue;

else if (c == ' ')sp = i;

te[i] = c;

printf("%c", te[i++]);

}

for (;;){

if (te[++sp] == *D) n++;

else if (sp == i)break;

}

printf("\n Всего %d символов\t В последнем слове %d симолов %c", i, n, *D);

fclose(f);

}

void main(){

setlocale(LC_CTYPE, "Russian");

char *Text = new char[N];

readfile(Text);

delete[] Text;

_getch();

}


написать администратору сайта