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

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

Войти
Регистрация
Восстановить пароль
 
nohope
Сообщений: n/a
#1

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

08.11.2012, 14:52. Просмотров 260. Ответов 0
Метки нет (Все метки)

Задание звучит так:
Создайте текстовой файл, содержащий сведения об ассортименте игрушек в магазине: название игрушки, артикул, цена, страна производитель, для кого предназначена игрушка (мальчикам или девочкам или тем и другим). Напишите программу, которая формирует двоичный файл, каждый элемент которого является структурой, составленной на основе данных текстового файла. Отсортируйте данные бинарного файла в порядке убывания цены и выведите на экран информацию об игрушках для категории 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++
#include&lt;string&gt; #include &lt;cmath&gt; #include &lt;iostream&gt; #include&lt;locale&gt; using namespace std; int rl1,rl2,rl3,rl4,a,b,c,s; int...

Как правильно создать шаблон на функцию, которая использует вектор? - C++
есть вот такая шаблонная функция, template &lt;typename T&gt; void rev(const std::vector &lt;T&gt; &amp;v){ ...

Как правильно вписать функцию в h-файл и правильно её отразить в основной функции? - C++
Создать внешнюю библиотеку, в которой написана функция вывода символьного массива обратном порядке. Подключить данную библиотеку к ...

Как правильно вызвать функцию с указателем на другую функцию как параметр - C++
Вот вариант: double f(double x) { ... } double k(double (*f)(double), double y) { ...

Перегрузка операций (Создать класс вещественных чисел (double); определить оператор +, как функцию-элемент и – как дружественную функцию) - C++
помогите решить пожалуйста Задание 2. Бинарная операция Создать класс вещественных чисел (double).. Определить оператор +, как...

Как правильно написать функцию? - C++
Привет :) Начал изучение функций в С++. Написал первую, и тут же начались проблемы. Вот код. Помогите пожалуйста #include...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2012, 14:52
Привет! Вот еще темы с ответами:

Как правильно вызвать функцию? - C++
Здравствуйте,посдкажите как правильно объявить функцию в private и вызвать ее в классе. Перепишите текст в сообщение. П. 5.18 и 5.19...

Как правильно написать функцию? - C++
Необходимо написать функцию кот вычисляет интервал времени: void DigitalTime::interval_since(const DigitalTime&amp; a_previous_time, int&amp;...

Как правильно записать функцию? - C++
Очень интересует как записать корень квадратный 3 степени w=\sqrt{x^6+ln^2y}+\frac{e^{\left|x-y \right|}\, \left|x-y...

Как правильно вызвать функцию? - C++
Добрый день. подскажите как исправить ошибку: TAsync * Async ; Async = new TAsync; ComPort-&gt;...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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