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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2010, 20:01   #1
Aleksandr_Yanov
Подтвердите свой е-майл
 
Регистрация: 13.06.2010
Сообщений: 39
Печаль C++,wxDev-C++,пространство имён.Почти готовое решение.

Добрый вечер.Наведите на путь истинный!=) Ни как не могу разобраться с пространством имён.
У меня есть готовый код,но вот компилятор отказывается собирать его.
Дело в том,что программка состоит из 3 фаилов(заголовочный,определение и main) и при компиляции devC++ указывает на строку #include "sales.h" в main файле и выдаёт сообщение In file included from main_4_g4.cpp(main_4_g4-имя моего проекта).
Сам код файлов:
Код:
//main_4.cpp
#include <cstdlib>
#include <iostream>
#include "sales.h"
using namespace std; 

int main(int argc, char *argv[])
{
   using namespace SALES;
   Sales first;//dlya funczii setSales(,,)
   Sales second;
   //Sales first_2 = {{3.6,7.6,53.2,7.7},0,0,0};//dlya funczii  sttSales(Seles & s)
   //Sales second_2 = {{22.1,5.54,7.9,33.2},0,0,0};
   const double sArray[4] = {3.5,1.2,76.5,33.2};
   const double s2_Array[4] = {22.1,5.54,7.9,33.2};
   setSales(first,sArray,4);//for first object
   setSales(first);
   showSales(first);
   setSales(second,s2_Array,4);//for second object
   setSales(second);
   showSales(second);
   system("PAUSE");
   return EXIT_SUCCESS;
}
*****************************************
заголовочный файл:
//sales.h
#ifndef SALES_H_
#define SALES_H_
[COLOR="rgb(153, 50, 204)"]namespace SALES
{
   const int QUARTERS = 4;
   struct Sales
   {
       double sales[QUARTERS];
       double average;
       double max;
       double min;
   }
   
   void setSales(Sales & s,const double ar[],int n);
   void setSales(Sales & s);
   void showSales(const Sales & s);
}[/COLOR]
#endif
***********************************
файл определение функций:
//sales.cpp
#include <iostream>
#include "sales.h"
namespace SALES
{
   using namespace std;
   void setSales(Sales & s,const double ar[],int n)
   {
         double summ = 0;
         s.max = ar[0];
         s.min = ar[0];
       for(int i = 0;i<n;i++)
       {
         s.sales[i] = ar[i];
         if(s.max<ar[i])
          s.max = ar[i];
          if(s.min>ar[i])
           s.min = ar[i];
           summ+=ar[i];
           s.average = summ / n;
       } 
   }
   /*void setSales(Sales & s) //////Незнаю как использовать эту функцию
   //{ //double Bufmass[4];
       cout<<"Vvelbne 4 znacheniya double:"<<endl;
       for(int i = 0;i<4;i++)
       cin>>s.sales[i];
       double summ = 0;
         s.max = s.sales[0];
         s.min = s.sales[0];
       for(int i = 0;i<4;i++)
       {
         s.sales[i] = s.sales[i];
         //s.max = ar[0];
         //s.min = ar[0];
         if(s.max<s.sales[i])
          s.max = s.sales[i];
          if(s.min>s.sales[i])
           s.min = s.sales[i];
           summ+=s.sales[i];
           s.average = summ / 4;
       } 
       
       
   }*/
   void showSales(const Sales & s)
   {
       for(int i = 0;i<4;i++)
       cout<<s.sales[i]<<endl;
       cout<<"averege = "<<s.averege<<endl;
       cout<<"max = "<<s.max<<endl;
       cout<<"min = "<<s.min<<endl;
   
   }
}
p.s.Может быть проблема кроется в пространстве имён??
p.p.s.И не понятен один нюанс:По заданию сказано использовать 2 функции,одну интерактивную версию setSales() для предоставления значений первой структуре(наверно 1-му объекту структуры) и другую неинтерактиваную версию setSales для предоставления значений второй структуре.
Функция setSales(Sales & s,const double ar[],int n) копирует 4 или n элементов,если n<4,из массива ar в элемент s типа Sales,вычисляет и сохраняет средн.арифмет-ое,максимальное и минимальное значения введённых чисел;оставшимся элементам структуры Sales,если таковые есть,присваиваются значения 0.
Вторая функция setSales(Sales & s) интерактивно подсчитывает продажи за 4 квартала,сохраняет их в элементе s типа Sales, вычисляет и сохраняет среднее арифметическое,максимальное и минимальное значения введённых чисел.
Вообщем не понятно зачем здесь нужна перегруженная функция.Возможно задание не много не правильно дали
Подскажите пожалуйста как действовать.

Последний раз редактировалось Aleksandr_Yanov; 03.07.2010 в 20:10.
Aleksandr_Yanov вне форума Ответить с цитированием
Старый 03.07.2010, 20:11   #2
Indian
Форумчанин
 
Регистрация: 23.02.2010
Сообщений: 107
По умолчанию

Код:
struct Sales
   {
       double sales[QUARTERS];
       double average;
       double max;
       double min;
   }; //точка с запятой
Indian вне форума Ответить с цитированием
Старый 03.07.2010, 20:21   #3
Aleksandr_Yanov
Подтвердите свой е-майл
 
Регистрация: 13.06.2010
Сообщений: 39
По умолчанию

Спасибо.Добавил.Ещё кое что подправил,код компилирует но не открывает консоль,а выводит сообщение
[Linker Error] undefined reference to `_SALES_::setSales(_SALES_::Sales&) '
[Linker Error] undefined reference to `_SALES_::setSales(_SALES_::Sales&) '
ld returned 1 exit status
C:\Users\Documents\Objects\MingW\Ma kefile.win [Build Error] [Output/MingW/Project_4_g9.exe] Error 1
Aleksandr_Yanov вне форума Ответить с цитированием
Старый 03.07.2010, 20:23   #4
Indian
Форумчанин
 
Регистрация: 23.02.2010
Сообщений: 107
По умолчанию

Думаю, первая функция копирует значения из массива в структуру.
А во второй значения берутся не из массива - их вводит пользователь.
Indian вне форума Ответить с цитированием
Старый 03.07.2010, 20:24   #5
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

дык у вас эта функция закомментарена=)
NiCola999 вне форума Ответить с цитированием
Старый 03.07.2010, 20:30   #6
Aleksandr_Yanov
Подтвердите свой е-майл
 
Регистрация: 13.06.2010
Сообщений: 39
По умолчанию

Я её и поставил в коментарии потому что она не корректно работает,может у кого то есть соображения на этот счёт,подскажите
Aleksandr_Yanov вне форума Ответить с цитированием
Старый 03.07.2010, 20:33   #7
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

ну дык покажите что выводит компилятор при её использовании...
NiCola999 вне форума Ответить с цитированием
Старый 03.07.2010, 20:38   #8
Indian
Форумчанин
 
Регистрация: 23.02.2010
Сообщений: 107
По умолчанию

Код:
//sales.cpp

void showSales(const Sales & s)
   {
       for(int i = 0;i<4;i++)
       cout<<s.sales[i]<<endl;
       cout<<"averege = "<<s.averege<<endl; //average
       cout<<"max = "<<s.max<<endl;
       cout<<"min = "<<s.min<<endl;
   
   }

Последний раз редактировалось Indian; 03.07.2010 в 20:48.
Indian вне форума Ответить с цитированием
Старый 03.07.2010, 20:43   #9
Aleksandr_Yanov
Подтвердите свой е-майл
 
Регистрация: 13.06.2010
Сообщений: 39
По умолчанию

Вообще работает) Вчера ночью сидел... Может что то забыл
Выводит приглашение ввести 4 значения double
2 раза и 2 раза выводит результат
Подскажите как более правильнее что ли,если можно так выразится, возможна реализация программки?Пояснения после моего выложенного кода

Запуск нормальный,но похоже не используется функция setSales с 3-я аргументами,не пойму

Последний раз редактировалось Stilet; 05.07.2010 в 09:22.
Aleksandr_Yanov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Считывание имён файлов dobrohleb Microsoft Office Excel 21 06.09.2012 11:35
Надвигающееся космическое пространство Rio309 Помощь студентам 5 17.05.2009 21:01
готовое приложение ComeToDaddy Помощь студентам 17 03.04.2009 18:25
Внедрние в адресное пространство. Alex.rus Win Api 3 22.02.2008 19:55