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

Как правильно создать функцию? - C++

Восстановить пароль Регистрация
 
nohope
Сообщений: n/a
08.11.2012, 14:52     Как правильно создать функцию? #1
Задание звучит так:
Создайте текстовой файл, содержащий сведения об ассортименте игрушек в магазине: название игрушки, артикул, цена, страна производитель, для кого предназначена игрушка (мальчикам или девочкам или тем и другим). Напишите программу, которая формирует двоичный файл, каждый элемент которого является структурой, составленной на основе данных текстового файла. Отсортируйте данные бинарного файла в порядке убывания цены и выведите на экран информацию об игрушках для категории X и страны производителя Y.

Объясните как правильно создать функцию, которая будет выводить на экран информацию об игрушках по стране и полу

C++ (Qt)
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <clocale>
using namespace std;
struct Tutors
{
char nazvanie[20];
char articul[20];
char cena[20];
char strana[10];
char maldev[10];
};
// функция вывода на экран содержимого файла
void outfile(fstream& f, int n)
{
Tutors a;
f.seekg(0);// установить указатель файла на начало
cout<<setw(26)<<"Название игрушки|"<<setw(9)<<"Артикул|"<<setw(7)<<"Цена|"<<setw(10)<<"Страна|"<<setw(11)<<"Мал./Дев.|"<<endl; 
cout<<setw(63)<<" _______________________________________________________"<<endl;
for(int i=0; i<n; i++)
{
f.read((char *)&a,sizeof a);// чтение из файла 
cout<<setw(25)<<a.nazvanie<<"|"<<setw(8)<<a.articul<<"|"<<setw(6)<<a.cena<<"|"<<setw(9)<<a.strana<<"|"<<setw(10)<<a.maldev<<"|";
cout<<endl;
}
}
// функция чтения данных из текстового файла и запись данных в бинарный файл
int read_f(fstream &f, fstream &out)
{
int i=0;Tutors a;
while(!f.eof())// пока не конец файла
{
f>>a.nazvanie>>a.articul;f>>a.cena;f>>a.strana>>a.maldev;
out.write((char *) &a, sizeof a);
i++;
}
return i;
}
// функция сортировки в порядке убывания
void sort(fstream &f,int n)
{
Tutors max,a;
int n_max;
for(int i=0;i<n;i++)
{
f.seekg(i*(sizeof a));
f.read((char *)&max,sizeof max);
n_max=i;
for(int j=i+1;j<n;j++)
{
f.read((char *)&a,sizeof a);
if(strcmp(a.cena,max.cena)>0) 
{
max=a;
n_max=j;
} } 
f.seekg(i*(sizeof a));
f.read((char *) &a,sizeof a);
f.seekp(i*(sizeof a));
f.write((char *) &max,sizeof max);
f.seekp(n_max*(sizeof a));
f.write((char *) &a,sizeof a);
 
}
}
// функция формирования нового файла по стране и полу
int IsStranaMaldev(fstream &f,fstream &f_new,int n,char c, char d)
{
    int k=0;
    Tutors a;
    f.seekg(0);f_new.seekp(0);
    for(int i=0;i<n;i++)
    {
        f.read((char *) &a, sizeof a); 
        int srticmp(char *c[10], char *d[10]);
        {
            k++;
            f_new.write((char *) &a,sizeof a);
            
        }
    }
    return k;  }
 
int main()
{
setlocale(LC_CTYPE,"Russian");
fstream in ("data.txt", ios::in);
if(!in)
{
cout<<"не открыт data.txt"<<endl;
return 1;
}
fstream out ("data.dat", ios::out | ios::binary);
if(!in.is_open())
{
cout<<"не открыт data.dat"<< endl;
return -1;
}
int size_f=read_f(in,out);
in.close();out.close();
fstream out_f ("data.dat", ios::in | ios::out | ios::binary);
if(!out_f)
{
cout<<"не открыт data.dat"<<endl;
return 1;
} 
 
outfile(out_f,size_f);
sort(out_f,size_f);
cout<<endl;
fstream out_f2 ("data2.dat", ios::out | ios::binary);
if(!out_f2.is_open())
{
cout<<"не открыт data2.dat"<< endl;
return -1;
}
out_f2.close();
fstream out_f1 ("data2.dat", ios::in |  ios::out | ios::binary);
    if(!out_f1)
    {
        cout<<"не открыт data2.dat"<<endl;
        return 1;
    }
    char c,d;
    cout<<"Введите страну>";
    cin>>c;
    cout<<"Введите пол>";
    cin>>d;
 
outfile(out_f1,IsStranaMaldev(out_f,out_f1,size_f, c,d));
out_f.close();out_f1.close();
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2012, 14:52     Как правильно создать функцию?
Посмотрите здесь:

Как правильно вызвать функцию? C++
C++ Как правильно написать функцию?
Перегрузка операций (Создать класс вещественных чисел (double); определить оператор +, как функцию-элемент и – как дружественную функцию) C++
как правильно записать функцию C++
C++ Как правильно создать функцию и затем вызвать ее
C++ Как правильно записать функцию?
Как правильно вызвать функцию с указателем на другую функцию как параметр C++
C++ Как правильно вписать функцию в h-файл и правильно её отразить в основной функции?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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