Miroslava

Для хранения данных о ноутбуках описать структуру (сортировка не идет)

27.12.2012, 23:59. Показов 3080. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
//*
//Для хранения данных о ноутбуках описать структуру. 
//Написать функцию, которая читает данные о ноутбуках из файла note.txt в структуру. Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура бинарного файла: 
//первые два байта — целое число записей в файле; 
//далее записи в формате структуры NOTEBOOK.
//Написать программу, в которой на основе разработанных функций осуществляется запись в двоичный файл данных только о тех ноутбуках, объем HDD которых больше 1 Гбайт, отсортированных в порядке возрастания размера диагонали дисплея.
//
//Для хранения данных о ноутбуках описать структуру вида:
//struct NOTEBOOK {
//  struct dlsp_resf // разрешающая способность дисплея
//  int x;  // по горизонтали
//  int у; // по вертикали
//  int f;  // частота регенерации
//  float d;    // размер диагонали дисплея
//  float hdd;  // объем диска
//  char model[21]; // наименование
//}
 
//-----------------------------------------------------*/
 
#include <stdio.h> //содержит стандартные функции файлового ввода-вывода
#include <io.h> //для работы с файлами
#include <conio.h> // функции для работы с консолью 
#include <process.h> //для очистки экрана
#include <locale.h> // подключение setlocale
#include <malloc.h> // Функции для манипулирования динамической памятью 
#include <string.h> // для работы со строками
#include <fcntl.h.> //работы с функциями дискриптора
#include <stdlib.h> //содержит функции преобразования строк
 
struct dlsp_resf {  //объявляем структуру "разрешающая способность дисплея"
char model[21]; // наименование
int x;  // по горизонтали
int у; // по вертикали
int f;  // частота регенерации
float d;    // размер диагонали дисплея
float hdd;  // объем диска
};
typedef struct notebook {   //объявляем структуру "ноутбук" 
char model[21]; //название модели 
struct dlsp_resf s; //способность дисплея
} NB; //вводим новый тип - NB
NB a; //переменная a является типом NB
 
// --------------------- объявляем функции
float func_preobr(char *st, int start) //функция преобразования строки в число
{ 
//char *buf_d;//буфферный массив
char *buf_hdd;//буфферный массив
int i,j;
//buf_d = new char [4];
buf_hdd = new char [5];// Захват памяти
//if (buf_d==NULL) {puts("Ошибка при создании массива строки"); _getch(); return 0;}
//for (i=0;i<5;i++) //обработка строки из 5-ти символов
//*(buf_d+i)=st[start+i]; //присваиваем буфферной строке значение размера диагонали
if (buf_hdd==NULL) {puts("Ошибка при создании массива строки"); _getch(); return 0;}
for (j=0;j<6;j++) //обработка строки из 6-ти символов
*(buf_hdd+j)=st[start+j]; //присваиваем буфферной строке значение объема диска
//return atof(buf_d); // переводим стринг в дабл
return atof(buf_hdd); // переводим стринг в дабл
} 
void func_pokaz (int sz, NB a) { // объявляем функцию просмотреть файл
system("cls"); //очистка экрана
FILE *f1;
int i;
unsigned short q; //переменная "количество записей"
if (!(f1 = fopen("d:\\kr2.bin","rb"))) { //проверка откртылся ли файл
puts("Ошибка открытия файла! Нажмите любую клавишу"); _getch(); return;}
 
printf("\Файл имеет следующие данные:\n"); 
fread(&q,2,1,f1); //чтение первых двух байт об количестве записей в файле
printf("число записей в файле = %d",q);
 
while(fread(&a, sz,1,f1)) //чтение файла поструктурно
{ if(feof(f1)) break; //если достигнут конец файла выйти из цикла
printf("\n%s %.1lf %dx0%dPPI %dГц %.3lfГб", a.model,a.s.d,a.s.x,a.s,a.s.f,a.s.hdd); //вывод данных на экран
}
fclose(f1);
return;
}
void f_write(char *st, int sz, NB a) //функция записи данных в файл
{
FILE *f2;
int i;
 
for (i=0; i<19; i++) //запись имени состоящем из 20-ти симоволов
a.model[i]=*(st+i);
a.s.d=func_preobr(st,51); //запись диагонали
a.s.x=func_preobr(st,58); //запись по горизонтали х
a.s=func_preobr(st,63); //запись по вертикали y
a.s.f=func_preobr(st,68); //запись частота регенерации f
a.s.hdd=func_preobr(st,71);//запись объема диска (через функцию преобразования) в промежуточную структуру "а"
if (!(f2 = fopen("d:\\kr2.bin","a+b"))) { //проверка откртылся ли файл
puts("Ошибка открытия файла! Нажмите любую клавишу");_getch(); return;}
fwrite(&a,sz,1,f2); //запись структуры в файл
fclose(f2);
}
unsigned short f_zad(unsigned short x2, int sz, NB a) //отбор и запись в файл данных по условию
{
system("cls");
int i, k, buf;
char *st, *buf_hdd, *buf_d; //указатели на считаную строку и буфферную строку (диагонали)
double hdd,d=0; //переменная "величина диагонали"
FILE *f1; 
 
buf_hdd = new char [5]; // Захват памяти
buf_d = new char [4];
st = new char [100]; // Захват памяти
if (buf_hdd==NULL && buf_d==NULL) {puts("Ошибка при создании массива строки"); _getch(); return x2;} //NULL - при нехватке памяти
if (st==NULL) {puts("Ошибка при создании массива строки"); _getch(); return x2;}
 
fflush(stdin); //Явная очистка буфера ОС
if (!(f1 = fopen("d:\\note.txt","r+t"))) { //проверка откртылся ли файл
puts("Ошибка открытия файла! Нажмите любую клавишу");_getch(); return x2;}
while (fgets (st,79,f1)) //построчно читаем файл в цикле пока не встретим EOF
{   *(buf_hdd+0)=st[71]; //присваиваем буфферной строке объем диагонали
*(buf_hdd+1)=st[72];
*(buf_hdd+2)=st[73];
*(buf_hdd+3)=st[74];
*(buf_hdd+4)=st[75];
 
 
*(buf_d+0)=st[51];
*(buf_d+1)=st[52];
*(buf_d+2)=st[53];
*(buf_d+3)=st[54];
 
 
 
hdd=atof(buf_hdd); // переводим стринг в дабл
d=atof(buf_d); 
for (int i = 0; i <d ; i++) {
for(int j = i + 1; j < d; j++) {
if (buf_d[i] > buf_d[j])
/*buf=buf_d[i];
buf_d[i]=buf_d[j];
buf_d[j]=buf;*/
(buf_d[i], buf_d[j]);
}
}
if (hdd>1) //если выполняется условие что HDD > 1 gb - записать их в файл
 
{f_write(st, sz, a); //вызов функции записи в двоичный файл
x2++; //увеличиваем счетчик записей в файле
}    }
//delete buf_d; 
delete []st; // Освобождение памяти 
 
f1 = fopen("d:\\kr2.bin","r+b"); //далее запишем изменение в количестве записей в фале (первые два байта)
fseek(f1,0,0); //смещение указателя в начало файла
fwrite(&x2,2,1,f1); //запись в первые два байта - "число записей"
fclose(f1); //закрытие файла
return x2; //возврат значения числа записей в файле в основную программу
}
 
