Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/47: Рейтинг темы: голосов - 47, средняя оценка - 4.94
 Аватар для Виталя97
2 / 2 / 3
Регистрация: 04.05.2015
Сообщений: 93

Запись данных из класса и вывод их на экран

06.09.2015, 12:15. Показов 8885. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Такое задание:

Надо реализовать класс Склад. В классе хранит: название товара, производителя товара, дата производства товара, вес товара, и адрес производителя.

Нужно создать методы класса для ввода данных и для вывода данных.

Реализовать конструктор с параметрами для инициализации полей класса. Конструктор по умолчанию должен считывать информацию с файла (с проверкой на существование) если успешно то он должен считать и инициализировать поля информации с файла если нет то нет.

Реализовать методы для записи в файл и чтения данных из файла. Добавить метод записи в конструктор по умолчанию, а метод чтения в деструткор.

Вот мой код не получается запись и чтение в файл. Что не так? Что исправить?
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
#include <iostream>
#include <string.h>
using namespace std;
 
class sklad {
    string nazwanie_towara;
    string proizwoditel_towara;
    int den;
    int mesaz;
    int god;
    int wes;
    string adress;
public:
    sklad() {
        nazwanie_towara = "Milo";
        proizwoditel_towara = "Gala";
        den = 18;
        mesaz = 10;
        god = 2015;
        wes = 150;
        adress = "Moscow, Fabrichnaj 23";
 
        cout << "Nazwanie towara: " << nazwanie_towara << endl;
        cout << "Proizwoditel towara: " << proizwoditel_towara;
        cout << "Data proizwodstwa towara (den, mesaz, god): " << den << mesaz << god;
        cout << "Wes towara: " << wes;
        cout << "Adress towara: " << adress;
 
        zapis("sklad.txt");
    }
 
    sklad(string nazwanie_towara1, string proizwoditel_towara1, int den1, int mesaz1, int god1, int wes1, string adress1) {
        cout << "Nazwanie towara: " << nazwanie_towara << endl;
        cout << "Proizwoditel towara: " << proizwoditel_towara;
        cout << "Data proizwodstwa towara (den, mesaz, god): " << den << mesaz << god;
        cout << "Wes towara: " << wes;
        cout << "Adress towara: " << adress;
    }
 
    ~sklad() { chtenie("sklad.txt");    }
 
    void vod() {
        cout << "Nazwanie towara: ";
        cin >> nazwanie_towara;
        cout << "Proizwoditel towara: ";
        cin >> proizwoditel_towara;
        cout << "Data proizwodstwa towara (den, mesaz, god): ";
        cin >> den >> mesaz >> god;
        cout << "Wes towara: ";
        cin >> wes;
        cout << "Adress towara: ";
        cin >> adress;
    }
    void wiwod() {
        cout << "Nazwanie towara: " << nazwanie_towara;
        cout << "Proizwoditel towara: " << proizwoditel_towara;
        cout << "Data proizwodstwa towara (den, mesaz, god): " << den << mesaz << god;
        cout << "Wes towara: " << wes;
        cout << "Adress towara: " << adress;
    }
    void zapis(char *imafaila) {
        FILE *sklad;        
 
        sklad = fopen(imafaila, "w"); 
 
        if (sklad != NULL)  {
            fprintf(sklad, "%d %d %d %d %d %d %d ", nazwanie_towara, proizwoditel_towara, den, mesaz, god, wes, adress);
            fclose(sklad);          
        }
        else {
            cout << "Oschibka";
        }
    }
    
    void chtenie(char *imafaila){
        FILE *sklad;
 
        sklad = fopen(imafaila, "r");
 
        if (sklad != NULL) {
            while (!feof(sklad)) {
                fscanf(sklad, "%d %d %d %d %d %d %d ", &nazwanie_towara, &proizwoditel_towara, &den, &mesaz, &god, &wes, &adress);
                cout << "Nazwanie towara: " << nazwanie_towara << endl;
                cout << "Proizwoditel towara: " << proizwoditel_towara;
                cout << "Data proizwodstwa towara (den, mesaz, god): " << den << mesaz << god;
                cout << "Wes towara: " << wes;
                cout << "Adress towara: " << adress;
            }
            fclose(sklad);
        }
    }
};
 
