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

Удалить партии товара, превышающие заданную стоимость - C++

Восстановить пароль Регистрация
 
Ольга1993
0 / 0 / 0
Регистрация: 12.03.2013
Сообщений: 6
12.03.2013, 16:30     Удалить партии товара, превышающие заданную стоимость #1
Файл содержит название, цену, количество товара. Удалить партии товара, превышающие заданную стоимость.

В С++ надо создать файл содержащий название, цену, количество товара. И удалить из него партии товара, превышающие заданную стоимость. Все это надо делать через структуры. Но я вроде так поняла. Вообще для меня это темный лес, не понимаю как работать с файлами
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2013, 16:30     Удалить партии товара, превышающие заданную стоимость
Посмотрите здесь:

C++ Удалить из массива все элементы превышающие его среднее значение
Удалить заданную цифру из числа C++
C++ Найти максимальную стоимость товара...
C++ Составить программу, в которой описывается структура из полей: Название товара, Цена, Размер партии товара...
C++ Известны данные о стоимости каждого товара из группы. Найти общую стоимость тех товаров, которые стоят дороже 1000 рублей (количество таких товаров не
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
12.03.2013, 17:53     Удалить партии товара, превышающие заданную стоимость #2
Работа с файлами
Ольга1993
0 / 0 / 0
Регистрация: 12.03.2013
Сообщений: 6
12.03.2013, 18:57  [ТС]     Удалить партии товара, превышающие заданную стоимость #3
Хотя бы что-то. Спасибо
Ольга1993
0 / 0 / 0
Регистрация: 12.03.2013
Сообщений: 6
14.03.2013, 13:36  [ТС]     Удалить партии товара, превышающие заданную стоимость #4
Подскажите пожалуйста как удалить партии товара, превышающие заданную стоимость.
И еще почему введеные мною записи не выводятся на экран ?
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
# include <iostream.h>
#include<conio.h>
#include<stdio.h>
# include <string.h>
struct spisok {char naz[20]; int cen,kol;};
int main(){
FILE *f; 
spisok sp;
int n,i;
cout << "File name? ";
char s[20];
cin.getline(s, 20);
f=fopen(s, "wb");
cout << "vvedite kolichestvo zapisei? "; cin >> n;
for (int i=1; i<=n; i++)
 { cout << "Nazvanie tovara "<<endl; cin >> sp.naz;
   cout << "Cena tovara"<<endl; cin >> sp.cen;
   cout << "Kolichestvo tovara"<<endl; cin >> sp.kol;
   fwrite(&sp, sizeof(spisok), 1, f);
 }
fclose(f);
f=fopen(s, "rb");
fread(&sp, sizeof(spisok), 1, f);
cout<<"\n file:\n";
i=1;
while (fread(&sp, sizeof(spisok), 1, f))
{cout<<i<<" "<<sp.naz<<", "<<sp.cen<<", "<<sp.kol<<endl;
i++;};
return 0;
getch ();
            }
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
14.03.2013, 15:37     Удалить партии товара, превышающие заданную стоимость #5
так как вы работаете с товарами на C++ то лучше создать класс Products и в нём уже описать атрибуты как в структуре.

Добавлено через 12 минут
вот как выглядит хорошо оформленный класс

файл Products.h
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
#ifndef PRODUCTS_H_
#define PRODUCTS_H_
 
#include <string>
 
using namespace std;
 
namespace shop
{
 
class Products
{
    public:
        Products();
        virtual ~Products();
        int getAmount() const;
        void setAmount(int amount);
        const string& getName() const;
        void setName(const string& name);
        int getPrice() const;
        void setPrice(int price);
 
    private:
        string name;
        int price;
        int amount;
};
 
}
#endif
файл Products.cpp
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
#include "Products.h"
 
namespace shop
{
 
Products::Products()
{
}
 
Products::~Products()
{
}
 
int Products::getAmount() const
{
    return amount;
}
 
void Products::setAmount(int amount)
{
    this->amount = amount;
}
 
const string& Products::getName() const
{
    return name;
}
 
void Products::setName(const string& name)
{
    this->name = name;
}
 
int Products::getPrice() const
{
    return price;
}
 
void Products::setPrice(int price)
{
    this->price = price;
}
 
}
чтоб использовать его в main нужно добавить вначале файле
C++
1
#include "Products.h"
потом в main не забыть про пространство имен
shop::Products sp;
а программа у вас выводит на одну запись меньше чем надо.

Добавлено через 11 минут
вот написал более правильное начало программы
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
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <string>
#include <sstream>
#include "Products.h"
using namespace std;
 
int getInt(string &in)
{
    int res;
    stringstream er;
    getline(cin, in);
    er << in;
    er >> res;
    return res;
}
 
int printInfo(const shop::Products &in)
{
    cout << " Product " << in.getName()     << endl;
    cout << " Price "   << in.getPrice()    << endl;
    cout << " Amount "  << in.getAmount()   << endl << endl;
    return 1;
}
 
int main()
{
    FILE *f;
    shop::Products sp;
 
    int n, i, price, amount;
    cout << "Enter file name ";
    string nameFile, nameProduct, sNum, sPrice, sAmount;
    getline(cin, nameFile);
    f = fopen(nameFile.c_str() , "wb");
    cout << "Enter amount records ";
    n = getInt(sNum);
    for (i = 1; i <= n; i++)
    {
        cout << "Product name " ;
        getline(cin, nameProduct);
        sp.setName(nameProduct);
        cout << "Price " ;
        price = getInt(sPrice);
        sp.setPrice(price);
        cout << "Product amount ";
        amount = getInt(sAmount);
        sp.setAmount(amount);
        printInfo(sp);
надеюсь остальное попытаетесь сами переписать(транслит использовать не советую)
Ольга1993
0 / 0 / 0
Регистрация: 12.03.2013
Сообщений: 6
14.03.2013, 15:57  [ТС]     Удалить партии товара, превышающие заданную стоимость #6
Спасибо конечно, но это не то что мне нужно. Мне надо сделать все через структуры. А классы мы ещё даже не проходили
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
14.03.2013, 16:37     Удалить партии товара, превышающие заданную стоимость #7
я советую делать на Fstream

Цитата Сообщение от Ольга1993 Посмотреть сообщение
Спасибо конечно, но это не то что мне нужно. Мне надо сделать все через структуры. А классы мы ещё даже не проходили
а в С++ они практически не отличаются

поэтому можете тупо заменить слово class на struct

вот более свежее решение
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
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <string>
#include <sstream>
#include <fstream>
#include "Products.h"
using namespace std;
 
int getInt(string &in)
{
    int res;
    stringstream er;
    getline(cin, in);
    er << in;
    er >> res;
    return res;
}
 
int printInfo(const shop::Products &in)
{
    cout << " Product " << in.getName()     << endl;
    cout << " Price "   << in.getPrice()    << endl;
    cout << " Amount "  << in.getAmount()   << endl << endl;
    return 1;
}
 
void  print_file(string filename)
{
    std::ifstream   ifile( filename.c_str() );
 
    std::cout   <<  filename
                <<  ":"
                <<  std::endl
                <<  ifile.rdbuf()
                <<  std::endl
                <<  std::endl;
}
 
int main()
{
    ofstream file;
    ifstream ifile;
    shop::Products sp;
    int n, i, price, amount;
    cout << "Enter file name ";
    string nameFile, nameProduct, sNum, sPrice, sAmount;
    getline(cin, nameFile);
    file.open(nameFile.c_str(), fstream::in | fstream::out | fstream::app);
    cout << "Enter amount records ";
    n = getInt(sNum);
    for (i = 1; i <= n; i++)
    {
        cout << "Product name " ;
        getline(cin, nameProduct);
        sp.setName(nameProduct);
        cout << "Price " ;
        price = getInt(sPrice);
        sp.setPrice(price);
        cout << "Product amount ";
        amount = getInt(sAmount);
        sp.setAmount(amount);
        printInfo(sp);
        file << sp.getName() << ";" << sp.getPrice() << ";" << sp.getAmount() << endl;
    }
    file.close();
    print_file(nameFile.c_str());
    return 0;
}
Добавлено через 12 минут
но товар это не структура - это класс товаров
Ольга1993
0 / 0 / 0
Регистрация: 12.03.2013
Сообщений: 6
14.03.2013, 16:47  [ТС]     Удалить партии товара, превышающие заданную стоимость #8
спасибо большое за помощь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2013, 16:52     Удалить партии товара, превышающие заданную стоимость
Еще ссылки по теме:

C++ Ввести количество товара и стоимость за одну штуку, вычислить скидку и вывести результат в консоль
C++ Удалить заданную цифру из числа
C++ Структура с данными о проданных товарах за месяц по трем видам. Вычислить всю стоимость товара

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

Или воспользуйтесь поиском по форуму:
XRuZzz
14.03.2013, 16:52     Удалить партии товара, превышающие заданную стоимость
  #9

Не по теме:


кнопка спасибо, находится под сообщением

Yandex
Объявления
14.03.2013, 16:52     Удалить партии товара, превышающие заданную стоимость
Ответ Создать тему
Опции темы

Текущее время: 05:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru