|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.03.2011, 13:59 | #1 |
Пользователь
Регистрация: 22.02.2011
Сообщений: 12
|
Структуры, С++. Нужна небольшая подсказка
Вывод на консоль сформированной ведомости и выписки из ведомости для видов продукции, объем поставки которых в стоимостном выражении находится в интервале, границы которого вводятся с консоли.
Записи ведомостей должны быть отсортированы по возрастанию объема поставки в стоимостном выражении. sdfef.cpp #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; } Непойму что неправильно когда делаю интервал объёма поставки! Когда нажимаю любой символ, то нормально задаю интервал. Но когда нажимаю 0, тоже просит задавать интервал! Что неправильного? Как лучше сделать? Исправьте код пожалуйста. |
23.03.2011, 14:00 | #2 |
Пользователь
Регистрация: 22.02.2011
Сообщений: 12
|
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 |
24.03.2011, 14:26 | #3 |
Пользователь
Регистрация: 22.02.2011
Сообщений: 12
|
никто не знает?
|
24.03.2011, 14:57 | #4 | ||
Software Developer
Участник клуба
Регистрация: 01.03.2011
Сообщений: 1,098
|
Цитата:
И здесь: Цитата:
И еще одно -- если ты хочешь получать ответы на свои вопросы, озаботься правильно оформлять код в сообщениях.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв. Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062 |
||
24.03.2011, 21:23 | #5 |
Пользователь
Регистрация: 22.02.2011
Сообщений: 12
|
Можете написать как правильно должен выглядеть код чтобы правильно работало!
|
25.03.2011, 21:03 | #6 |
Пользователь
Регистрация: 22.02.2011
Сообщений: 12
|
Пожалуйста, можете исправить код так чтобы все правильно работало.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужна небольшая подсказка. | BobBarker | Microsoft Office Excel | 3 | 04.02.2011 23:18 |
Нужна небольшая подсказка по клавиатурному хуку | LittleDimON | Общие вопросы Delphi | 0 | 16.02.2010 23:28 |