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

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

08.05.2009, 16:34. Показов 4995. Ответов 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
3599 / 2741 / 354
Регистрация: 11.03.2009
Сообщений: 6,298
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
3599 / 2741 / 354
Регистрация: 11.03.2009
Сообщений: 6,298
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
3599 / 2741 / 354
Регистрация: 11.03.2009
Сообщений: 6,298
12.05.2009, 09:21
С++ различает прописные и строчные буквы, поэтому NOTEBOOK в имени структуры и notebook в прототипе функции две совершенно разные вещи.
0
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
12.05.2009, 13:00  [ТС]
И так что делать то? =)
0
 Аватар для kazak
3599 / 2741 / 354
Регистрация: 11.03.2009
Сообщений: 6,298
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
3599 / 2741 / 354
Регистрация: 11.03.2009
Сообщений: 6,298
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
3599 / 2741 / 354
Регистрация: 11.03.2009
Сообщений: 6,298
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
3599 / 2741 / 354
Регистрация: 11.03.2009
Сообщений: 6,298
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
3599 / 2741 / 354
Регистрация: 11.03.2009
Сообщений: 6,298
15.05.2009, 01:22
Почти, я только сортировку не делал.
1
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
15.05.2009, 12:01  [ТС]
При запуске твоей проги пишет...

Текущая кодовая страница: 1251
Файл не возможно открыть
Для продолжения нажмите любую клавишу . . .
оО, здесь норм отобразил кодировку... хм... у меня кароч каряво с иерогилфами все три строки =/
А теперь вижу что и файл не может открыть, в чем причина то? =/
0
 Аватар для kazak
3599 / 2741 / 354
Регистрация: 11.03.2009
Сообщений: 6,298
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
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru