Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2012, 17:39   #1
AcTiV
Пользователь
 
Регистрация: 25.12.2012
Сообщений: 40
По умолчанию код работает не корректно

переменная all неправильно выводит значение, она выводит показатели counter`a (счетчика), а должна выводить сумму всех переменных total`ов

то ли я дурак не могу сделать цикл для того что бы тоталы суммировались и ихнее значение присваивалось переменной all,
то ли дурак совсем


Код:
//программа которая считает сумму товара
//и подсчитывает сумму всей покупки
//c_vo - количество
//counter - счетчик
//total - цена * количество
//zena - цена товара
//all - общее значение всех total
#include <iostream>
#include <conio.h>  //для getch
#include <iomanip>
#include <Windows.h>
using namespace std;

int main()
{
    SetConsoleOutputCP(1251);
    setlocale(LC_ALL, "RUS");   //локализация

    //задаем начальные значения
    float counter, total, c_vo, zena, all;
    string name;    //имя товара

    total = 0;  //цена товара умноженая на количество товара
    counter = 0;    //счетчик
    all = 0;    //сумма всех посчитаных товаров

    cout << "Добро пожаловать!" << endl;

    //этап обработки даных

    while (zena != -1)  //цикл выполняется пока не будет введено stop или -1
    {
        counter += 1;
        cout << "Введите -1 для конца ввода: " << endl;
        cout << "Введите имя: ";
        cin >> name;
        cout << "Введите цену: ";
        cin >> zena;
        cout << "Введите количество: ";
        cin >> c_vo;
        total = zena * c_vo;    //цена умноженная на количество
        cout << "\n Тотал = " << total << endl;
        cout << "\n" << endl;

        if (total != 0)   //сумма всех расчетов не равна 0
        {
            all = total * counter;  //если не равна 0, то вычисляем ИТОГ всего
        }
    }

    cout << "ИТОГ = " << all << endl;    //вывод всей суммы


    getch();    //задержка
    return 0;
}
AcTiV вне форума Ответить с цитированием
Старый 25.12.2012, 17:50   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

На момент выхода из цикла all содержит произведение total в последней итерации цикла на количество итераций.
Если Вас вместо этого интересует сумма total для всех итераций цикла, логичнее было бы прибавлять к all total на каждой итерации, аналогично тому, как к counter на каждой итерации прибавляется 1.
Abstraction вне форума Ответить с цитированием
Старый 25.12.2012, 17:55   #3
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Мне непонятно условие выхода из цикла : цена == -1
И прежде чем будет выход из цикла, это отрицательное значение поучаствует в общем подсчете. Что можно ожидать?
EUGY вне форума Ответить с цитированием
Старый 25.12.2012, 20:04   #4
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

автор хотел организовать, что-то вроде консольной меню.
т.е. ввод информации до тех пор пока пользователь этого хочет.
но обычно используют
Код:
for(;;)
а если автор написал "выход"
делаем ретурн - если в функции или брек.
у автора... всё равно должен выполниться код снизу.
но помойму проблема даже не в этом.
//----
подчёт должен быть за циклом... это однозначно.
ибо это не красивый подход, да и нелогичный.
у каждой операции должен быть свой логичный подход...
например цикл, только набивает... а после цикла идёт подчёт.
так будет просто правильней и не запутаешься.
Если помог, тут весы есть , Вам не сложно, а мне приятно.

Последний раз редактировалось Perchik71; 25.12.2012 в 20:07.
Perchik71 вне форума Ответить с цитированием
Старый 25.12.2012, 23:01   #5
AcTiV
Пользователь
 
Регистрация: 25.12.2012
Сообщений: 40
По умолчанию

спасибо всем )

наконец-то я понял как все это сделать

Цитата:
all += total;
AcTiV вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не корректно работает программа,посмотрите yurok25 Общие вопросы C/C++ 2 14.05.2012 20:12
Запрос к MySQL не работает корректно Гламурная птица Помощь студентам 1 01.10.2011 19:43
Функция работает не корректно! VintProg Общие вопросы Delphi 8 04.08.2011 14:54
Программа работает не корректно Neymexa Общие вопросы C/C++ 5 24.12.2008 19:17