int main() {    
    sklad s1;
    s1.vod();
    s1.wiwod(); 
    sklad sklad1;
    sklad sklad2("Milo2", "Gala2", 19, 11, 2016, 155, "Moscow, Fabrichnaj 29"); 
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.09.2015, 12:15
Ответы с готовыми решениями:

Вывод данных класса на экран
Код программы: #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;windows.h&gt; #include &lt;list&gt; #include &lt;iterator&gt; using...

Как сделать запись в базу данных и вывод сразу на экран
У меня есть счетчик голосов, мне нужно сделать так чтобы при нажатии на кнопку голос заносился в базу и сразу появлялся на счетчике, и все...

Не могу понять как делать вывод на экран структуры STUDENT на заполнение и вывод данных на экран
Добрый вечер. Вот задание и мой код программы на C++ Не выходит нормально реализовать 3е задание. Первая проблема в том, что вывод на...

6
 Аватар для SherHun
31 / 31 / 22
Регистрация: 22.06.2015
Сообщений: 102
06.09.2015, 12:54
C++
1
~sklad() { chtenie("sklad.txt");    }
Деструктор служит для разрушения объекта.
Ты же в деструктор вписал функцию чтения файла.

Добавлено через 1 минуту
Цитата Сообщение от Виталя97 Посмотреть сообщение
а метод чтения в деструткор.
А смысл ?

Добавлено через 2 минуты
C++
1
FILE *sklad;
у указателя на файл имя с именем класса совпадает
0
 Аватар для Виталя97
2 / 2 / 3
Регистрация: 04.05.2015
Сообщений: 93
06.09.2015, 13:02  [ТС]
SherHun,
Цитата Сообщение от SherHun Посмотреть сообщение
А смысл ?
Полностью с Вами согласен, но задача есть задача (хоть и полный бред).

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

Вызов метода чтения можно поменять, но смысл если запись в файл идет криво. Что оно будет читать из файла кривые данные?

Добавлено через 4 минуты
Цитата Сообщение от SherHun Посмотреть сообщение
у указателя на файл имя с именем класса совпадает
Поменял все равно пишет мусор.
0
 Аватар для SherHun
31 / 31 / 22
Регистрация: 22.06.2015
Сообщений: 102
06.09.2015, 13:04
Цитата Сообщение от Виталя97 Посмотреть сообщение
но задача есть задача
Ну ОК. Задание есть, нужно выполнять.

С форматом записи разберись
C++
1
 "%d %d %d %d %d %d %d "
Там у тебя строки. А ты везде формат для целого числа указал.
0
 Аватар для Виталя97
2 / 2 / 3
Регистрация: 04.05.2015
Сообщений: 93
06.09.2015, 13:15  [ТС]
SherHun, Сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void zapis(char *imafaila) {
        FILE *s;        
 
        s = fopen(imafaila, "w"); 
 
        if (s != NULL)  {
            fprintf(f, "%s %s %d %d %d %d %s ", nazwanie_towara, proizwoditel_towara, den, mesaz, god, wes, adress);
            fclose(s);          
        }
        else {
            cout << "Oschibka";
        }
    }
Все равно мусор записывает.
0
 Аватар для SherHun
31 / 31 / 22
Регистрация: 22.06.2015
Сообщений: 102
06.09.2015, 13:20
Попробуй так
C++
1
fprintf(sklad, "%s %s %d %d %d %d %d ", nazwanie_towara.c_str(), proizwoditel_towara.c_str(), den, mesaz, god, wes, adress);
А я не смог даже запустить, что-то зацикливается всё время.
0
 Аватар для Виталя97
2 / 2 / 3
Регистрация: 04.05.2015
Сообщений: 93
06.09.2015, 13:36  [ТС]
SherHun,
Цитата Сообщение от SherHun Посмотреть сообщение
fprintf(sklad, "%s %s %d %d %d %d %d ", nazwanie_towara.c_str(), proizwoditel_towara.c_str(), den, mesaz, god, wes, adress);
Так работает. Все записывает так как надо.

Только вот теперь считывание осталось.

Цитата Сообщение от SherHun Посмотреть сообщение
А я не смог даже запустить, что-то зацикливается всё время.
Как я понял оно идет сдесь:
Цитата Сообщение от Виталя97 Посмотреть сообщение
while (!feof(s))
SherHun Без этого читает с файла хорошо, но оно читает данные только про один товар (первый), а у меня идет запись в конец файла, значит товаров после нескольких запусков программы будет много, как мне сделать чтобы метод чтения выводил данные о всех товаров которые есть в файле.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.09.2015, 13:36
Помогаю со студенческими работами здесь

Ввод с клавиатуры и запись в файл, чтение из файла и запись в массив, вывод из массива на экран
1.Ввод с клавиатуры и запись в файл, чтение из файла и запись в массив, вывод из массива на экран 2.Ввод с клавиатуры и запись в массив,...

Ввод структурированных данных в файл и вывод данных из этого файла на экран (сделать хранилище данных в файле)
Здравствуйте) помогите написать программу, осуществляющую ввод структурированных данных в файл и вывод данных из этого файла на экран...

Вывод объекта на экран из класса
Всем снова здравствуйте. Итак, у меня тут небольшая проблемка, нужна помощь. У меня есть класс Game и есть класс Player Класс Game...

Ввод класса с полями и вывод на экран
Ввести класс с полями 1) название покупки 2)дата покупки (номер месяца) 3) цена. Заполнить массив 5-ю объектами. Сделать вывод на экран: 1)...

Запись в переменнуюи вывод ее на экран
Люди добрые, помогите, на вас вся надежда. Гуглила часа три и так толком ничего не нашла. Мне надо с помощью запроса записать результат в...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД 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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru