Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94

Функции и файлы (Павловская Т.А.) Вариант 18

08.05.2009, 16:34. Показов 5077. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, куча лаб и все ндо сделать до понедельника-вторника...
Помогите, чем сможете, оч прошу, обещаю учиться лучше и помогать потом буду))
А щас прошу мне помочь =(

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

C++
1
2
3
4
5
6
7
8
9
10
struct NOTEBOOK {
    struct  disp_res {   // разрешающая способность дисплея
              int x;         // по горизонтали
                     int y;         // по вертикали
                     };
           int f;                   // частота регенерации
           float d;                // размер диагонали дисплея
           int price;              // цена
           char model[21];     // наименование
}
Написать функцию, которая читает данные о ноутбуках из файла note.txt
Acer Note Light 2699 5.6 02.0x11.8x08.3 100 40 10.4 1024x0768 60 0.774
ASW ND5123T 3489 7.2 02.3x11.8x10.1 133 32 12.1 1024x0768 70 1.300
ARMNote TS80CD 3699 7.2 02.0x11.5x08.8 133 64 11.3 1024x0768 75 1.300
AST Ascentia P50 4499 7.5 02.3x11.3x09.0 133 40 11.3 0800x0600 70 0.774
BSI NP8657D 2605 8.0 02.3x11.8x09.3 133 40 11.3 1024x0768 60 0.810
BSI NP5265A 3765 8.2 02.5x12.0x09.0 150 32 12.1 1024x0768 70 1.300
Dell Xpi P100SD 3459 6.0 02.3x11.0x08.8 100 40 10.3 1024x0768 60 0.773
Digital HiNote 4799 4.0 01.3x11.0x08.8 120 40 10.4 0800x0600 56 1.000
Gateway Solo S5 4499 5.6 02.0x11.9x08.8 133 40 11.3 1024x0768 60 0.686
Hertz Z-Optima NB 3995 8.0 02.3x11.9x09.0 150 40 11.2 1024x0768 75 1.000
HP OmniBook 5500 6120 7.1 02.0x11.5x09.0 133 64 11.4 1024x0768 75 1.300
IBM ThinkPad 560 3749 4.1 01.3x11.8x08.8 120 40 12.1 1024x0768 85 0.774
NEC Vers 4080H 4780 6.6 02.3x11.8x09.5 120 48 10.4 0800x0600 70 0.776
Polywell Poly 500 3300 7.9 02.3x11.9x09.0 120 40 10.4 1024x0768 72 1.000
Samsung SENS 810 3667 8.7 02.3x11.5x09.5 100 32 11.4 1024x0768 75 0.773
Twinhead Slimnote 2965 7.4 02.0x11.5x08.0 075 64 10.4 1024x0768 70 0.772
p.s. Текст блокноте надо выровнять в начале по пробелам, после названия ноутбука, а дальше всё нормально.
в структуру приведенного вида. Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура бинарного файла: первые два байта - целое число записей в файле; далее записи в формате структуры в NOTEBOOK.

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

1:20 - наименование модели;
21:24 - цена в долларах (целое число);
26:28 - масса ноутбука в кг (число с десятичной точкой из четырех символов);
30:43 - габаритные размеры ноутбука в дюймах (ВЫСОТАхДЛИНАхШИРИНА) - три числа с десятичной точкой (4 символа, включая точку, разделенные 'x');
44:47 - частота процессора в МГц (целое число из трез символов);
49:50 - максимальный объем ОЗУ в мегабайтах (целое число из двух символов);
52:55 - размер диагонали дисплея в дюймах (число с десятичной точкой из четырех символов, включая точку);
57 - размер видеопамяти в мегабайтах - целое число из одного символа;
59:67 - разрешающая способность дисплея в пикселах (два целых числа, разделенные 'x');
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
#include <vcl.h>
#pragma hdrstop
#include <conio.h>
#include <iostream.h>
#include <string.h>
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
    struct NOTEBOOK {
        struct  disp_res {
                int x;
                int y;
                };
        int f;
        float d;
        int price;
        char model[21];
    }
 
    FILE *fin;
    if ((fin = fopen("note.txt", "r")) == NULL) {
        puts("Error of opening of an entrance file\n"); return 1; }
    FILE *fout;
    if ((fout = fopen("note.bin", "wb")) == NULL) {
        puts("Error of opening of a target file\n"); return 1; }
 
    while (!feof(fin)) {
    fgets(,,fin)
    fscanf(fin, "",,)
     printf("\n",,,)
    fwrite();
    }
    fclose(fout);
    prinf("The binary file is written down\n");
 
    getch();
    return 0;
}
Добавлено через 2 минуты 43 секунды
Уважаемые модераторы, прошу удалить одну из моих идентичных тем. Из-за интернета, одна оказалось лишней, заранее спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.05.2009, 16:34
Ответы с готовыми решениями:

5 лаба 20 вариант Павловская С#
Помогите плиз с 5 лабой, заранее благодарю

Структуры Вариант 18 Павловская Т. А.
Ребята, срочно нужна помощь, осталось 4 лабы, и их надо решить до понедельника... Я как бы хочу сам изучить всё, но время поджимает,...

Лабораторная работа № 3 вариант 20 Павловская
Помогите пожалуйста программу написать, заранее благодарен)

21
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
10.05.2009, 17:55  [ТС]
Вообщем так, посидел я подумал, и написал вот такую структуру, прям по заданию...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
struct NOTEBOOK {
           char model[21];             //наименование
           int price;                      //цена
           float weight;                 //масса
           struct  nb_size {               //Габаритные размеры ноутбука
                float h;                      //высота
                float a;                      //длина
                float b;                      //ширина
                };
           int mhz;                        //частота в МГц
           int ozu;                        //ОЗУ
           float d;                        //размер диагонали дисплея
           int v;                          //размер видеопамяти
           struct  disp_res {          //Разрешающая способность дисплея
               int x;              //по горизонтали
               int y;              //по вертикали
               };
           int f;                           //частота регенерации
           double hdd;                  //объем HDD    
}
Ребята, кто готов помочь, но всю задачу решить не может или не хочет, тех я прошу помогать мне с минизаданиями, на которые я разбил всё задание
Минизадание: Написать функцию, которые читает данные о ноутбуках из файла note.txt в структуру приведенного вида.

Форматированный текст для программы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Acer Note Light     2699 5.6 02.0x11.8x08.3 100 40 10.4 1024x0768 60 0.774
ASW ND5123T         3489 7.2 02.3x11.8x10.1 133 32 12.1 1024x0768 70 1.300
ARMNote TS80CD      3699 7.2 02.0x11.5x08.8 133 64 11.3 1024x0768 75 1.300
AST Ascentia P50    4499 7.5 02.3x11.3x09.0 133 40 11.3 0800x0600 70 0.774
BSI NP8657D         2605 8.0 02.3x11.8x09.3 133 40 11.3 1024x0768 60 0.810
BSI NP5265A         3765 8.2 02.5x12.0x09.0 150 32 12.1 1024x0768 70 1.300
Dell Xpi P100SD     3459 6.0 02.3x11.0x08.8 100 40 10.3 1024x0768 60 0.773
Digital HiNote      4799 4.0 01.3x11.0x08.8 120 40 10.4 0800x0600 56 1.000
Gateway Solo S5     4499 5.6 02.0x11.9x08.8 133 40 11.3 1024x0768 60 0.686
Hertz Z-Optima NB   3995 8.0 02.3x11.9x09.0 150 40 11.2 1024x0768 75 1.000
HP OmniBook 5500    6120 7.1 02.0x11.5x09.0 133 64 11.4 1024x0768 75 1.300
IBM ThinkPad 560    3749 4.1 01.3x11.8x08.8 120 40 12.1 1024x0768 85 0.774
NEC Vers 4080H      4780 6.6 02.3x11.8x09.5 120 48 10.4 0800x0600 70 0.776
Polywell Poly 500   3300 7.9 02.3x11.9x09.0 120 40 10.4 1024x0768 72 1.000
Samsung SENS 810    3667 8.7 02.3x11.5x09.5 100 32 11.4 1024x0768 75 0.773
Twinhead Slimnote   2965 7.4 02.0x11.5x08.0 075 64 10.4 1024x0768 70 0.772
В файле note.txt находится текстовая информация о ноутбуках. Каждая строка содержит данные об одной модели. Данные в строке размещаются в следующих полях

1:20 - наименование модели;
21:24 - цена в долларах (целое число);
26:28 - масса ноутбука в кг (число с десятичной точкой из четырех символов);
30:43 - габаритные размеры ноутбука в дюймах (ВЫСОТАхДЛИНАхШИРИНА) - три числа с десятичной точкой (4 символа, включая точку, разделенные 'x');
44:47 - частота процессора в МГц (целое число из трез символов);
49:50 - максимальный объем ОЗУ в мегабайтах (целое число из двух символов);
52:55 - размер диагонали дисплея в дюймах (число с десятичной точкой из четырех символов, включая точку);
57 - размер видеопамяти в мегабайтах - целое число из одного символа;
59:67 - разрешающая способность дисплея в пикселах (два целых числа, разделенные 'x');
69:70 - частота регенерации дисплея в Гц (целое число из двух символов);
72:76 - объем HDD в гигабайтах (число с десятичнойточкой из пяти символов).
Все неописанные позиции заполнены пробелами.
Жду с нетерпением комментариев и помощи канеш =)
0
 Аватар для kazak
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
10.05.2009, 18:20
Структуру помоему нельзя объявлять в другой структуре, так что disp_res надо выносить за пределы NOTEBOOK, а в NOTEBOOK объявить
disp_res resolution;
для чтения - записи лучше использовать операторы write/read вида
fileOut.write((char*) &NOTEBOOK, sizeof(NOTEBOOK));
fileIn.read((char*) &NOTEBOOK, sizeof(NOTEBOOK));
0
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
10.05.2009, 18:26
Цитата Сообщение от kazak Посмотреть сообщение
Структуру помоему нельзя объявлять в другой структуре, так что disp_res надо выносить за пределы NOTEBOOK, а в NOTEBOOK объявить
Можно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct Employee{
    int data;
    struct Emp{
        int data;
        int x;
    };
    Emp empl;
};
int main()
{
    Employee em;
    em.data = 10;
    em.empl.data  = 15;
    return 0;
}
1
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
10.05.2009, 21:03  [ТС]
Цитата Сообщение от kazak Посмотреть сообщение
для чтения - записи лучше использовать операторы write/read вида
fileOut.write((char*) &NOTEBOOK, sizeof(NOTEBOOK));
fileIn.read((char*) &NOTEBOOK, sizeof(NOTEBOOK));
Допустим, тогда дальше перед нами встает следующий пункт задачи..
Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура бинарного файла: первые два байта - челое число записей в файле; далее записи в формате структуры NOTEBOOK.
0
 Аватар для kazak
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
11.05.2009, 12:41
У меня так получилось
C++
1
2
3
4
5
6
7
8
9
void Record(ofstream &fileOut, notebook &pc)
{
   static short int count = 1;
   fileOut.seekp(0);
   fileOut.write((char*)&count, sizeof(count));
   fileOut.seekp(0, ios::end);
   fileOut.write((char*)&pc, sizeof(pc));
   count++;
}
для работы этой функции подключи <fstream.h>
в main'е объяви
C++
1
2
3
4
5
6
7
ofstream fileOut;
fileOut.open("notebook.bin");
if (!fileOut.is_open)
{
   cout << "File error" << endl;
   exit(1);
}
0
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
12.05.2009, 05:20  [ТС]
Вот что получилось

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
#include <vcl.h>
#pragma hdrstop
#include <conio.h>
#include <iostream.h>
#include <fstream.h>
#include <string.h>
 
//---------------------------------------------------------------------------
 
    struct NOTEBOOK {
        char model[21];     //наименование
        int price;          //цена
        float weight;       //масса
        struct  nb_size {   //Габаритные размеры ноутбука
                float h;        //высота
                float a;        //длина
                float b;        //ширина
                };
        int mhz;            //частота в МГц
        int ozu;            //ОЗУ
        float d;            //размер диагонали дисплея
        int v;              //размер видеопамяти
        struct  disp_res {  //Разрешающая способность дисплея
                int x;          //по горизонтали
                int y;          //по вертикали
                };
        int f;              //частота регенерации
        double hdd;         //объем HDD    
    }
 
    
    void Record(ofstream &fileOut, notebook &pc)    {
        static short int count = 1;
        fileOut.seekp(0);
        fileOut.write((char*)&count, sizeof(count));
        fileOut.seekp(0, ios::end);
        fileOut.write((char*)&pc, sizeof(pc));
        count++;
    }
    
    
#pragma argsused
int main(int argc, char* argv[])
{
    ifstream fin ("note.txt", ios::in);
    if (!fin) {
        cout << "Error of opening of an entrance file.\n" return 1;
    }
    
    ofstream fileOut;
    fileOut.open("notebook.bin");
    if (!fileOut.is_open)   {
        cout << "File error" << endl;
        exit(1);
    }
    
 
    getch();
    return 0;
}
Прикомпиляции пишет, что какая-то там ошибка в 32ой строке.
[C++ Error] Unit1.cpp(32): E2176 Too many types in declaration
[C++ Error] Unit1.cpp(32): E2303 Type name expected
Прошу, помогите с этой ошибкой и скажите, вообще правильно ли я делаю =/

Заранее спасибо
0
 Аватар для kazak
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
12.05.2009, 09:21
С++ различает прописные и строчные буквы, поэтому NOTEBOOK в имени структуры и notebook в прототипе функции две совершенно разные вещи.
0
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
12.05.2009, 13:00  [ТС]
И так что делать то? =)
0
 Аватар для kazak
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
12.05.2009, 13:05
Как структуре имя дашь, так дальше в программе его и используй - если хочешь struct NOTEBOOK {, тогда дальше пиши void Record(ofstream &fileOut, NOTEBOOK &pc)
1
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
12.05.2009, 16:50  [ТС]
Тогда начинает выводить другие ошибки

[C++ Error] Unit1.cpp(32): E2176 Too many types in declaration
[C++ Error] Unit1.cpp(32): E2111 Type 'NOTEBOOK' may not be defined here
[C++ Warning] Unit1.cpp(39): W8070 Function should return a value
[C++ Error] Unit1.cpp(47): E2379 Statement missing ;
[C++ Error] Unit1.cpp(52): E2235 Member function must be called or its address taken
Добавлено через 2 часа 3 минуты 53 секунды
Изменил регистр, и одна проблема заменилась на другие ПОмогите :'(
0
 Аватар для kazak
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
13.05.2009, 05:59
Вот мои наброски.
Вложения
Тип файла: txt listing.txt (4.1 Кб, 37 просмотров)
0
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
13.05.2009, 10:54  [ТС]
Подскажи, а как можно посмотреть то, что написано какозябрами типа "<< "Aan" << ": " <<" или выложи тут норм текст, плиииз
0
 Аватар для kazak
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
13.05.2009, 11:10
Сейчас должно быть нормально.
Вложения
Тип файла: txt listing.txt (4.1 Кб, 75 просмотров)
1
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
13.05.2009, 11:25  [ТС]
Люди, а кто как делает, чтобы по-русски сообщения нормально выводились в консоли, а не иероглифами?
Я устал обращаться к переводчику, чтобы все было на английском
0
 Аватар для kazak
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
13.05.2009, 11:33
Я в Borland в основном работаю, единственный вариант который у меня в нем прокатывает это в программе пишешь system("chcp 1251");, а при запуске правой кнопкой мыши на заголовке окна(или <Alt>+<пробел>), в контекстном меню - Свойства - Вкладка Шрифт - выбираешь Lucida Console. В VC еще можно так setlocale(LC_ALL, "rus");
0
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
14.05.2009, 15:44  [ТС]
Ого, не пойму, это вся лаба полностью чтоли?)))
0
 Аватар для kazak
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
15.05.2009, 01:22
Почти, я только сортировку не делал.
1
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
15.05.2009, 12:01  [ТС]
При запуске твоей проги пишет...

Текущая кодовая страница: 1251
Файл не возможно открыть
Для продолжения нажмите любую клавишу . . .
оО, здесь норм отобразил кодировку... хм... у меня кароч каряво с иерогилфами все три строки =/
А теперь вижу что и файл не может открыть, в чем причина то? =/
0
 Аватар для kazak
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
15.05.2009, 12:10
Разбей проверку файлов на две части
C++
1
2
3
4
5
6
7
8
9
10
11
12
if (!fileIn.is_open())
{
   cout << "Input file error" << endl; // чтоб точно прочитать смог:)
   system("pause");
   exit(1);
   }
if (!fileOut.is_open())
{
   cout << "Output file error" << endl;
   system("pause");
   exit(1);
}
, а там смотри какого файла не хватает и проверь есть ли такой в папке с программой, файлы должны называться notebook.txt и book.bin, если ты по своему назвал файлы, не забудь поменять их в программе вот здесь
fileIn.open("notebook.txt");
fileOut.open("book.bin", ios::binary);// добавь этот ios обязательно для fileOut, в программе я его пропустил
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.05.2009, 12:10
Помогаю со студенческими работами здесь

Вычислить и вывести на экран в виде таблицы значения функции F на интервале (Павловская)
Помогите решить

другой вариант функции
function elements_by_id(elements) { /* elements = { 'variable':'element_id' } */ ...

Выбрать вариант не имеющий ошибки и к каждому написать почему этот вариант правильный/неправильный
Прошу помогите, я плохо понимаю c++, да и простите если не в той теме, в общем, дали задание: Выбрать вариант не имеющий ошибки и к...

Как бы вы написали кусок программы, Вариант 1 или Вариант 2?
Как бы вы написали кусок программы Вариант 1 или Вариант 2 ? Вариант 1. double Value0 = value0 / 100; switch (i){ case 1: ...

Какой вариант оформления функции лучше?
Допустим, есть функция, которая что-то делает и, возвращает булево значение, в зависимости от того, получилось это сделать или нет. ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru