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

Как отсортировать структуру - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Макрос прототипа функции http://www.cyberforum.ru/cpp-beginners/thread986463.html
Существует ли он? __FILE__ подставляет путь к файлу, в котором находится строка, в которой применён макрос. __LINE__ номер строки, в которой применён макрос. А есть что то подобное для прототипа функции, в которой находится строка, в которой применён макрос? Как зовут такой макрос? Например, #include <iostream> int f(int x); double f(char x); int main (int argc, char *argv) { int i; ...
C++ Чем отличаются эти функции? Аргумент в первой функции передается по значению. Это значит что создается копия переменной. А вот остальные не понимаю. void f1(int a) { a = a * a; } void f2(int &a) { a = a * a; } void f3(int *a) { *a = *a * *a; } void f4(int *&a) { *a = *a * *a; } http://www.cyberforum.ru/cpp-beginners/thread986454.html
синус и косинус Ряда Тейлора C++
нужно задать диапазон до pi/4 что бы в ряде тейлора было меньше сумм помогите оптимизировать #include <iostream> #define _USE_MATH_DEFINES #include <math.h> using namespace std; int main() { int i,s; double z,n,x0,x,n2,y1,y2;
C++ Ошибка вывода данных в файл
Помогите найти ошибку. Есть программа, которая выводит массив f из р=53 строк. В первой колонке х - целые числа от -26 до 26, во второй некоторые данные у(х) (приближенно у(х)-кубическая парабола). В третьей - результат аппроксимации полиномом третьей степени. Создается файл "D:\\new.txt", но в него записывается нечто странное: -26 2.42703e+200 -6.27744e+066 2.42703e+200...
C++ Написать программу структурного описания каталога одной книги http://www.cyberforum.ru/cpp-beginners/thread986426.html
//2. Написать следующие функции: // - вывести список всех книг; // - обеспечить хранение книг в следующей последовательности: авторы по алфавиту,книги по алфавиту; // - проверить наличие определенной книги в магазине; // - обеспечить поступление новых книг в магазин; // - обеспечить возможность списания книг (продано); // - поиск по названию, вывести информацию о книге;...
C++ Имя парамтера макроса Есть функция, её вызов надо так завернуть в макрос, чтоб в один из параметров функции передавать имя параметра макроса. Как написать макрос, подставляющий имя своего параметра? подробнее

Показать сообщение отдельно
vitalu
2 / 2 / 1
Регистрация: 25.06.2013
Сообщений: 47
24.10.2013, 13:19  [ТС]     Как отсортировать структуру
а попробуйте пожалуйста весь мой код пункт 4 и 5 , будет у Вас работать или нет?
Большое спасибо
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
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
#include<iostream>
using namespace std;
#include<conio.h>
#include<clocale>
#include<stdlib.h>
#include<ctime>
#include<iomanip>
#include<cmath>
#include<stdio.h>
 
#include<windows.h>
enum ConsoleColor{Black, Blue, Green, Cyan, Red, Magenta, Brown, LightGray, DarkGray, LightBlue, LightGreen, LightCyan, LightRed, LightMagenta, Yellow, White};
 
void SetColor(ConsoleColor text, ConsoleColor background)
{ 
   HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
   SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
}
//1. Напишите программу структурного описания каталога одной книги.
//2. Написать следующие функции:
//    - вывести список всех книг;
//    - обеспечить хранение книг в следующей последовательности: авторы по алфавиту,книги по алфавиту;
//    - проверить наличие определенной книги в магазине;
//    - обеспечить поступление новых книг в магазин;
//    - обеспечить возможность списания книг (продано);
//    - поиск по названию, вывести информацию о книге;
//    - поиск по автору, вывести список его книг.
struct Books
{
    char *Nazvan;
    char *Name_avtor;
    int Yaer_izd;
    int Stranic;
    double Cena;
};  
//    - вывести список всех книг;
void print(Books *pKatalog, const int a)
{
    SetColor(Green,Black);
    cout<<"\nСписок всех книг"<<endl;
for(int i=0; i<a; i++)
    {   
        cout<<pKatalog[i].Nazvan<<" "; 
        cout<<pKatalog[i].Name_avtor<<" ";
        cout<<pKatalog[i].Yaer_izd<<" ";
        cout<<pKatalog[i].Stranic<<" ";
        cout<<pKatalog[i].Cena<<endl;       
    }
SetColor(White,Black);
}
 
//-авторы по алфавиту
void alf_avtor(Books *pKatalog, const int a)
{
    SetColor(Green,Black);
    cout<<"\n"<<"Авторы по алфавиту"<<endl; 
    int i, j;
    Books temp;
    for(i=1;i<a;i++){  
        temp = pKatalog[i]; 
        
        for (j=i-1;j>=0 && strcmp(pKatalog[j].Name_avtor,temp.Name_avtor)>0;j--)
            pKatalog[j+1]=pKatalog[j];      
            pKatalog[j+1] = temp; 
    }
    for(i=0;i<a;i++)
        puts( pKatalog[i].Name_avtor);
    SetColor(White,Black);
}
 
//-книги по алфавиту
void alf_boks(Books *pKatalog, const int a)
{
    SetColor(Green,Black);  
    cout<<"\n"<<"Книги по алфавиту"<<endl;
    int i, j;
    Books temp;
    for(i=1;i<a;i++)
    {  
        temp= pKatalog[i]; 
        
        for (j=i-1;j>=0 && strcmp(pKatalog[j].Nazvan,temp.Nazvan)>0;j--)    {   
            pKatalog[j+1]=pKatalog[j];          
        }
            pKatalog[j+1] = temp; 
            
            
    }   
    for(i=0;i<a;i++)
        puts( pKatalog[i].Nazvan);
    SetColor(White,Black);
}
 
