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

Что изменить в программе? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Математический маятник http://www.cyberforum.ru/cpp-beginners/thread648802.html
Доброго время суток. Нужно написать программу. Математический маятник совершает колебания по закону x(t) = A* sin(\omega *t + {\omega }_{0}). Частота \omega маятника известна. В начальный момент координата x в k раз меньше амплитуды A. В какой момент времени T отклонение маятника максимально? Написать программу для определения параметра T при условии, что параметры \omega и k вводятся...
C++ Что изменить в программе? Что нужно изменить в программе или добавить чтобы была возможность работать не с одной а с несколькими записями?#include "stdafx.h" #include "cstdlib" #include <iostream> #include <conio.h> #include <windows.h> #include <stdio.h> #include <string.h> #include <fstream> using namespace std;... http://www.cyberforum.ru/cpp-beginners/thread648779.html
C++ Добавление имен в структуру
Всем доброе время суток! Такое задание: Создать структуру ВИДЕОМАГАЗИН со следующими полями: struct Name{ Название фильма Режиссер Жанр Рейтинг популярности Цена диска
C++ Деление - воссоздать в коде (2*(x*x*x)-11*(x*x)+12*x+9)/(x-3)
Нужно написать прогу чтобы решить кубическое уравнение. Я хочу знать как воссоздать в коде деление вроде: (2*(x*x*x)-11*(x*x)+12*x+9)/(x-3) и упростилось к квадратному уравнению.
C++ Запись данных,хранящихся в дереве http://www.cyberforum.ru/cpp-beginners/thread648742.html
Возникла задача сохранить данные,являющиеся узлами дерева.Первая мысль-рекурсивный вызов функции,сохраняющей данные для каждого из потомков узла,но это нерацианально,поэтому хотелось бы узнать есть ли иной способ.
C++ Строки,файлы,нужно исправить ошибку #include "stdafx.h" #include "stdio.h" #include "string.h" int _tmain(int argc, _TCHAR* argv) { FILE *log; FILE *val; FILE *fin; char buf; char buf2; подробнее

Показать сообщение отдельно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
09.09.2012, 21:19     Что изменить в программе?
Приблизительно так:
Код
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
#include "stdafx.h"
#include "cstdlib"
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <fstream>
using namespace std;
//---------------------------------------------------------------------------------------------------------------
 
class Worker
{
private:
    char family_i_inizialy[30]; // фамилия и инициалы работника
    int nachalo_trud_karery; // год начала трудовой деятельности
    int postuplenie_na_raboty; // год поступления на работу
    int day; // число рождения
    int mounth; // месяц рождения
    int year; // год рождения
public:
    void zapolnenie(); // запись данных
    void prosmotr(); // просмотр записей
    int getmounth() // доступ к месяцу рождения
    {
        return mounth;
    }
};
void Worker::zapolnenie()
{
    cout<<"Введите фамилию и инициалы работника: ";
    cin >> family_i_inizialy;
    cout<<"Введите год рождения работника: ";
    cin>>year;
    cout<<"Введите месяц рождения работника: ";
    cin>>mounth;
    cout<<"Введите число рождения работника: ";
    cin>>day;
    cout<<"Введите год начала трудовой карьеры : ";
    cin>>nachalo_trud_karery;
    cout<<"Введите год поступления на работу : ";
    cin>>postuplenie_na_raboty;
    cout<<"Запись добавлена!!!\n";
}
void Worker::prosmotr()
{
    cout<<"Фамилия и инициалы работника: "<<family_i_inizialy<<endl;
    cout<<"Год рождения работника: "<<year<<endl;
    cout<<"Месяц рождения работника: "<<mounth<<endl;
    cout<<"Число рождения работника: "<<day<<endl;
    cout<<"Год начала трудовой карьеры : "<<nachalo_trud_karery<<endl;
    cout<<"Год поступления на работу : "<<postuplenie_na_raboty<<endl;
}
//...............................................................................
 
struct Node
{
    Worker *current;
    Node *next; 
    Node *previous;
};
 
bool newWorker(Node *&front, Node *&rear) // добавление в список
{
    Node *add = new Node; // новый элемент списка
    if (add == NULL) return false; // если память не выделена
    add -> current = new Worker;    
    if (add -> current == NULL) return false; // если память не выделена
    add  -> current -> zapolnenie();
    add -> next = NULL;
    add -> previous = rear;
        
    if (front == NULL) // если список пустой, то в начало
    {
        front = add; // front начало списка
        rear = front; // если элемент один в списке
    }
    else
        rear -> next = add; // если список не пустой, то в конец
    rear = add; // rear конец списка
    return true;
}
 
void printNode(Node *front) // вывод списка
{
    Node *Curr;
    Curr = front;
    cout << '\n';
    while (Curr != NULL)
    {
        Curr -> current -> prosmotr();
        Curr = Curr -> next;
    }
}
 
bool poisk_po_mesazu(Node *front, int n) // поиск в списке по месяцу рождения
{
    bool flag = false;
    Node *Curr;
    Curr = front;
    while (Curr != NULL)
    {
        if (Curr -> current -> getmounth() == n)
        {
            Curr -> current -> prosmotr();
            flag = true;
        }
        Curr = Curr -> next;
    }
    return flag;
}
 
void ydalenie(Node *front) // удаление списка
{
    Node *temp;
    while (front != NULL)
    {
        temp = front -> next;
        delete front -> current;
        delete front;
        front = temp;
    }
}
 
int main()
{
setlocale(0, "");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
 
Node *front = NULL; // начало списка
Node *rear  = NULL; // конец  списка
 
char ch;
cout << "Добавить запись? (д/н) ";
cin >> ch;
while (ch != 'н') 
{
    if (newWorker(front, rear))
    {
        cout << "Продолжить? (д/н) ";
        cin >> ch;
        if (ch == 'н') break;
    }
    else
    {
        cout << "Ошибка при создании записи!" << endl;
        cout << "Продолжить? (д/н) ";
        cin >> ch;
    }
}
if (front != NULL)
{
    cout << "Показать записи? (д/н)" << endl;
    cin >> ch;
    if (ch != 'н')
        printNode(front);
 
    cout << "Найти работников по месяцу рождения? (д/н)" << endl;
    cin >> ch;
    while (ch != 'н')
    {
        cout<<"Введите месяц рождения:";
        int n;
        cin >> n;
        if (!poisk_po_mesazu(front, n)) cout << "Таких в списке нет\n" ;
        cout << "Продолжить? (д/н) ";
        cin >> ch;
    }
}
 
ydalenie(front);
 
system("pause");
return 0;
}


Добавлено через 8 часов 56 минут
Можно так:
Код
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
#include "stdafx.h"
#include "cstdlib"
#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
//---------------------------------------------------------------------------------------------------------------
 
class Worker
{
private:
    string family_i_inizialy; // фамилия и инициалы работника
    int nachalo_trud_karery; // год начала трудовой деятельности
    int postuplenie_na_raboty; // год поступления на работу
    int day; // число рождения
    int mounth; // месяц рождения
    int year; // год рождения
 
    Worker *next; // указатель на следующего в списке
 
public:
    void zapolnenie(); // запись данных
    void prosmotr(); // просмотр записей
    
    int getmounth() // доступ к месяцу рождения
    {
        return mounth;
    }
    
    void setnext(Worker *add) // установке указателя на на следующий элемент в списке
    {
        next = add;
    }
    
    Worker* getnext() // получение указателя на следующий элемент в списке
    {
        return next;
    }
};
 
void Worker::zapolnenie()
{
    cout<<"Введите фамилию и инициалы работника: ";
    
    cin.clear();
    while (cin.get() != '\n');
    
    getline(cin, family_i_inizialy);
    cout<<"Введите год рождения работника: ";
    cin>>year;
    cout<<"Введите месяц рождения работника: ";
    cin>>mounth;
    cout<<"Введите число рождения работника: ";
    cin>>day;
    cout<<"Введите год начала трудовой карьеры : ";
    cin>>nachalo_trud_karery;
    cout<<"Введите год поступления на работу : ";
    cin>>postuplenie_na_raboty;
    cout<<"Запись добавлена!!!\n";
    cin.sync();
}
 
void Worker::prosmotr()
{
    cout<<"Фамилия и инициалы работника: "<<family_i_inizialy<<endl;
    cout<<"Год рождения работника: "<<year<<endl;
    cout<<"Месяц рождения работника: "<<mounth<<endl;
    cout<<"Число рождения работника: "<<day<<endl;
    cout<<"Год начала трудовой карьеры : "<<nachalo_trud_karery<<endl;
    cout<<"Год поступления на работу : "<<postuplenie_na_raboty<<endl;
}
//...............................................................................
 
bool newWorker(Worker *&front, Worker *&rear) // добавление в список
{
    Worker *add = new Worker; // новый элемент списка
    if (add == NULL) return false; // если память не выделена
    
    add -> zapolnenie();
    add -> setnext(NULL);
    
    if (front == NULL) // если список пустой, то в начало
    {
        front = add; // front начало списка
        rear = front; // если элемент один в списке
    }
    else
        rear -> setnext(add); // если список не пустой, то в конец
    rear = add; // rear конец списка
    return true;
}
 
void printlist(Worker *front) // вывод списка
{
    Worker *Curr;
    Curr = front;
    cout << endl;
    while (Curr != NULL)
    {
        Curr -> prosmotr();
        Curr = Curr -> getnext();
    }
    
}
 
bool poisk_po_mesazu(Worker *front, int n) // поиск в списке по месяцу рождения
{
    bool flag = false;
    Worker *Curr;
    Curr = front;
    while (Curr != NULL)
    {
        if (Curr -> getmounth() == n)
        {
            Curr -> prosmotr();
            flag = true;
        }
       Curr = Curr -> getnext();
    }
    return flag;
}
 
void ydalenie(Worker *front) // удаление списка
{
    Worker *temp;
    while (front != NULL)
    {
        temp = front -> getnext();
        delete front;
        front = temp;
    }
}
 
int main()
{
setlocale(0, "");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
 
Worker *front = NULL; // начало списка
Worker *rear  = NULL; // конец  списка
 
char ch;
cout << "Добавить запись? (д/н) ";
cin >> ch;
while (ch != 'н') 
{
    
    if (newWorker(front, rear))
    {
        cout << "Продолжить? (д/н) ";
        cin >> ch;
        if (ch == 'н') break;
    }
    else
    {
        cout << "Ошибка при создании записи!" << endl;
        cout << "Продолжить? (д/н) ";
        cin >> ch;
    }
}
if (front != NULL)
{
    cout << "Показать записи? (д/н)" << endl;
    cin >> ch;
    if (ch != 'н')
        printlist(front);
 
    cout << "Найти работников по месяцу рождения? (д/н)" << endl;
    cin >> ch;
    while (ch != 'н')
    {
        cout<<"Введите месяц рождения:";
        int n;
        cin >> n;
        if (!poisk_po_mesazu(front, n)) cout << "Таких в списке нет\n" ;
        cout << "Продолжить? (д/н) ";
        cin >> ch;
    }
}
 
ydalenie(front);
 
system("pause");
return 0;
}
 
Текущее время: 20:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru