Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Простейшая программа, но не могу додуматься 
V
    Опции темы
wilson
Дата 3.7.2011, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 11.6.2008

Репутация: нет
Всего: нет



Народ, подскажите плиз, а то мозги чего-то уже дымятся. Вроде простейший код, а разобраться не могу.
Декорация следующая: человек покупает любое количество товара по 3р. за шт., при этом каждая 13-я вещь - бесплатно. Надо рассчитать полную стоимость по общему количеству единиц товара. Т.е. сначала спрашиваем: сколько единиц товара, затем выдаём общую стоимость. Используется операция "%" - остаток от деления.

Код

#include <iostream>
using namespace std;
int main (void)
{
int num_of_items, tot_price=0, counter=0;

//num_of_items - общее кол-во единиц товара
//tot_price - общая стоимость
//counter - количество итераций

bool flag; // просто флаг для проверки деления на 13
cout << endl << "Enter the number of items you gonna buy : ";
cin >> num_of_items;
while (counter++ < num_of_items)
    {
    flag = (num_of_items % 13 == 0);
    if (!flag) tot_price += 3;
    }
cout << endl << "The whole sum you have to pay for " << num_of_items << " items is " << tot_price << " ."<< endl;
cout << endl << flag << endl;
cout << endl << counter << endl;
return 0;
}

Вывел там в последних строках служебные переменные для контроля.
Если количество товара не кратно 13 прибавляем по 3 руб., как только кратно - пропускаем. Пробовал использовать команду "continue", но то же самое получается.
При вводе количества до 12 включительно - всё нормально, 13 - общая сумма = 0 - вообще не пойму откуда берётся. Далее - тоже неправильно - пропуска 13-й штуки не происходит. Т.е.вводим 15шт. - сумма 45, а должно быть 42. Где косяк?
Пользуюсь консольным компилятором Borland (bcc32.exe)

Заранее спасибо.

Это сообщение отредактировал(а) wilson - 4.7.2011, 07:52
PM MAIL   Вверх
voral
Дата 3.7.2011, 22:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 16.3.2008
Где: Иваново

Репутация: нет
Всего: нет



Код


int  num_of_items_free =  num_of_items / 13; // число халявных
int total =  (num_of_items-num_of_items_free ) * 3;

PM MAIL WWW   Вверх
newbieone
Дата 3.7.2011, 22:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.3.2010

Репутация: 1
Всего: 1



Код
flag = (num_of_items % 13 == 0);

Должно быть не num_of_items, который статичен, а counter, который показывает, какой именно товар обрабатывается.
Код
flag = (counter % 13 == 0);

Но вообще-то лучше, конечно, делать, как написал voral  smile 
PM MAIL   Вверх
wilson
Дата 4.7.2011, 08:02 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 11.6.2008

Репутация: нет
Всего: нет



voral , спасибо за вариант, но интересовала именно ошибка(всё-таки вариант с остатком от деления более изящный, т.к. ты делаешь то же самое, но вручную).


Цитата

Должно быть не num_of_items, который статичен, а counter, который показывает, какой именно товар обрабатывается.
Код
flag = (counter % 13 == 0);



Конечно же, спасибо newbieone. Как обычно всё на поверхности, просто переклинило уже.


Это сообщение отредактировал(а) wilson - 4.7.2011, 08:06
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0559 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.