0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 28
1

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

23.03.2011, 14:04. Показов 4014. Ответов 40
Метки нет (Все метки)

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

Непойму что неправильно когда делаю интервал объёма поставки! Когда нажимаю любой символ, то нормально задаю интервал. Но когда нажимаю 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

 Комментарий модератора 
Используйте теги форматирования кода и не дублируйте темы.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.03.2011, 14:04
Ответы с готовыми решениями:

Нужна подсказка в разборе структуры файла
Доброго всем времени суток! Имеется некий бинарный файл. Нужно его прочитать, вытащить из него всё...

Нужна небольшая подсказка по запросу в БД товары
Сделал запрос на количество товаров на складе, но почему-то выводятся только те позиции, которые...

Работаю над контрольной - разработка чата. Нужна небольшая подсказка.
Привет всем. В настоящее время работаю над домашней контрольной по разработке чата. Вообщем-то все...

Небольшая подсказка
Нужна помощь, нужно что бы Edit-ы были каждый сам за себя и memo относились к каждому Edit-у и...

40
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
26.03.2011, 10:35 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от MopkoBHblu Посмотреть сообщение
Опердил ты меня
Поэтому я по кусочкам постил.

Добавлено через 1 минуту
Цитата Сообщение от MopkoBHblu Посмотреть сообщение
никогда не используй рунглиш xD
У-ха-ха! Только сейчас названия переменных прочитал.)
Пишите грамотным транслитом.)
0
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 28
26.03.2011, 16:44  [ТС] 22
Можешь теперь выложить полный код моей программы, чтобы было с учетом ваших замечаний.
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
26.03.2011, 16:55 23
Чтобы научить, нужно указывать на ошибки, а не исправлять их.
Да и влом.
1
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 28
26.03.2011, 17:09  [ТС] 24
MopkoBHblu, Можешь теперь пожалуйста выложить полный код моей программы, чтобы было с учетом ваших замечаний.
0
10 / 10 / 0
Регистрация: 23.03.2011
Сообщений: 63
26.03.2011, 21:55 25
Цитата Сообщение от vlados92 Посмотреть сообщение
MopkoBHblu, Можешь теперь пожалуйста выложить полный код моей программы, чтобы было с учетом ваших замечаний.
Я тебя понял, ты хочешь не помощи, а просто, чтобы за тебя все сделали xD
Не канает... я ухожу xD
0
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 28
26.03.2011, 23:11  [ТС] 26
Я просто не сильно разобрался, помоги пожалуйста до конца тебе ведь это займет меньше 5 минут.
0
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 28
27.03.2011, 00:28  [ТС] 27
Вам сложно напрямую помочь?

Добавлено через 1 минуту
Просто я уже все перепробовал но все равно ничего не получается, а возникают в этом месте разные проблемы
0
10 / 10 / 0
Регистрация: 23.03.2011
Сообщений: 63
27.03.2011, 01:02 28
Цитата Сообщение от vlados92 Посмотреть сообщение
Я просто не сильно разобрался, помоги пожалуйста до конца тебе ведь это займет меньше 5 минут.
да ну, какие пять минут? переписать твою ересь - 5 минут, а чтобы исправить, ее нужно еще прочитать, а так как форматирование там ужаснейшее - это превращается в дикую пляску с клавиатурой на голове xD

перепиши программу, вдумчиво, грамотно, используя логику, а не только методичку.

1) НЕ ИСПОЛЬЗУЙ! Рунглиш в названии переменных, функций, чего-либо. Переменные типа rukovodstva, butilki, yabloki - лучше всего заменить на intManagement, charBottles, floatApples, с указанием типа данных. http://translate.google.ru/ - в помосч.
2) Группы инструкций, которые имеют некую общую цель, должны быть как-то отделены от других инструкций и, каким-нибудь образом, между собой связаны визуально. Выведи табами их на один уровень, например.
3) ПРОЧИТАЙ толковую книжку. Для начинающих самое то - Дейтел и Дейтел. "Как программировать на С++".

злостный оффтоп, не удержался:
твои посты напомнили один графоманский выкидыш xD
http://www.timezero.ru/cgi-bin... 394841&b=1
1
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
27.03.2011, 07:33 29
Цитата Сообщение от MopkoBHblu Посмотреть сообщение
заменить на intManagement, charBottles, floatApples, с указанием типа данных
Пожалуйста, не надо тип данных указывать.
0
10 / 10 / 0
Регистрация: 23.03.2011
Сообщений: 63
27.03.2011, 14:32 30
Цитата Сообщение от Deviaphan Посмотреть сообщение
Пожалуйста, не надо тип данных указывать.
почему? О_о
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
27.03.2011, 14:35 31
Замени тип для charBottles на std::string и тип для floatApples на double и узнаешь.
0
10 / 10 / 0
Регистрация: 23.03.2011
Сообщений: 63
27.03.2011, 14:43 32
Цитата Сообщение от Deviaphan Посмотреть сообщение
Замени тип для charBottles на std::string и тип для floatApples на double и узнаешь.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#using namespace std;
 
 
 
int main(void) {
 
    double doubleSugarAmount; 
    std::string stringWords;
    std::string charWords;
    double floatSugarAmount; 
 
    return 0;
}
??? И что должно было пойти не так???
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
27.03.2011, 14:46 33
Цитата Сообщение от MopkoBHblu Посмотреть сообщение
И что должно было пойти не так???
std::string charWords;
double floatSugarAmount;

Правда ничего не смущает??? Ну ладно, живи с этим...
0
10 / 10 / 0
Регистрация: 23.03.2011
Сообщений: 63
27.03.2011, 14:52 34
Цитата Сообщение от Deviaphan Посмотреть сообщение
std::string charWords;
double floatSugarAmount;

Правда ничего не смущает??? Ну ладно, живи с этим...
xD

C++
1
2
double float dfSugarAmount;
std::string sManagement;
XDDD

есть к тому-же общепринятые сокращения типов данных, если не нравиться... df f i s и пр. xD
имхо, и этому есть предыстория, так проще разобраться в объемном коде...

тем более string charWords???? зачем так делать? string stringWords - еще куда не шло... это все же лучше чем slova, pomidori, chelovek, sredneeSummiTrehChisel... xD
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
27.03.2011, 14:59 35
Теперь замени тип double на std::complex.
Я буду продолжать, пока ты не поймёшь. Мне не трудно.
Цитата Сообщение от MopkoBHblu Посмотреть сообщение
double float


Добавлено через 50 секунд
Цитата Сообщение от MopkoBHblu Посмотреть сообщение
есть к тому-же общепринятые сокращения типов данны
Это атавизм.

Добавлено через 1 минуту
Цитата Сообщение от MopkoBHblu Посмотреть сообщение
double doubleSugarAmount; std::string stringWords; std::string charWords; double floatSugarAmount;
Цитата Сообщение от MopkoBHblu Посмотреть сообщение
тем более string charWords???? зачем так делать?
Вот и я спрашиваю.)
0
10 / 10 / 0
Регистрация: 23.03.2011
Сообщений: 63
27.03.2011, 15:01 36
Цитата Сообщение от Deviaphan Посмотреть сообщение
Теперь замени тип double на std::complex.
Я буду продолжать, пока ты не поймёшь. Мне не трудно.



Добавлено через 50 секунд

Это атавизм.

Добавлено через 1 минуту



Вот и я спрашиваю.)
В общем, продолжай, транслитфаг - Дейтелорасту не товарищ xD
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
27.03.2011, 15:09 37
Я к тому, что добавлять префикс для "общепринятые сокращения типов данных" в объектно-ориентированных языках, как минимум, незачем. Как максимум - расстреливать. Или отшлёпать.
0
10 / 10 / 0
Регистрация: 23.03.2011
Сообщений: 63
27.03.2011, 15:17 38
Цитата Сообщение от Deviaphan Посмотреть сообщение
Я к тому, что добавлять префикс для "общепринятые сокращения типов данных" в объектно-ориентированных языках, как минимум, незачем. Как максимум - расстреливать. Или отшлёпать.
у каждого свое имхо... мне кажется что за транслит надо вешать публично и за гениталии xD
здесь просто вопрос удобства, никогда не спутаешь/забудешь что можно делать с этой переменной... я не спорю идентификаторы становятся громоздкими, но опять же, ОО языки могут себе это позволить, так это не затруднит доступ к данным классов, ИМХО...
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
27.03.2011, 15:24 39
Цитата Сообщение от MopkoBHblu Посмотреть сообщение
не спорю идентификаторы становятся громоздкими
Они становятся не громоздкими, а некорректными.
Теперь замени тип std::complex на BCD и не забудь поправить все имена идентификаторов.
И это не ИМХО, это факт.

Я же не про транслит спорю.)
0
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 28
27.03.2011, 16:08  [ТС] 40
Так никто не может выложить правильно работающий код?
0
27.03.2011, 16:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.03.2011, 16:08
Помогаю со студенческими работами здесь

Нужна подсказка
дана действительная матрица размера n x m, все элементы которой различны. В каждой строке...

Нужна подсказка)
Здравствуйте! В андроид я новичок. Нужно реализовать следующий алгоритм: Приложение при старте...

Нужна подсказка
Есть два метода. Первый позволяет получить название файла без расширения и второй наоборот получает...

Нужна подсказка!
Всем привет! Есть вопрос по поводу реализации проекта! Суть дела обстоит вот как: Есть сервер MS...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru