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

Пожалуйста исправте ошибки в коде с++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Транспорт http://www.cyberforum.ru/cpp-beginners/thread586184.html
Помогите с кодом! Задание: Создать абстрактный класс CVehicle. На его основе реализовать классы CPlane, ССаг и CShip. Классы должны иметь возможность задавать и получать координаты, параметры средств передвижения (цена, скорость, год выпуска). Для самолета должна быть определена высота, для самолета и корабля - количество пассажиров. Для корабля - порт приписки. Написать программу, которая...
C++ Как преобразовать большое число в строку через stringstream и ограничить знаки после точки опять возникла проблема которая была недавно но с другим методом нужно преобразовать большое число типо double в строку через stringstream и ограничить количество знаков после запятой до двух делаю так double num=3292375930.9999; stringstream sst; sst << num; string str= sst.str();sst.str(""); http://www.cyberforum.ru/cpp-beginners/thread586183.html
Кто-нибудь реализовывал алгоритм Косарайю через класс? C++
Нужно найти число компонент сильной связности в ориентированном графе.
C++ Дана фраза. Определить сколько в ней симметричных пятибуквенных слов
Необходимо программу написать на С++.. Дана фраза. Определить,сколько в ней симметричных пятибуквенных слов. Добавлено через 10 часов 13 минут Помогите пожалуйста!!! Добавлено через 4 часа 8 минут Ну кто-нибудь,помогите,пожалуйста!!! очень нужно.. (((
C++ Как доработать ? http://www.cyberforum.ru/cpp-beginners/thread586103.html
Из положительных значений двух целочисленных массивов различной размерности сформировать общий массив. Найти среднее арифметическое элементов, расположенных в массиве до первого простого числа. Создать функции для вычисления среднего значения и определения простого числа. Набросал тут кое-что) а вот в конце никак не могу... Как найти простое число в массиве и как заставить посчитать среднее...
C++ С Паскаля на С++ Кто способен переделать программу, написанную на Паскале, на С++? подробнее

Показать сообщение отдельно
iPiton
Сообщений: n/a
25.05.2012, 07:11     Пожалуйста исправте ошибки в коде с++
Программа должна просить пользователя ввести поочередно 4 поля:
Item Id - ID предмета (используется только для прекращения подстчета при неправильном вводе или 0)
Item Price - цена предмета
Discount Type - тип скидки (B - 10%, D - 20% T - 30% N-0% то есть никакой)
Quantity - количество предметов.

Если ввод правильный (ID больше 0, Item Price больше 0, скидка либо B D T или N, количество больше 0), то программа должна сохранить цену всей это продажи и затем заново запрашивать ввод данных на новую партию. В противном случае программа должна давать отчет за все партии где ввод был правильным и показывать сколько партий было и в каком именно ошибка, затем просить ввести любую клавишу и закрываться. Если же в ID, Item Price, Quantity введено что-то вроде 1323n, это считается неправильным вводом.

Вот мой код. Программа компилируется, но не правильно работает. Счетчик вводов RecordNum почему-то работает неправильно, программа не выдает отчет об ошибке и не перестает запрашивать новый ввод если цена или количество 0 или меньше, а подсчет вообще производит только для последнего ввода, хоть я и написал totalCost += calculateItemCost(itemPrice,discountType,quantity); что якобы должно складывать новую партию закупки к старой.

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
#include<iostream>
using namespace std;
double calculateItemCost(double itemPrice, char discountType, unsigned quantity);
void displayTotalCost(double totalCost, unsigned recordNum, bool aborted);
int readSaleRecord(unsigned & itemId, double & itemPrice,char & discountType, unsigned & quantity);
 
int main()
{
    double itemPrice, totalCost=0;
    char discountType;
    unsigned quantity,recordNum=-2,itemId;
    bool aborted= 0;
    int ind;
        
        
        while(aborted == 0)
          {
            aborted = readSaleRecord(itemId,itemPrice,discountType,quantity);
            totalCost += calculateItemCost(itemPrice,discountType,quantity);
            recordNum++;                           
          }
           if (aborted > 0)
               aborted = 0;
            
    
    readSaleRecord(itemId,itemPrice,discountType,quantity);
   totalCost=calculateItemCost(itemPrice,discountType,quantity);
    displayTotalCost(totalCost,recordNum,aborted);
    
 
    system("pause");
    return 0;
 
}
    
double calculateItemCost(double itemPrice, char discountType, unsigned quantity)
{
       switch (discountType)
       {
       case 'N':return itemPrice*quantity;
       case 'B':return itemPrice*0.9*quantity;
       case 'D':return itemPrice*0.8*quantity;
       case 'T':return itemPrice*0.7*quantity;
       
              }           
}
      
      
void displayTotalCost(double totalCost, unsigned recordNum, bool aborted)
{
     if(aborted)
     {
     cout<< endl<<"Total sale cost= $"<<totalCost<<endl;
     cout << "Records=" << recordNum << endl;
     }
     else {
     cout<< endl<<"Total sale cost= $"<<totalCost<<endl;
     cout << "Records=" << recordNum << endl;
     cout<<"Input terminated by invalid data at record "<< recordNum+1<<endl;
     }
}
 int readSaleRecord(unsigned & itemId, double & itemPrice,char & discountType, unsigned & quantity)
 {
     if(cin.good())
     {
    cout << "Enter\n";
    cout << " -> item ID: ";
    cin >> itemId;
    if (itemId == 0||cin.eof())
    return 1;
    
    cout << " -> full item price: ";
    cin>> itemPrice; 
    cout << " -> discount type: ";
    cin>> discountType; 
    cout << " -> quantity: ";
    cin>> quantity; 
    
    return 0;
    }
    
    if (cin.fail())     
       return -1;
         
}
заранее спасибо !
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru