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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2008, 13:30   #11
DaRKSPiRT
Пользователь
 
Регистрация: 28.05.2008
Сообщений: 12
По умолчанию

спасибо вам огромное! общий принцип понял, как только напишу конечный вариант сразу же выкину сюда, ждите....Mind working...
DaRKSPiRT вне форума Ответить с цитированием
Старый 16.06.2008, 00:08   #12
DaRKSPiRT
Пользователь
 
Регистрация: 28.05.2008
Сообщений: 12
По умолчанию

Код:
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
#include <iostream.h>
#include <math.h>

int main()
{
 std::vector<double> buffer; //создаем буфер для входного файла;
 std::vector<double> akf;    //-||- для вычисленных значений АКФ;
 std::ifstream in("in.txt");  //Обозначаем входной файл;

   if(in) {
   typedef std::istream_iterator<int> ii;
     std::copy(ii(in), ii(), std::back_inserter(buffer));
    in.close(); //загружаем все целые числа в вектор и закрываем файл;
   buffer.insert(buffer.end(),buffer.begin(),buffer.end());
    int n=buffer.size();//Определяем размер буфера;
    int norm=0;
    for (int i=0; i<n; i++)
   {

   if(norm<buffer[i]) norm=buffer[i];//определяем нормирующее число;
   int k=floor(i/500); //Определение номера сегмента;
   int n1=k*500;       //Задание начальной точки егмента;
   int n2=(k+1)*500;   //Конечной точки сегмента;
   int l=i-n1;         //Задержка на сегменте;
   if (n2>n) n2=n-1;   //Предотвращение ошибки граничных условий;
   double sum=0;       //Создаем переменную суммы;



       for(int j=0; j<n2-n1; j++)     //Цикл вычисления АКФ на сегментах
       {                              //по 500 отсчетов с задержкой i;
       double p1=buffer[n1+j];        //первый множитель;
       double p2=buffer[n2-l+j];      //второй множитель;
       sum+=p1*p2;                    //автосумма произведения множителей;
       }                              //конец вычисления суммы;
       akf.push_back(sum);            //заполняем массив значениями АКФ;


   }

   norm=norm*norm;

    std::vector<double> rezult; //Создание вектора нормированных значений;
   for(int i=0;i<500;i++)       //на выходе будет 500 чисел;
   {                            //начало цикла нормировки;
     int h=floor(n/500);        //колличество сегментов по 500 значений;
     double rez=0;
     for(int j=0;j<h;j++) rez+=akf[j*500+i];//сумма соот-щих значений каждого сегмента;
     rezult.push_back(rez/norm); //заносим вычисления в вектор результатов;
   }



    // теперь сохраним результаты в другой файл
     std::ofstream out("out.txt");
    if(out) {
       std::copy(rezult.begin(), rezult.end(), std::ostream_iterator<int>(out, " ")); 
     out.close();
     } else std::cout << "error: out.txt" << std::endl; //Ошибка если выходной файл неверен;

   } else std::cout << "error: in.txt" << std::endl;//Ошибка если входной файл неверен;

  return 0;
 }
Это более обширная версия того что я хотел.
еще бы это все визуализировать. например как здесь:
Код:
std::ifstream in("in.txt");
задать переменную имени файла? вместо "in.txt"
DaRKSPiRT вне форума Ответить с цитированием
Старый 17.06.2008, 00:29   #13
filosof_x86
...
Форумчанин
 
Аватар для filosof_x86
 
Регистрация: 01.06.2008
Сообщений: 134
По умолчанию

Код:
#include <iostream>
#include <fstream>
#include <string>

int main()    
{  
  std::string file_name;
  std::getline(std::cin, file_name);
  std::ifstream in(file_name.c_str());
  // ...
  return 0;  
}
filosof_x86 вне форума Ответить с цитированием
Старый 18.06.2008, 12:30   #14
DaRKSPiRT
Пользователь
 
Регистрация: 28.05.2008
Сообщений: 12
По умолчанию

if(защита.курсовой=5) beer
DaRKSPiRT вне форума Ответить с цитированием
Старый 18.06.2008, 14:01   #15
filosof_x86
...
Форумчанин
 
Аватар для filosof_x86
 
Регистрация: 01.06.2008
Сообщений: 134
По умолчанию

Цитата:
Сообщение от DaRKSPiRT Посмотреть сообщение
if(защита.курсовой=5)
Выражение этого ифа всегда будет истиной, ибо защита.куросовой присваивается 5, а потом преобразуется в булевое, а все, что отлично от нуля – истина
filosof_x86 вне форума Ответить с цитированием
Старый 20.06.2008, 09:27   #16
DaRKSPiRT
Пользователь
 
Регистрация: 28.05.2008
Сообщений: 12
По умолчанию

пиво навсегда))
DaRKSPiRT вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция ZiLi Microsoft Office Excel 1 05.09.2008 18:37
функция sergei64_89 Общие вопросы C/C++ 2 25.05.2008 16:48
функция Janette Помощь студентам 1 29.04.2008 20:10
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50