Рейтинг:
2
CPallini
Не используйте goto
- на самом деле тебе это не нужно.
Не используйте такой древний компилятор (conio.h
давно уже ушел).
Используйте структурированные данные.
Не использовать STL
стеклотара.
Один C++98
эскиз реализации
#include <iostream>
#include <vector>
using namespace std;
struct Product
{
string desc;
int price;
Product(string desc, int price):desc(desc), price(price){}
};
void show_menu(const vector<Product> & vp);
int main()
{
vector <Product> vp;
vp.push_back(Product("Veg Chowmein", 100));
vp.push_back(Product("Chili Garlic Noodles", 110));
// add more products...
int sum = 0;
while (true)
{
show_menu(vp);
int index, qty;
cin >> index;
if ( index == -1) break;
--index;
if ( index >= 0 && index < static_cast<int>(vp.size()) )
{
cout << "please enter quantity" << endl;
cin >> qty;
sum += (qty * vp[index].price);
}
}
cout << "the sum is " << sum << endl;
}
void show_menu( const vector<Product> & vp)
{
cout << "please choose product (-1 to exit)" << endl;
for (size_t n=0; n<vp.size(); ++n)
{
const Product & p = vp[n];
cout << (n+1) << " " << p.desc << " " << p.price << endl;
}
}
[обновление]
Использование массива вместо
std::vector
#include <iostream>
using namespace std;
struct Product
{
string desc;
int price;
Product(string desc, int price):desc(desc), price(price){}
};
void show_menu( Product ap[], int ITEMS);
int main()
{
Product ap[] = {
Product("Veg Chowmein", 100),
Product("Chili Garlic Noodles", 110)
};
// add more products..
const int ITEMS = sizeof(ap)/sizeof(ap[0]);
int sum = 0;
while (true)
{
show_menu(ap, ITEMS);
int index, qty;
cin >> index;
if ( index == -1) break;
--index;
if ( index >= 0 && index <ITEMS )
{
cout << "please enter quantity" << endl;
cin >> qty;
sum += (qty * ap[index].price);
}
}
cout << "the sum is " << sum << endl;
}
void show_menu( Product ap[], int ITEMS)
{
cout << "please choose product (-1 to exit)" << endl;
for (int n=0; n<ITEMS; ++n)
{
const Product & p = ap[n];
cout << (n+1) << " " << p.desc << " " << p.price << endl;
}
}
[/обновление]
Member 13665211
вообще-то я учусь в 11 классе.Я не изучал вектор.Так что, пожалуйста, вы можете сделать это в форме conio.h.
CPallini
Я только что обновил свое решение, теперь есть версия с массивом вместо std::vector...
Member 13665211
пожалуйста,можете ли вы сделать то же самое в другом методе,используя основы,такие как do while, if, switch и т. д.
CPallini
Извините, но это уже элементарно.
Member 13665211
я создал этот код
можете ли вы помочь мне получить общий итог всего продукта и количества
#include<iostream.h> 7
#включить<conio.h>
int calculate(int количество, int цена)
{
// это чрезмерное упрощение функции
int tot = количество * цена;
возвращение малыша; }
пустота главная()
{
clrscr();
начало:
cout<<"--------------------------------отель RED CHILLIES------------------------------" ;
cout<<" M. G. ROAD RAIPUR - 492001";
cout<<"\n\t\t\t телефон: 0771-4024196";
cout<<"\n--------------------------------------------------------------------------------";
соиь<&ЛТ;"*категории*\т\tPrice\т\т *категории*\т\tPrice" ;
cout<<"\n\nChinese Noodles\t\t Pizza";
соиь<&ЛТ;"\Н\Н1.Овощи Chowmein\т\т 100 \т\т 7.Красный зеленый пиццу\Т 160";
соиь<&ЛТ;"\Н2.Чили чеснок Лапша\100 т\т\т 8.Делюкс Маргарита\Т 180";
соиь<&ЛТ;"\Н3.Американский китайское рагу\110 т\т\т 9.Томатный Делюкс\Т 180";
соиь<&ЛТ;"\н------------------------------\т\т -----------------------------";
cout<<"\n\nPasta\t\t\t\t суп";
соиь<&ЛТ;"\Н\Н4.Паста красного соуса\160 т\т\т 10.Горячий и кислый\t 70";
соиь<&ЛТ;"Н5\.Мексиканская паста\Т\Т 160\т\т 11.Томатный суп\Т\Т 70";
соиь<&ЛТ;"\Н6.Макароны белым соусом\170 т\т\т 12.Manchow суп\Т 70";
соиь<&ЛТ;"\н-------------------------------\т\т -----------------------------";
инт Нум интервала QT,общая;
char pro;
инт всего;
общий итог=0;
делать
{cout<<"\nEnter номер продукта(1-12)- ";
Кин&ГТ;&ГТ;кол-во;
переключатель(num)
{
случай 1: cout<<"\nEnter количество- ";
cin>>qt;
итого=100*qt;
перерыв;
случай 2: cout<<"\nEnter количество- ";
cin>>qt;
итого=100*qt;
перерыв;
случай 3: cout<<"\nEnter количество- ";
cin>>qt;
итого=110*qt;
перерыв;
случай 4: cout<<"\nEnter количество- ";
cin>>qt;
Итого=160*qt;
перерыв;
случай 5: cout<<"\nEnter количество- ";
cin>>qt;
Итого=160*qt;
перерыв;
случай 6: cout<<"\nEnter количество- ";
cin>>qt;
итого=170*qt;
перерыв;
случай 7: cout<<"\nEnter количество- ";
cin>>qt;
Итого=160*qt;
перерыв;
случай 8: cout<<"\nEnter количество- ";
cin>>qt;
итого=180*qt;
перерыв;
случай 9: cout<<"\nEnter количество- ";
cin>>qt;
итого=180*qt;
перерыв;
случай 10: cout<<"\nEnter количество- ";
cin>>qt;
итого=70*qt;
перерыв;
случай 11: cout<<"\nEnter количество- ";
cin>>qt;
итого=70*qt;
перерыв;
случай 12: cout<<"\nEnter количество- ";
cin>>qt;
итого=70*qt;
перерыв;
}
cout<<"\nDo вы хотите заказать любой другой товар(y/n) ";
cin>>pro;
если(pro=='y')
{
clrscr();
Гото старт;
}
всего=всего+всего;
}
while(pro=='y');
если(pro=='n')
cout<<"total is"<<grandtotal;
геч();
}
Рейтинг:
2
Patrice T
Вам нужно научиться пользоваться break
в switch
заявление.
-----
Научитесь правильно делать отступы в вашем коде, это покажет его структуру, и это поможет чтению и пониманию. Это также помогает выявлять структурные ошибки.
while(pro=='y');
do{
for(t=1; ;t++)
sum=t;
}
while(pro=='y') ;
if(pro=='n')
cout<<"total is"<<sum;
Профессиональные редакторы программистов имеют эту функцию и другие, такие как сопоставление скобок и подсветка синтаксиса.
Блокнот++ Главная Страница[
^]
личные[
^]
-----
Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя
отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что он делает, ответ таков:
отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.
Отладчик - Википедия, свободная энциклопедия[
^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[
^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[
^]
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.
Рейтинг:
1
Richard MacCutchan
cin>>qt;
switch(num)
{
case 1: t=100*qt;
case 2: t=100*qt;
case 3: t=100*qt;
case 4: t=100*qt;
case 5: t=100*qt;
case 6: t=100*qt;
case 7: t=100*qt;
case 8: t=100*qt;
case 9: t=100*qt;
case 10: t=100*qt;
case 11: t=100*qt;
case 12: t=100*qt;
}
В чем смысл этого блока переключателей, поскольку каждый случай вычисляет одно и то же значение? А так как у вас нет
break
операторы вы просто повторяете один и тот же расчет до 12 раз.
Member 13665211
нет, я не редактировал цену.Я только что скопировал 12 раз для 12 продуктов.Когда программа будет сделана я просто переименую ее
Richard MacCutchan
Ну, этот код все еще неправильный.
Member 13665211
пожалуйста, можете ли вы прислать мне точный код
Member 13665211
пожалуйста, можете ли вы прислать мне точный код
Member 13665211
я загрузил весь код, который я сделал.Пожалуйста, вы можете прислать мне последующий код.Вы можете внести любые изменения
Richard MacCutchan
Я не могу делать вашу работу за вас, только помочь вам исправить ошибки. Вернитесь к своим учебным заметкам и проверьте правильный синтаксис блока переключателей. Подумайте, что вы пытаетесь сделать: если общая сумма для продукта равна количеству, умноженному на цену, то вам не нужно проверять, какой это продукт, прежде чем делать расчет. Попробуйте использовать функции для выполнения часто повторяющихся задач, а не иметь все встроенное.
Member 13665211
я просто хочу, чтобы вы это сделали, скажите мне, как я могу просто сделать total=prod*quantity while user want и отобразить чистый итог с помощью do while
Richard MacCutchan
Зачем вам нужно делать/в то время как? Ответ прост: total = price * quantity
Таким образом, после выполнения этого расчета вы можете отобразить детали с помощью cout. Если вы хотите получить общую сумму для всех продуктов, то установите другую переменную grandtotal в ноль в начале, а затем каждый раз через цикл вы просто добавляете к ней последнюю сумму.
Member 13665211
пожалуйста, можете ли вы прислать мне формат цикла в соответствии с моим кодированием для выполнения grandtotal bcz, когда я это делаю, просто продолжайте бесконечность
Richard MacCutchan
Цикл for не так уж и сложен:
int index;
for (index = 0; index < 10; index++)
{ I T E
// I: set the initial value to zero
// perform the code inside the braces
// E: perform any end of loop expression - in this case add 1 to index
// T: perform any test expression - in this case compare index to 10, if it is less then repeat the loop, if it is equal or greater terminate the loop
//
}
Member 13665211
я знаю, но я не в состоянии сделать здравый смысл для расчета общего и общего итога для всего продукта
Richard MacCutchan
Программирование-это не просто написание кода, это больше размышление о том, чего вы пытаетесь достичь. Начните с листа бумаги и запишите свои требования:
- Какие входные данные вам нужно получить?
- какую выходную информацию вам нужно произвести?
- как вы используете входные данные для создания выходных данных?
- какие промежуточные или временные ценности вам нужно сохранить?
и т.д.
С этого момента вы можете начать планировать свою реальную программу. Укажите переменные, которые вы будете использовать и для чего они будут использоваться. Подумайте о том, какие общие функции вам нужны для выполнения вычислений, захвата входных значений, печати отчетов и т. д. затем вы можете закодировать скелет вашей программы и проверить, что происходит при ее запуске. Таким образом, простая начальная точка может быть чем-то вроде:
int calculate(int quantity, int price)
{
// this is an oversimplification of a function
int tot = quantity * price;
return tot;
}
int main()
{
int grandtotal;
int total;
int quantity;
int price;
char answer;
grandtotal = 0;
do
{
cout << "What\'s the quantity?" << endl;
cin >> quantity;
if (quantity == 0)
break; // get out of this loop
cout << "What\'s the price?" << endl;
cin >> price;
total = calculate(quantity, price);
//
// display interim result
//
grandtotal = grandtotal + total
} while (true)
// print the grandtotal message
}
Member 13665211
я создал этот код
можете ли вы помочь мне получить общий итог всего продукта и количества
#include<iostream.h> 7
#включить<conio.h>
int calculate(int количество, int цена)
{
// это чрезмерное упрощение функции
int tot = количество * цена;
возвращение малыша; }
пустота главная()
{
clrscr();
начало:
cout<<"--------------------------------отель RED CHILLIES------------------------------" ;
cout<<" M. G. ROAD RAIPUR - 492001";
cout<<"\n\t\t\t телефон: 0771-4024196";
cout<<"\n--------------------------------------------------------------------------------";
соиь<&ЛТ;"*категории*\т\tPrice\т\т *категории*\т\tPrice" ;
cout<<"\n\nChinese Noodles\t\t Pizza";
соиь<&ЛТ;"\Н\Н1.Овощи Chowmein\т\т 100 \т\т 7.Красный зеленый пиццу\Т 160";
соиь<&ЛТ;"\Н2.Чили чеснок Лапша\100 т\т\т 8.Делюкс Маргарита\Т 180";
соиь<&ЛТ;"\Н3.Американский китайское рагу\110 т\т\т 9.Томатный Делюкс\Т 180";
соиь<&ЛТ;"\н------------------------------\т\т -----------------------------";
cout<<"\n\nPasta\t\t\t\t суп";
соиь<&ЛТ;"\Н\Н4.Паста красного соуса\160 т\т\т 10.Горячий и кислый\t 70";
соиь<&ЛТ;"Н5\.Мексиканская паста\Т\Т 160\т\т 11.Томатный суп\Т\Т 70";
соиь<&ЛТ;"\Н6.Макароны белым соусом\170 т\т\т 12.Manchow суп\Т 70";
соиь<&ЛТ;"\н-------------------------------\т\т -----------------------------";
инт Нум интервала QT,общая;
char pro;
инт всего;
общий итог=0;
делать
{cout<<"\nEnter номер продукта(1-12)- ";
Кин&ГТ;&ГТ;кол-во;
переключатель(num)
{
случай 1: cout<<"\nEnter количество- ";
cin>>qt;
итого=100*qt;
перерыв;
случай 2: cout<<"\nEnter количество- ";
cin>>qt;
итого=100*qt;
перерыв;
случай 3: cout<<"\nEnter количество- ";
cin>>qt;
итого=110*qt;
перерыв;
случай 4: cout<<"\nEnter количество- ";
cin>>qt;
Итого=160*qt;
перерыв;
случай 5: cout<<"\nEnter количество- ";
cin>>qt;
Итого=160*qt;
перерыв;
случай 6: cout<<"\nEnter количество- ";
cin>>qt;
итого=170*qt;
перерыв;
случай 7: cout<<"\nEnter количество- ";
cin>>qt;
Итого=160*qt;
перерыв;
случай 8: cout<<"\nEnter количество- ";
cin>>qt;
итого=180*qt;
перерыв;
случай 9: cout<<"\nEnter количество- ";
cin>>qt;
итого=180*qt;
перерыв;
случай 10: cout<<"\nEnter количество- ";
cin>>qt;
итого=70*qt;
перерыв;
случай 11: cout<<"\nEnter количество- ";
cin>>qt;
итого=70*qt;
перерыв;
случай 12: cout<<"\nEnter количество- ";
cin>>qt;
итого=70*qt;
перерыв;
}
cout<<"\nDo вы хотите заказать любой другой товар(y/n) ";
cin>>pro;
если(pro=='y')
{
clrscr();
Гото старт;
}
всего=всего+всего;
}
while(pro=='y');
если(pro=='n')
cout<<"total is"<<grandtotal;
геч();
}
Richard MacCutchan
Почему вы вернулись к повторению одного и того же кода 12 раз? Я показал вам, как это сделать правильно в моем предыдущем сообщении; используйте это в качестве отправной точки.