// --------------------- объявляем переменные
int sz; //размер в байтах структуры notebook
unsigned short x1=0; //число записей файле
void main(){
FILE *f1;
setlocale(LC_CTYPE, "Russian"); //Установка поддержки русского языка
 
sz=sizeof(notebook); //находим размер структуры notebook
 
if (!(f1 = fopen("d:\\kr2.bin","rb"))) { //если файла нет то
f1 = fopen("d:\\kr2.bin","w+b"); //создать файл
fwrite(&x1,2,1,f1); //запись в первые два байта - "0 записей"
} else //если файл существует то:
{
f1 = fopen("d:\\kr2.bin","r+b"); //открыть файл для чтения
fread(&x1,2,1,f1); //чтение первых двух байт об количестве записей в файле
fclose(f1);
while (1) { //организация бесконечного цикла
int menu_n1=0;
system("cls"); //очистка экрана
puts ("Выберите вариант меню");
puts ("1 - Дописать в файл информацию о ноутбуках");
puts ("2 - Просмотр целочисленного бинарного файла");
puts ("3 - Выйти из программы");
 
fflush(stdin); // Явная очистка буфера ОС
printf("\nВведите пункт меню: "); 
scanf_s("%d", &menu_n1);
 
switch(menu_n1) //меню 
{
case 1: x1=f_zad(x1, sz, a); break; //вызов функции чтения текстового файла
case 2: func_pokaz (sz, a); printf("\n\n\nФайл считан. Нажмите любую клавишу для возврата в меню");_getch(); break;
case 3: exit(0);
default: puts ( "Неверный выбор, нажмите любую клавишу"); _getch();}
}   }
}
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.12.2012, 23:59
Ответы с готовыми решениями:

Для хранения данных о ноутбуках описать структуру NOTEBOOK
Для хранения данных о ноутбуках описать структуру вида (при необходимости дополнив ее): struct NOTEBOOK{ char model; //...

Для хранения данных о ноутбуках описать класс Notebook
Для хранения данных о ноутбуках описать класс Notebook, который содержит структуру struct DispRes // расширение экрана { int x,y; } ...

Работа со структурой для хранения данных о ноутбуках
Здравствуйте, уважаемые программисты. Очень нужна помощь. Попытался написать программу и там куча ошибок Для хранения данных о...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.12.2012, 23:59
Помогаю со студенческими работами здесь

Описать, используя структуру данных запись, камеру хранения
Ребят,помогите,пожалуйста Нужно написать программу,паскаль Описать, используя структуру данных запись, камеру хранения (шифр, индекс...

Описать структуру для хранения информации
1. Описать структуру для хранения следующей информации: - название продукции - стоимость за единицу - количество - дата...

Описать структуру для хранения данных о платежах
Нужно срочно написать, а не выходит(((( Описать структуру для хранения следующей информации (при необходимости используйте перечисления):...

Реализовать структуру данных для хранения координат прямоугольника
Ребята, помогите... Зачет по ОПП. Задание - реализовать структуру данных для хранения координат прямоугольника и вычисления его сторон....

Организовать структуру данных Heap для хранения целых чисел
Помогите пожалуйста решить задачую Заранее спасибо! В этой задаче вам необходимо организовать структуру данных Heap для хранения целых...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

Новые блоги и статьи
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru