Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.75
uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
#1

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

08.05.2009, 16:34. Просмотров 3083. Ответов 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 секунды
Уважаемые модераторы, прошу удалить одну из моих идентичных тем. Из-за интернета, одна оказалось лишней, заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2009, 16:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функции и файлы (Павловская Т.А.) Вариант 18 (C++):

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

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

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

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

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

Лабораторная работа по С++ Павловская - C++
Если не видно кому Помогите пожайлуста с работой...Нужно написать код(вроде цикл) чтобы для каждого Х показывало значение Y R-...

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

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 в гигабайтах (число с десятичнойточкой из пяти символов).
Все неописанные позиции заполнены пробелами.
Жду с нетерпением комментариев и помощи канеш =)
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
10.05.2009, 18:20 #3
Структуру помоему нельзя объявлять в другой структуре, так что disp_res надо выносить за пределы NOTEBOOK, а в NOTEBOOK объявить
disp_res resolution;
для чтения - записи лучше использовать операторы write/read вида
fileOut.write((char*) &NOTEBOOK, sizeof(NOTEBOOK));
fileIn.read((char*) &NOTEBOOK, sizeof(NOTEBOOK));
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
10.05.2009, 18:26 #4
Цитата Сообщение от 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;
}
uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
10.05.2009, 21:03  [ТС] #5
Цитата Сообщение от kazak Посмотреть сообщение
для чтения - записи лучше использовать операторы write/read вида
fileOut.write((char*) &NOTEBOOK, sizeof(NOTEBOOK));
fileIn.read((char*) &NOTEBOOK, sizeof(NOTEBOOK));
Допустим, тогда дальше перед нами встает следующий пункт задачи..
Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура бинарного файла: первые два байта - челое число записей в файле; далее записи в формате структуры NOTEBOOK.
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
11.05.2009, 12:41 #6
У меня так получилось
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);
}
uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
12.05.2009, 05:20  [ТС] #7
Вот что получилось

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
Прошу, помогите с этой ошибкой и скажите, вообще правильно ли я делаю =/

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

[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 секунды
Изменил регистр, и одна проблема заменилась на другие ПОмогите :'(
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
13.05.2009, 05:59 #12
Вот мои наброски.
Вложения
Тип файла: txt listing.txt (4.1 Кб, 25 просмотров)
uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
13.05.2009, 10:54  [ТС] #13
Подскажи, а как можно посмотреть то, что написано какозябрами типа "<< "Aan" << ": " <<" или выложи тут норм текст, плиииз
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
13.05.2009, 11:10 #14
Сейчас должно быть нормально.
Вложения
Тип файла: txt listing.txt (4.1 Кб, 62 просмотров)
uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
13.05.2009, 11:25  [ТС] #15
Люди, а кто как делает, чтобы по-русски сообщения нормально выводились в консоли, а не иероглифами?
Я устал обращаться к переводчику, чтобы все было на английском
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2009, 11:25
Привет! Вот еще темы с ответами:

где взять ответы из учебника Т.А.Павловская C/C++ - C++
Скажите пожалуйста где взять ответы из учебника Т.А.Павловская C/C++ или помогите решить 1 задачу к части 1. У меня есть свое решение,...

Правильно ли я написал программу? Из книжки Павловская Щупак - C++
Задание во вложении, вот не могу разобраться, помогите, правильно ли написана программа? #include &lt;iostream&gt; #include &lt;iomanip&gt; ...

в классе создаётся объект оператором new, как его удалить после использования в основной программе? delete в вызывающей функции не вариант! - C++
Собсно //Это типа служебного класса. (Внимание! В оригинальном коде он вложен в класс xx, но я этого не стал делать, дабы не...

Зачем нужные поразрядные операции. Книга Павловская, Щупак - C++
Решаю задачу из учебника Павловская, Щупак. С++. Программироание на языке высокого уровня. Структурное программирование. Практикум. Часть...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.05.2009, 11:25
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru