Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
1 / 1 / 1
Регистрация: 22.10.2011
Сообщений: 54

Файлы. Потоки

11.05.2012, 18:41. Показов 2870. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста, нужно нормально доработать программу.. у меня не получается... нужно чтобы программа считывала с блокнота данные и записывал их правильно (считывает строку, переводит временно в числа и потом снова текстовую строку записывает, и в бинарном файле не то)
Основной вариант13й, 10 и 20 для ориентира.
Вариант 13
Для хранения данных о ноутбуках описать структуру вида, описанного в варианте 10.
Написать функцию, которая читает данные о ноутбуках из файла note.txt (см. вар. 20) в структуру приведенного вида. Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура бинарного файла: первые два байта (целое) — число записей в файле; далее записи в формате структуры NOTEBOOK.
Написать программу, в которой на основе разработанных функций осуществляется запись в двоичный файл данных только о тех ноутбуках, максимальный объем ОЗУ которых не менее 40 Мбайт, отсортированных по объему.
Вариант 10
Для хранения данных о ноутбуках описать структуру вида (при необходимости дополнив ее):
struct NOTEBOOK{
char model[21]: // наименование
struct size
{ // габаритные размеры
float x;
float y;
float z;
};
float w; // вес
int price; // цена
}
Написать функцию, которая читает данные о ноутбуках из файла note.txt (см. вар. 20) в структуру приведенного вида. Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура бинарного файла: первые два байта (целое) — число записей в файле; далее записи в формате структуры NOTEBOOK.
Написать программу, в которой на основе разработанных функций осуществля¬ется чтение данных только для тех ноутбуков, частота процессора которых больше 120 МГц, и запись в бинарный файл по убыванию цены.

Вариант 20
Для хранения данных о ноутбуках описать структуру вида, описанного в варианте 19.
Написать функцию, которая читает данные о ноутбуках из файла note.txt в структуру приведенного вида. Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура бинарного файла: первые два байта — целое число записей в файле; далее записи в формате структуры NOTEBOOK. Написать программу, в которой па основе разработанных функций осуществляется запись в двоичный файл данных только о тех ноутбуках, цена которых больше $3500, отсортированные в порядке возрастания тактовой частоты процессора.
Пример файла note.txt:
Acer Note Light 2699 5.6 02.0x11.6x08.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 Ascentia 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
В файле note.txt находится текстовая информация о ноутбуках. Каждая строка содержит данные об одной модели. Данные в строке размещаются в следующих полях:
1 : 20 — наименование модели;
21 : 24 — цена в долларах (целое число);
26:28 — масса ноутбука в кг (число с десятичной точкой из четырех символов);
30 : 43 — габаритные размеры ноутбука в дюймах (ВЫСОТАхДЛИНАхШИРИНА — три числа с десятичной точкой (4 символа, включая точку, разделенные 'х');
44 : 47 — частота процессора в МГц (целое число из трех символов);
49 : 50 — максимальный объем ОЗУ в мегабайтах (целое число из двух символов);
52 : 55 — размер диагонали дисплея в дюймах (число с десятичной точкой из че¬тырех символов, включая точку);
57 — размер видеопамяти в мегабайтах — целое число из одного символа;
59 : 67 — разрешающая способность дисплея в пикселях (два целых числа, разделенные 'х');
69 : 70 — частота регенерации дисплея в Гц (целое число из двух символов);
72:76 — объем HDD в гигабайтах (число с десятичной точкой из пяти символов). Все неописанные позиции заполнены пробелами.

Программа:
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
struct NOTEBOOK
{
        char model[21];  // наименование
        int cost;        // цена в долларах (целое число);
        float bulk;      // масса ноутбука в кг (число с десятичной точкой из четырех символов);
        struct SIZE
            {     // габаритные размеры ноутбука в дюймах (ВЫСОТАхДЛИНАхШИРИНА — tpn числа с десятичной точкой (4 символа, включая точку, разделенные 'х');
            float x;     // высота
            float y;     // длина
            float z;     // ширина
            };SIZE sz;
        int freq;        // частота процессора в МГц (целое число из трех символов);
        int ozu;         // максимальный объем ОЗУ в мегабайтах (целое число из двух символов);
        float diagonal;  // размер диагонали дисплея в дюймах (число с десятичной точкой из четырех символов, включая точку);
        int video;       // размер видеопамяти в мегабайтах — целое число из одного символа;
                         // разрешающая способность дисплея в пикселах (два целых числа, разделенные 'х');
        int hg;          // высота
        int wd;          // ширина
        int hz;          // частота регенерации дисплея в Гц (целое число из двух символов);
        float hdd;       // объем HDD в гигабайтах (число с десятичной точкой из пяти символов).
};
NOTEBOOK a[16];
NOTEBOOK b[16];
int i=0, k=0;
 
void read()
    {
    char s[77];
    FILE *note, *fout;
    note = fopen("note.txt","r");
    fout = fopen("note.bin","wb");
    printf ("\nModel\t\t\tOzu\tOzuSort\n");
    while (!feof(note))
        {
        fgets(s,77,note);
        if (atoi(&s[49])>40)
            {
            k++;
            }
        }
    fwrite (&k, 2, 1, fout);
    fseek(note, 0L, SEEK_SET);             // выставление указателя в начало файла
 
    while (!feof(note))
    {
        fgets(s,77,note);
        if (atoi(&s[49])>40)
        {
        strncpy(a[i].model,s, 18);
        a[i].cost = atoi(&s[19]);
        a[i].bulk = atof(&s[24]);
        a[i].sz.x = atof(&s[28]);
        a[i].sz.y = atof(&s[33]);
        a[i].sz.z = atof(&s[38]);
        a[i].freq = atoi(&s[43]);
        a[i].ozu = atoi(&s[47]);
        a[i].diagonal = atof(&s[50]);
        a[i].video = atoi(&s[55]);
        a[i].hg = atoi(&s[57]);
        a[i].wd = atoi(&s[62]);
        a[i].hz = atoi(&s[67]);
        a[i].hdd = atof(&s[70]);
        i++;
        }
    }
 
    int t=0;
    int iz=0;
    while (t==0)
    {
          for (i=0;i<k-1;i++)
                {
              if(a[i].ozu < a[i+1].ozu)
                  {
                  iz=1;
                  b[0]=a[i];
                  a[i]=a[i+1];
                  a[i+1]=b[0];
                  }
                }
          if (iz==0){t=1;}else{iz=0;}
    }
 
    for (i=0;i<k;i++)
        {
        printf ("%d %s\t%d\t%d\n",i+1,a[i].model);
        }
    fwrite (&a, sizeof (NOTEBOOK), k, fout);
    fclose(note);
    fclose(fout);
    printf ("\nNumber of records=%d",k);
    printf ("\nnote.txt write in struct...OK\n");
    printf ("note.bin write...OK\n");
}
 
 
int main()
{
 
    FILE *note;
    if((note = fopen("note.txt", "r")) == 0)
    {
    printf("error with opening the input file\n"); system("pause");return 1;
    }
    fclose(note);
    read();
system ("pause");
return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.05.2012, 18:41
Ответы с готовыми решениями:

Определить строки этого файла, содержащие максимальную по длине подстроку, состоящую из одинаковых символов
вот задание для программы: 6. Задан текстовый файл input.txt. Требуется определить строки этого файла, содержащие максимальную по длине...

Файлы, потоки...
Доброго Вам времени суток, уважаемые программисты! Прошу объяснения следующих вопросов. 1) Каким образом реализованы сами файлы. (имею...

Потоки и файлы
/*Дан текстовый файл f. Переформатировать исходный файл, разделяя его на строки так, чтобы каждая строка содержала столько символов,...

1
1 / 1 / 1
Регистрация: 22.10.2011
Сообщений: 54
14.05.2012, 20:41  [ТС]
ну кто-нибудь помогите...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.05.2012, 20:41
Помогаю со студенческими работами здесь

Потоки. Файлы
#include &lt;stdlib.h&gt; #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;stdio.h&gt; #include &lt;fstream&gt; #include &lt;algorithm&gt; using...

Потоки и файлы
Здравствуйте! Помогите, пожалуйста, исправить ошибки, ну не получается у меня... я кажется запуталась с этими потоками......

Файлы и потоки
В исходном файле F.txt даны float–числа в формате с фиксированной точкой (5 знаков после запятой). Создать файл F1.txt из отрицательных...

потоки и файлы
Почему при компиляции у меня вообще ничего не происходит? Хоть бы ошибку какую выдавало, а так не знаю где искать #include...

потоки и файлы
У меня есть такое задание: Дан файл f, компоненты которого являются целыми числами. Записать в файл g, компоненты файла f, исключив...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru