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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2010, 17:35   #1
-ushёl-
Форумчанин
 
Аватар для -ushёl-
 
Регистрация: 04.02.2009
Сообщений: 141
Печаль Есть код.Поиск ошибки.указатель this

Добрый вечер.Подскажите где в тексте скрывается ошибка?
При исполнении заносятся 4 числа и функция находит наименьшее и наибольшее число,а так же средне арифметическое число.Проблема в том что функция setInter() не корректно присваивает значения объекту и вычисляет среднее арифметическое.
Если есть идеи подскажите как реализовать лучше этот метод.Возможно ли для функции setInter() реализовать такое:получить данные,передать их конструктору для создания временного объекта и присвоить временный объект вызвавшему,представленному через *this ?
текст:

Код:
//salesobject.h
#ifndef SALES0BJ_H_
#define SALESOBJ_H_
#include <iostream>
namespace SALESOBJ
{
    const int QS = 4;
    class setSales
    {
        double sales[QS];
        double average;
        double max;
        double min;
        
        public:
          setSales();
          setSales(const double ar[],int n);
          setSales setInter();
          void showSales() const;
    };
}//end of namespace SALESOBJ
#endif
__________________

Код:
//salesobject.cpp
#include "salesobject.h"
//#include 
namespace SALESOBJ
{
    setSales::setSales()
    {
        sales[0] = 0;
        average = max = min = 0;
    }
    
    setSales::setSales(const double ar[],int n)
     {
          double summ = 0;
          max = ar[0];
          min = ar[0];
        for(int i = 0;i<n;i++)
        {
          sales[i] = ar[i];
          if(max < ar[i])
           max = ar[i];
           if(min>ar[i])
            min = ar[i];
            summ += ar[i];
            average = double(summ / n);
        }
      }
      
     setSales setSales::setInter()
       {
            using namespace std;
        cout<<"Vvelbne 4 znacheniya double:"<<endl;
        for(int i = 0;i < SALESOBJ::QS;i++)
        cin>>sales[i];
        double summ = 0;
          max = sales[0];
          min = sales[0];
        for(int i = 0;i < SALESOBJ::QS;i++)
         {
          if(max < sales[i])
           max = sales[i];
           if(min > sales[i])
            min = sales[i];
            summ += sales[i];
            average = summ / 4;
            return *this;
         } 
       }
       
       void setSales::showSales() const
       {
            using std::cout;
            using std::endl;
         for(int i = 0;i < SALESOBJ::QS;i++)
          cout<<sales[i]<<endl;
          cout<<"average = "<<average<<endl;
          cout<<"max = "<<max<<endl;
          cout<<"min = "<<min<<endl;
        }
}//end namespace SALESOBJ
___________________________

Код:
#include <cstdlib>
#include <iostream>
#include "salesobject.h"

int main(int argc, char *argv[])
{
    using namespace std;
    using SALESOBJ::setSales;
    const double sArray[SALESOBJ::QS] = {3.5,1.2,76.5,33.2};
    const double s2_Array[SALESOBJ::QS] = {22.1,5.54,7.9,33.2};
    setSales object01;
    object01.setInter();
    cout<<"show object01:\n";
    object01.showSales();
    cout<<endl;
    setSales object02(sArray,4);
    cout<<"show object02:\n";
    object02.showSales();
    cout<<endl;
    setSales object03(s2_Array,4);
    cout<<"show object03:\n";
    object03.showSales();
    cout<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}

Последний раз редактировалось Sazary; 12.07.2010 в 21:45.
-ushёl- вне форума Ответить с цитированием
Старый 11.07.2010, 18:17   #2
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Код:
     setSales setSales::setInter()
       {
            using namespace std;
        cout<<"Vvelbne 4 znacheniya double:"<<endl;
        for(int i = 0;i < SALESOBJ::QS;i++)
        cin>>sales[i];
        double summ = 0;
          max = sales[0];
          min = sales[0];
        for(int i = 0;i < SALESOBJ::QS;i++)
         {
          if(max < sales[i])
           max = sales[i];
          if(min > sales[i])
            min = sales[i];
          summ += sales[i];
         }
        average = summ / 4;
        return *this;
       }
А так ?
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 11.07.2010, 18:57   #3
-ushёl-
Форумчанин
 
Аватар для -ushёl-
 
Регистрация: 04.02.2009
Сообщений: 141
По умолчанию

Вы знаете,да... Как то помягче,что ли Ваш вариант идёт=)
-ushёl- вне форума Ответить с цитированием
Старый 11.07.2010, 19:39   #4
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

так оно работает ? =) я просто не компилировал =)
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверьте пож код, есть ли там ошибки dimonpwnz Помощь студентам 0 13.04.2010 20:38
Есть ошибки Lisёноk Помощь студентам 2 25.03.2010 19:24
C++. Есть код нужно исправить ошибки megavolt91 Общие вопросы C/C++ 6 06.06.2009 19:27
C++. Есть код нужно исправить ошибки megavolt91 Помощь студентам 1 01.06.2009 18:38
Есть ли возможность отсорировать масив если передаёш по функции указатель ? HeaD Помощь студентам 2 22.01.2009 09:16