//???????????????????????????????????????????????????????????????????????
//    - поиск по названию, вывести информацию о книге
// 2.Если мне нужно ввести полное название книги, как это сделать, gets он игнорирует, просто пропускает, так же и cin.getline, иногда бывают предупреждения заменить на функции gets_s и scanf_s но результат от этого не меняется
void nazv_poisk(Books *pKatalog, const int a)
{
    char name_bok[80];
    cout<<"\nВведите название книги\n";
    SetColor(Green,Black);
 
    scanf ("%s",&name_bok);
    int i=0;
    /*gets(name_bok);*/
    /*cin.getline(name_bok, 80);*/
    /*cin>>name_bok;*/
for(; i<a; i++)
    {
    if(strstr(pKatalog[i].Nazvan, name_bok))
      {      
        cout<<pKatalog[i].Nazvan<<" "; 
        cout<<pKatalog[i].Name_avtor<<" ";
        cout<<pKatalog[i].Yaer_izd<<" ";
        cout<<pKatalog[i].Stranic<<" ";
        cout<<pKatalog[i].Cena<<endl;   
      }
    }
if(!(strstr(pKatalog[i].Nazvan, name_bok)))
{
    SetColor(Red,Black);
    cout<<"Нет в наличии\n";
}
 
SetColor(White,Black);
}
//???????????????????????????????????????????????????????????????????????
 
//???????????????????????????????????????????????????????????????????
//    - обеспечить поступление новых книг в магазин
// 3.Опять проблемы с вводом
void new_boks(Books *pKatalog, const int a)
{
    int col;
    cout<<"\nВведите количество книг, которое Вы хотите добавить\n";
    cin>>col;
 
    Books *pNewBok=new Books[a+col];
 
    for(int i=0,k=0; i<a+col; i++)
    {
        if(i<col)
        {
            cout<<"Введите название книги\n";
            scanf ("%s",pNewBok[i].Nazvan);
            cout<<"Введите имя автора\n";
            gets(pNewBok[i].Name_avtor);
 
            cout<<"Введите год издания книги\n";
            cin>>pNewBok[i].Yaer_izd;
            cout<<"Введите количество страниц книги\n";
            cin>>pNewBok[i].Stranic;
            cout<<"Введите цену книги\n";
            cin>>pNewBok[i].Cena;
        }
        else
        {
            pNewBok[i]=pKatalog[k];
            k++;
        }
    }
    for(int i=0; i<a+col; i++)
    {   
        cout<<pNewBok[i].Nazvan<<" "; 
        cout<<pNewBok[i].Name_avtor<<" ";
        cout<<pNewBok[i].Yaer_izd<<" ";
        cout<<pNewBok[i].Stranic<<" ";
        cout<<pNewBok[i].Cena<<endl;        
    }
    delete []pKatalog;
    pKatalog=pNewBok;
    //print(pNewBok, a);
}
//?????????????????????????????????????????????????????????????????????????
 
//    - поиск по автору, вывести список его книг
void avtor_poisk(Books *pKatalog, const int a)
{
    char name_avt[40];
    cout<<"\nВведите имя автора книги\n";
    SetColor(Green,Black);
    scanf ("%s",name_avt);
 
    /*gets(name_bok);*/
    /*cin.getline(name_bok, 40);*/
    /*cin>>name_bok;*/
    bool flag=false;
for(int i=0; i<a; i++)
    {
    if(strstr(pKatalog[i].Name_avtor, name_avt))
      {
          flag=true;
        cout<<pKatalog[i].Nazvan<<" "; 
        cout<<pKatalog[i].Name_avtor<<" ";
        cout<<pKatalog[i].Yaer_izd<<" ";
        cout<<pKatalog[i].Stranic<<" ";
        cout<<pKatalog[i].Cena<<endl;   
      }
    }
if(!flag)
{
    SetColor(Red,Black);
    cout<<"Нет в наличии\n";
}
 
SetColor(White,Black);
} 
 
 
void (*boks[6])(Books *, const int)={print, alf_avtor, alf_boks/*, nalichie*/, new_boks, /*delete_buks,*/ nazv_poisk, avtor_poisk};
 
void main()
{
    setlocale(LC_CTYPE,"rus");
    const int size=5;
    int point;
    Books Katalog[size]={{"Osnovu programmirovaniy", "Harvi Deitl", 1998, 1078,380},{"The Changed Man and the King of Words", "Card, Orson Scott", 2010, 950,400},{"Yazuk programmirovaniy C", "Gerbert Shildt", 2012, 1078,500},{"Programmirovanie na C++", "Harvi Deitl", 2000, 1020,315},{"Neznayka na lune", "Nikolay Nosov", 1997, 1000,320}};
    Books *pKatalog=new Books[size];
 
    for(int i=0; i<size; i++)
    {       
        pKatalog[i]=Katalog[i];             
    }
    
    cout<<"\t\tВыберите пункт меню\n";
    do{
    cout<<"\nВывести список всех книг (1)\nОбеспечить хранение книг в следующей последовательности:\n  -авторы по алфавиту (2)\n  -книги по алфавиту (3)\n"<</*Проверить наличие определенной книги в магазине (4)\n*/"Обеспечить поступление новых книг в магазин (4)\n"/*Обеспечить возможность списания книг (продано) (6)\n*/<<"Поиск по названию, вывести информацию о книге (5)\nПоиск по автору, вывести список его книг (6)\nВыход (0)\n";
    cin>>point; 
    if(!point)
        break;
        (*boks[point-1])(pKatalog, size);
    }while(point);
}
 
Текущее время: 17:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru