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

Структуры, С++. Нужна небольшая подсказка - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Неполадка в окне Overview. http://www.cyberforum.ru/cpp-beginners/thread262442.html
Здравствуйте, захотел поставить себе на компьютер visual studio 2008.Ну что... поставил, но не как не могу создать даже проект. Дело в том, что когда я задаю имя проекту и создаю его - появляется окно в котором ми должны указать общий вид и настройки( Application Settings), ну там где Emtry Project и т.д. Так вот проблема в том что оно открывается полу пустым и не реагирует на клики: При окне...
C++ Написать и протестировать функцию,подсчитывающую количество минимальных элементов в целочисленной матрице Написать и протестировать функцию,подсчитывающую количество минимальных элементов в целочисленной матрице http://www.cyberforum.ru/cpp-beginners/thread262432.html
составить вектор без нулевых элементов C++
Дана матрица 00 12 00 00 34 00 65 00 71 95 00 69 00 58 00 00 63 00 Совтавить вектор без нулевых элементов. код на С.
Подключаемы библиотеки C++
Здравствуйте! Есть функция memset - библиотеки string.h Вопрос. Есть код: #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv)
C++ Дерево поиска. добавление элемента http://www.cyberforum.ru/cpp-beginners/thread262423.html
Привет. Поясните кое что с деревом. Допустим есть класс class bst { public: bst(): root(NULL) {} virtual ~bst() {} void insert(binaryNode*& , size_t); void inorder(binaryNode*);
C++ Найти сумму ряда Прошу помощи с написанием программы на Си s=(2/1!)+(4+6/2!)+(5+8+11/3!)+(6+10+14+18/4!)+...........n Благодарю всех откликнувшихся на просьбу!!!! подробнее

Показать сообщение отдельно
vlados92
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 28

Структуры, С++. Нужна небольшая подсказка - C++

23.03.2011, 14:04. Просмотров 2714. Ответов 40
Метки (Все метки)

Вывод на консоль сформированной ведомости и выписки из ведомости для видов продукции, объем поставки которых в стоимостном выражении находится в интервале, границы которого вводятся с консоли.
Записи ведомостей должны быть отсортированы по возрастанию
объема поставки в стоимостном выражении.

Непойму что неправильно когда делаю интервал объёма поставки! Когда нажимаю любой символ, то нормально задаю интервал. Но когда нажимаю 0, тоже просит задавать интервал! Что неправильного? Как лучше сделать? Исправьте код пожалуйста.


sdfef.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
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
#include <iostream>
#include <iomanip>
#include <locale.h>
#include "fun.h"
 
int main()
{
setlocale(LC_ALL,".1251");
 
int i,j,n;
 
do
{
cout << "Введите количество элементов продукции: ";
cin >> n;
}
while (n<1);
 
Postavki *produkcia = new Postavki [n];
 
//ввод данных с клавиатуры
inputprodukciaODZ(produkcia, n);
 
//сортировка
for (i=0; i<n-1; i++)
for (j=i+1; j<n; j++)
if ( (*(produkcia+i)).post > (*(produkcia+j)).post )
Pswap( produkcia+i, produkcia+j );
 
//выводить все или некоторые записи?
char how;
cout << endl << "Для вывода всего списка введите 0,\nдля выборочного вывода - любой другой символ: ";
cin >> how;
prnt(produkcia, how, n);
 
delete []produkcia;
 
cout << endl << endl;
system("pause");
return 0;
}
 
[size="1"][color="grey"][I]Добавлено через 35 секунд[/I][/color][/size]
fun.h
 
 
#ifndef FUN_H
#define FUN_H
 
using namespace std;
 
//объявление структуры
struct Postavki
{
char prod[15];
double shifr;
double post;
double cena;
double obem;
};
 
// циклы do-while предназначены для корректного ввода данных
void inputprodukciaODZ(Postavki produkcia[], const int n)
{
for (int i=0; i<n; i++)
{
cout << endl << "Ввод информации о " << (i+1) << " продукции:";
 
do
{
cin.clear();
cout << endl <<"Название продукции (не более 15 символов): ";
cin >> (*(produkcia+i)).prod;
}
while ( strlen((*(produkcia+i)).prod) > 15 );
 
do
{
cout << "Шифр продукции (числовой): ";
cin >> (*(produkcia+i)).shifr;
}
while ( (*(produkcia+i)).shifr < 0 );
 
do
{
cout << "Обьём поставки, шт: ";
cin >> (*(produkcia+i)).post;
}
while ( (*(produkcia+i)).post < 0 );
 
do
{
cout << "Оптовая цена, грн: ";
cin >> (*(produkcia+i)).cena;
}
while ( (*(produkcia+i)).cena < 0 );
 
(*(produkcia+i)).obem = (*(produkcia+i)).post * (*(produkcia+i)).cena;
}
}
 
//меняем местами два значения объёма
void dswap(double &a, double &b)
{
double tmp;
tmp=a;
a=b;
b=tmp;
}
 
//меняем местами две структуры
void Pswap(Postavki *i, Postavki *j)
{
char ctmp[15];
strcpy(ctmp, i->prod);
strcpy(i->prod, j->prod);
strcpy(j->prod, ctmp);
 
dswap( i->shifr, j->shifr);
dswap( i->post, j->post );
dswap( i->cena, j->cena );
dswap( i->obem, j->obem );
}
 
//конечный вывод
void prnt(const Postavki *produkcia, char how, const int n)
{
int interv=0, i, min, max;
bool is=0;
double shifrS=0, postS=0, cenaS=0, obemS=0;
 
//если выводить только некоторые, то какие?
if (how!='0')
 
cout << "Введите начальную границу интервала,\nв котором находится обьём поставки: ";
cin >> min;
 
cout << "Введите конечную границу интервала,\nв котором находится обьём поставки: ";
cin >> max;
 
for (interv=min; interv<=max; interv++)
 
 
 
cout << endl << "+------------------------------------------------------------------------------+"
<< endl << "| Обьём поставки продукции |"
<< endl << "|------------------------------------------------------------------------------|"
<< endl << "| № | Продукция | Шифр | Обьём поставки | Оптовая цена | Обьём |"
<< endl << "+------------------------------------------------------------------------------+";
 
for (i=0; i<n; i++)
{
if ( interv && interv < (*(produkcia+i)).post ) continue;
 
//есть записи, удовлетворяющие условию
is=1;
 
shifrS += (*(produkcia+i)).shifr;
postS += (*(produkcia+i)).post;
cenaS += (*(produkcia+i)).cena;
obemS += (*(produkcia+i)).obem;
 
cout << endl << "| " << setw(1) << (i+1)
<< " | " << setiosflags(ios::left) << setw(15) << (*(produkcia+i)).prod << setiosflags(ios::right)
<< " | " << setw(6) << setprecision(8) << (*(produkcia+i)).shifr
<< " | " << setw(14) << setprecision(8) << (*(produkcia+i)).post
<< " | " << setw(12) << setprecision(8) << (*(produkcia+i)).cena
<< " | " << setw(13) << setprecision(8) << (*(produkcia+i)).obem
<< " |";
}
 
//если ни одна запись не удовлетворяет условию
if ( !is && i==n )
cout << endl << "| Ни у одной продукции обьём продукции не меньше, |"
<< endl << "| чем сумма, введенная вами |";
 
else
{
cout << endl << "+------------------------------------------------------------------------------+"
<< endl << "| | ВСЕГО: | | "
<< setw(12) << setprecision(8) << postS << " | "
<< setw(12) << setprecision(8) << cenaS << " | "
<< setw(13) << setprecision(8) << obemS << " | ";
}
 
cout << endl << "+-------------------------------------------------------------------------------+";
}
 
#endif

СРЕДА РАЗРАБОТКИ Висуал Студио 2010

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