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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2016, 17:43   #11
ilyakonst
Пользователь
 
Регистрация: 27.03.2016
Сообщений: 20
По умолчанию

Цитата:
Сообщение от f.hump Посмотреть сообщение
Аватар прав.
и в аккумуляторах делай каст (double)U, (double)V
что это значит? не понимаю
Изображения
Тип файла: jpg error.jpg (18.2 Кб, 135 просмотров)

Последний раз редактировалось ilyakonst; 27.03.2016 в 17:49.
ilyakonst вне форума Ответить с цитированием
Старый 27.03.2016, 19:15   #12
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

значит, что U, V должны были остаться целочисленными.

аккумуляторы у тебя c1, c2, c3, z1, z2, z3, z4

ну, и нужно, чтобы при обновлении аккумулятора выполнялась не целочисленная операция а действительная, компилятор конечно может и сам инициативу проявить, но лучше обозначить, что целые должны быть сконвертированы в дабл (прокастить)

c1 += (double)U*(double)V;
.....

фарштанден?

Последний раз редактировалось f.hump; 27.03.2016 в 19:47.
f.hump вне форума Ответить с цитированием
Старый 27.03.2016, 19:49   #13
ilyakonst
Пользователь
 
Регистрация: 27.03.2016
Сообщений: 20
По умолчанию

Цитата:
Сообщение от f.hump Посмотреть сообщение
значит, что U, V должны были остаться целочисленными.

аккумуляторы у тебя c1, c2, c3, z1, z2, z3, z4

ну, и нужно, чтобы при обновлении аккумулятора выполнялась не целочисленная операция а действительная, компилятор конечно может и сам инициативу проявить, но лучше обозначить, что целые должны быть сконвертированы в дабл (прокастить)

c1 += (double)U*(double)V;
.....

фарштанден?
Цитата:
void korel()
{
int i,n=11;
double C=0, koren;
double c1 = 0, c2 = 0, c3 = 0, z1 = 0, z2 = 0, z3 = 0, z4 = 0, chisl, znam; int U, V;
U = 31;
V = 57;
for (i = 0; i < n; i++) {

U = (40664517 * U + 1) % 4294967296;
//printf("%d\n", U);
V = (40664517 * V + 1) % 4294967296;
//printf("%d\n", V);
c1 += (double)U*(double)V;
c2 += (double)U;
c3 += (double)V;
z1 += (double)U*(double)U;
z2 += (double)U;
z3 += (double)V*(double)V;
z4 += (double)V;

}
//printf("%d\n", z1); printf("%d\n", z2); printf("%d\n", z3); printf("%d\n", z4);
chisl = n*c1 - c2*c3;
znam = (n*z1 - z2*z2)*(n*z3 - z4*z4);
printf("chislitel:%lld\n", chisl);
printf("znamenatek:%lld\n", znam);
koren = sqrt(double(znam));
printf("koren iz znam:%3.lf\n", koren);
C = chisl / koren;
printf("koefficent: %.3f\n",C);

}
вот так получается? вроде работает
ilyakonst вне форума Ответить с цитированием
Старый 27.03.2016, 20:12   #14
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

это конечно прогресс.
поздравляю.

но U, V были long long и должны остаться long long, иначе последовательности окажутся не такими как планировалось.

можешь оставить int, но сделай его unsigned int и замени

U = (40664517 * U + 1) % 4294967296;
//printf("%d\n", U);
V = (40664517 * V + 1) % 4294967296;

на

U = (40664517 * U + 1);
//printf("%d\n", U);
V = (40664517 * V + 1);

Последний раз редактировалось f.hump; 27.03.2016 в 20:14.
f.hump вне форума Ответить с цитированием
Старый 27.03.2016, 20:45   #15
ilyakonst
Пользователь
 
Регистрация: 27.03.2016
Сообщений: 20
По умолчанию

Почему я должен откинуть нахождение остатка? это же сама суть лкг
ilyakonst вне форума Ответить с цитированием
Старый 27.03.2016, 21:11   #16
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

ну, потому что целочисленные операции на unsigned int устроены таким образом, что результат любой операции будет равен остатку от деления на 4294967296 результата полноемкостной операции.
f.hump вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Критерий серий Veryn4ik1993 Паскаль, Turbo Pascal, PascalABC.NET 0 18.01.2014 11:43
ВПР критерий Artem_85 Microsoft Office Excel 10 08.11.2012 13:59
критерий Сильвестра Roman Фриланс 1 19.04.2012 19:02
критерий Сильвестра Roman Общие вопросы C/C++ 4 12.04.2012 02:30
решение урав-й типа Vn=a+b/Vg и определение коэф.корреляции serjufa Помощь студентам 2 11.11.2010 06:32