Форум программистов, компьютерный форум CyberForum.ru

Марковский процесс (графический вывод) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Числовой массив http://www.cyberforum.ru/cpp-beginners/thread418328.html
Необходимо ввести массив из n элементов с клавиатуры или из текстового файла. Напечатать сумму всех положительных и отрицательных элементов, отсортировать массив(от меньшего к большему). Хелп, очень надо!!!! Завтра сдавать задачку!
C++ Задача по С++ работа с массивом Таблица футбольного чемпионата, в которой приняли участие 20 команд, задана двумерным массивом из одинакового количества строк и столбцов, в котором все элементы, принадлежащие главной диагонали, равны нулю, а каждый элемент, не принадлежащий главной диагонали равен 3, 1, 0(числу очков набранных в игре: 3-выигрыш, 1- ничья, 0-проигрыш) Название каждой команды известно. а) Определить название... http://www.cyberforum.ru/cpp-beginners/thread418325.html
C++ расширить файл
расширить файл BIBL.MY двумя новыми компонентами, для чего написать функцию с именем Korr.
C++ Почему портится поток cin при использовании функции getline
char a; cin.getline(a,5); cin.clear(); При вводе свыше 5 символов после функции getline надо вызывать функцию clear() иначе поток cin не работает, почему так происходит? Пишу в VS2010
C++ Генератор случайных чисел... http://www.cyberforum.ru/cpp-beginners/thread418312.html
На экран выведено 9 прямоугольников одинакового цвета, которые имитируют карточки с нарисованными на них числами от 1 до 9 (число находится на невидимой стороне карточки). Нажатие клавиши (точнее клик мыши) приводит к выводу этого числа в прямоугольнике, в пределах которого находится курсор. Числа располагаются случайным образом. Плиз помогите, заранее спасибо и если можно с комментариями...
C++ Помогите написать программу для этих задач на С 1)В массиве A=(a 1, а 2, ..., а n) удалить все элементы, стоящие между мини- мальным положительным и максимальным отрицательным элементами. 2)Дана матрица A(nЧn), все элементы которой различны. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении этих диагоналей. 3)Даны вершины треугольников ABC u MHP .Вычислить... подробнее

Показать сообщение отдельно
bacekk
2 / 2 / 0
Регистрация: 30.11.2010
Сообщений: 89
26.12.2011, 23:16     Марковский процесс (графический вывод)
У меня было задание реализовать Марковский процесс. Я сделал это следующим образом: у нас есть матрица вероятностей перехода из одного состояния в другое 10x10. Сумма элементов в каждой строке не должно превышать 1. Лучше заполнить всю матрицу элементами равными 0.1, так лучше будет работать рандом состояний. Как работает: мы генерируем число x с помощью функции rand от 0 до 100, засовываем этот х в подпрограмму для ГСЧ от 0 до 1. Мы условились, что в начальный момент времени состояние равно нулю (t=0, i=0). Получаем число z (от 0 до 1), так как состояние равно 0, идем в "нулевую" строчку матрицы и сравниваем z c первым элементом в строке, если z больше первого элемента строки, то мы прибавляем к первому элементу второй, и проверяем, если опять z больше чем сумма, то идем к третьему элементу, если в какой-то момент времени z стало меньше суммы, то мы записываем следующее состояние, как номер столбца, в котором сумма элементов строки больше чем z.
На следующем шаге мы перейдем в строчку с номером этого столбца. И повторяем действия для уже другого z. Таких поисков он делает 100. Вот так работает программа.
Код программы:
Код
 #include <stdlib.h>
 #include <stdio.h>
 #include <conio.h>
 #include <time.h>
 #include <math.h>
 
 #define N 10           
 #define M 100          
 
     float rnd();
 
 main()
 {
   FILE *f, *g;
   float x,y;
   int i,j,t;
   float z,p[N][N],s[N],pp,sp;
 
     f=fopen("C:\\TC\\BIN\\ver.dat","r");
     g=fopen("C:\\TC\\BIN\\rez.dat","w");
 
   for (i=0; i<N; i++)
    {
     for (j=0; j<N-1; j++)
      {
       fscanf(f," %f ",&pp);
       p[i][j]=pp;
      }
     fscanf(f," %f \n",&pp);
     p[i][N-1]=pp;
    }
 
   for (i=0; i<N; i++)
     s[i]=i;
 
  fprintf(g," Markovskij process: \n");
  fprintf(g," ------------------- \n");
 
  t=0;
  i=0;
 
  fprintf(g," t=%d i=%d \n",t,i);
 
  srand(time(NULL)); 
 
  x=rand()%101;
 
  for (t=1; t<=M; t++)
   {
     z=rnd(x);
     x=z*65539;
     sp=0;
 
     for (j=0; i<N; j++)
      {
        sp=sp+p[i][j];
 
        if (z<sp)
         {
          i=s[j];
          break;
         }
      }
 
  fprintf(g," t=%d i=%d \n",t,i);
  fprintf(g,"z=%f",z);
 
  }
 }
 
   float rnd(x)
   float x;
    {
     float y,z1;
 
     y=25175*x+13847;
     y=fmod(y,65539);
     z1=y*1.5255773063e-5;
     x=y;
     return(z1);
   }
ver.dat:
Код
  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1
  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1
  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1
  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1
  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1
  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1
  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1
  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1
  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1
  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1
rez.dat:
Код
 Markovskij process: 
 ------------------- 
 t=0 i=0 
 t=1 i=2 
z=0.709210 t=2 i=8 
z=0.582984 t=3 i=9 
z=0.835833 t=4 i=8 
z=0.314055 t=5 i=9 
z=0.554486 t=6 i=8 
z=0.404873 t=7 i=9 
z=0.887764 t=8 i=8 
z=0.668218 t=9 i=9 
z=0.602878 t=10 i=8 
z=0.654732 t=11 i=9 
z=0.089201 t=12 i=8 
z=0.833835 t=13 i=9 
z=0.000000 t=14 i=8 
z=0.211247 t=15 i=9 
z=0.346337 t=16 i=8 
z=0.234619 t=17 i=9 
z=0.732918 t=18 i=8 
z=0.418969 t=19 i=9 
z=0.764116 t=20 i=8 
z=0.830219 t=21 i=9 
z=0.978627 t=22 i=8 
z=0.155380 t=23 i=9 
z=0.903798 t=24 i=8 
z=0.319715 t=25 i=9 
z=0.042182 t=26 i=8 
z=0.148378 t=27 i=9 
z=0.618454 t=28 i=8 
z=0.785199 t=29 i=9 
z=0.606737 t=30 i=8 
z=0.825063 t=31 i=9 
z=0.164381 t=32 i=8 
z=0.501884 t=33 i=9 
z=0.150102 t=34 i=0 
z=0.017926 t=35 i=1 
z=0.486522 t=36 i=4 
z=0.399213 t=37 i=1 
z=0.400220 t=38 i=6 
z=0.748616 t=39 i=4 
z=0.619598 t=40 i=2 
z=0.590551 t=41 i=8 
z=0.332072 t=42 i=9 
z=0.133885 t=43 i=8 
z=0.757693 t=44 i=9 
z=0.138507 t=45 i=8 
z=0.128682 t=46 i=9 
z=0.791759 t=47 i=8 
z=0.753452 t=48 i=9 
z=0.367969 t=49 i=8 
z=0.836550 t=50 i=9 
z=0.364003 t=51 i=9 
z=0.979771 t=52 i=9 
z=0.958627 t=53 i=8 
z=0.645151 t=54 i=9 
z=0.896017 t=55 i=8 
z=0.447803 t=56 i=9 
z=0.643992 t=57 i=8 
z=0.708905 t=58 i=9 
z=0.901647 t=59 i=8 
z=0.165968 t=60 i=9 
z=0.444401 t=61 i=9 
z=0.998445 t=62 i=0 
z=0.052480 t=63 i=1 
z=0.391722 t=64 i=7 
z=0.824803 t=65 i=6 
z=0.635311 t=66 i=2 
z=0.176021 t=67 i=8 
z=0.542663 t=68 i=9 
z=0.755359 t=69 i=8 
z=0.377489 t=70 i=9 
z=0.493601 t=71 i=8 
z=0.604891 t=72 i=9 
z=0.353629 t=73 i=8 
z=0.815970 t=74 i=9 
z=0.264688 t=75 i=8 
z=0.723169 t=76 i=9 
z=0.000580 t=77 i=8 
z=0.805592 t=78 i=9 
z=0.979665 t=79 i=8 
z=0.271354 t=80 i=9 
z=0.559261 t=81 i=8 
z=0.617111 t=82 i=9 
z=0.986911 t=83 i=8 
z=0.702391 t=84 i=9 
z=0.905247 t=85 i=8 
z=0.804300 t=86 i=9 
z=0.453890 t=87 i=8 
z=0.885964 t=88 i=9 
z=0.348076 t=89 i=0 
z=0.017803 t=90 i=1 
z=0.414011 t=91 i=7 
z=0.942654 t=92 i=5 
z=0.530764 t=93 i=2 
z=0.186151 t=94 i=8 
z=0.561260 t=95 i=9 
z=0.928237 t=96 i=8 
z=0.590337 t=97 i=9 
z=0.954294 t=98 i=8 
z=0.572030 t=99 i=9 
z=0.078064 t=100 i=8 
z=0.467330
Вот, а весь вопрос заключается в том, как мне сделать так, чтобы выводился в файл графический вариант i(t), ну то есть график по идее. Мне сегодня преподаватель сказал сделать так, а я не знаю как это сделать. Помогите пожалуйста.
P.S. Программа сделана в Turbo C.

Добавлено через 8 минут
Помогите или скиньте ссылочку на этот вопрос, очень нужно, найти не могу, перерыл весь сайт.

Добавлено через 1 час 24 минуты
Помогите пожалуйста, хотя бы ссылкой на материал..
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru