Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

27.12.2007, 21:50
|
|
Постоянный
Регистрация: 22.11.2006
Сообщений: 473
Провел на форуме: 2461137
Репутация:
216
|
|
Доброе время суток.
Требуется для курсового написать Генератор случайных чисел с экспоненциальным законом распределения. Формула: p(x) = l * exp(-* x).
вот что получилось у меня но проблема в том что ответ всегда равен нолю. в случае если поставить границы для рандома у него всегда одно число ноль. и ответ в результате тоже.
void main (){
double p;
srand((unsigned long)time(NULL));
double x=rand();
double l=rand();
p=l*exp(-l*x);
printf ("%d ,%d ,%d",p,x,l);
getch ();}
Заранее благодарен.
Последний раз редактировалось zarkon; 28.12.2007 в 00:42..
|
|
|

28.12.2007, 01:18
|
|
Новичок
Регистрация: 16.09.2007
Сообщений: 25
Провел на форуме: 120760
Репутация:
62
|
|
Хелп. На асме (Tasm) надо накодить прогу, вычисляющую все простые числа в диапазоне от 2 до вводимого с клавы числа.
upd:
Кое как разобрался, написал ) выкладываю на всякий случай
Код:
.model tiny
.386
.Stack 70h
.code
start:
mov ax,@data
mov ds,ax
push cs
pop ds
mov ah,09h ; приглашение к вводу
mov dx,offset str1
int 21h
mov di,0 ; введенные символы
mov si,0 ; номер позиции
mov bp,10 ; основание системы
r1: mov ah,08h
int 21h ;читаем символ
cmp al,'0' ;если это служебный символ -> r3
jb r3
cmp al,'9' ;если это не цифра -> r1
ja r1
mov bl,al ;сохраним символ в bl
mov ax,di
mul bp ;умножаем на 10
mov dl,bl
sub dl,'0' ;преобразуем символ в цифру
mov dh,0 ;DX - цифра
add dx,ax
jc r1 ;Если перенос -> переполнение
inc si
mov di,dx
mov dl,bl
mov ah,02h
int 21h
jmp r1
r3: cmp si,0
je r1
cmp al,13
je enter2 ;нажали ввод
cmp al,8
jne r1
enter2:
mov ah,09h ;новая строка
mov dx,offset newline
int 21h
mov mem,di ;дублируем эталон
mov nen,di
mov ax,mem ; эталон в AX для работы
mov cnt,1 ; счетчик в еденицу
mov bl,1
mul bl ; переводим AX в DX:SI
main_cycle: ;главный цикл
add cnt,1 ; проверяем следующее число
mov bx,mem
mov ax,cnt
cmp ax,bx ; проверены все числа...
jg qall
mov bx,1 ; переносим AX в DX:AX
mul bx
mov cx,2 ; делим с тройки
internal:
push ax
push dx ; сохраняем текущее проверяемое число
;mov bx,cx
div cx ; делим DX:AX на CX
cmp dx,0 ; если остатка нету
je main_cycle; то число не простое
pop dx
pop ax
add cx,1
cmp ax,cx
jle prime
jmp internal
prime:
mov ah,09h ;выводим простое число
mov dx,offset space
int 21h
mov ax,cnt
call print_prime
jmp main_cycle
qall:
mov ax,4c00h;Выход
int 21h
print_prime proc ;вывод числа
push -1
l: xor dx,dx;чистим dx
div bp ;делим
push dx ;сохраним цифру
cmp ax,0 ;остался 0?
jne l ;если нет, продолжим
mov ah,2h
l2: pop dx ;восстановим цифру
cmp dx,-1 ;дошли до конца -> выход
je qex
add dl,'0' ;преобразуем число в цифру
int 21h ;выведем цифру на экран
jmp l2 ;и продолжим
qex:
ret
endp print_prime
str1 db '.-==[Prime Numbers]==-.',10,13
db '> $'
space db ' $'
newline db 10,13,'$'
mem dw 0
nen dw 0
cnt dw 0
end start
Последний раз редактировалось Heavy Metal; 29.12.2007 в 04:58..
|
|
|

28.12.2007, 17:33
|
|
Познающий
Регистрация: 25.10.2007
Сообщений: 69
Провел на форуме: 348179
Репутация:
52
|
|
Может кому поможет.
Курсовая работа: Нахождение интеграла 5 методами с высокой точностью..
Код:
function funk(var x:real):real;
begin
funk:=Ваша функция
end;
procedure left(var a,b,e:real);
var
k,s1,s2,p,l,rez:real;
i,g,n:integer;
begin
n:=30;
g:=0;
repeat
s2:=s1;
p:=(b-a)/n;
l:=0;
g:=g+1;
for i:=0 to n-1 do
begin
k:=a+i*p;
l:=l+funk(k);
end;
s1:=l*p;
n:=n*2;
until abs(s1-s2)<=e;
rez:=s1;
writeln('rezult ',rez:6:5,' kol-vo itaracij ',g);
readln;
end;
procedure right(var a,b,e:real);
var
t,s1,s2,h,s,rez:real;
n,i,g:integer;
begin
n:=30;
g:=0;
repeat
s2:=s1;
h:=(b-a)/n;
s:=0;
g:=g+1;
for i:=1 to n do
begin
t:=a+i*h;
s:=s+funk(t);
end;
s1:=s*h;
n:=n*2;
until abs(s1-s2)<=e;
rez:=s1;
writeln('rezult ',rez:6:5,' kol-vo itaracij ',g);
readln;
end;
procedure center (var a,b,e:real);
var
t,s1,s2,h,s,rez:real;
n,i,g:integer;
begin
n:=30;
g:=0;
repeat
s2:=s1;
h:=(b-a)/n;
s:=0;
g:=g+1;
for i:=0 to n-1 do
begin
t:=a+h/2+h*i;
s:=s+funk(t);
end;
s1:=s*h;
n:=n*2;
until abs(s1-s2)<=e;
rez:=s1;
writeln('rezult ',rez:6:5,' kol-vo itaracij ',g);
readln;
end;
procedure trap(var a,b,e:real);
var
t,s1,s2,h,s,rez: real;
i,n,g:integer;
begin
n:=30;
g:=0;
repeat
s2:=s1;
h:=(b-a)/n;
s:=(funk(a)-funk(b))/2;
g:=g+1;
for i:=1 to n-1 do
begin
t:=a+i*h;
s:=s+funk(t);
end;
s1:=h*s;
n:=n*2;
until abs(s1-s2)<=e;
rez:=s1;
writeln('rezult ',rez:6:5,' kol-vo itaracij ',g);
readln;
end;
procedure simps(var a,b,e:real);
var
s,r,s2,s1,h:real;
m,n,ch,g:integer;
begin
n:=30;
ch:=1;
g:=0;
repeat
s2:=s1;
h:=(b-a)/(n-1);
s:=funk(a)+funk(b);
g:=g+1;
for m:=1 to n-2 do
begin
r:=a+h*m;
s:=s+ch*funk(r);
if (ch=4) then ch:=2 else ch:=4;
end;
s1:=s*h/3;
until abs(s2-s1)/s1<e;
writeln('rezult ', s1 :6 :5,' kol-vo iteracij ',g);
readln;
end;
var
a,b,e:real;
vibor:integer;
begin
repeat
writeln('Vvedite metod naxogdeni9 Interala');
writeln('1-Pravilo levix pr9moygolnikov');
writeln('2-Pravilo pravix pr9moygolnikov');
writeln('3-Pravilo srednix pr9moygolnikov');
writeln('4-Naxogdenie integrala metodom simpsona');
writeln('5-Naxogdenie integrala s pomowu pravila Tropesii');
writeln('6-Informasi9 o programme');
readln(vibor);
writeln('');
if vibor=6 then
begin
clrscr;
writeln('-===========================================------');
writeln('Ваше имя сюда вобьете');
writeln('-===========================================------');
writeln('');
end;
until vibor<=5;
clrscr;
writeln('-===========================================------');
write('Vvedite a - ');readln(a);
writeln('');
writeln('-===========================================------');
write('VVedite b - ');readln(b);
writeln('');
writeln('-===========================================------');
write('Vved EPS - ');readln(e);
writeln('');
writeln('-===========================================------');
if vibor=1 then
begin
writeln('Vi vibrali 1. Metod LeVix pr9moygolnikov'); writeln;
left(a,b,e);
end;
if vibor=2 then
begin
writeln('Vi vibrali 2. Metod PraVix pr9moygolnikov'); writeln;
right(a,b,e);
end;
if vibor=3 then
begin
writeln('Vi vibrali 3. Metod Srednix pr9moygolnikov'); writeln;
center(a,b,e);
end;
if vibor=4 then
begin
writeln('Vi vibrali 4.Metod TraPesii'); writeln;
trap(a,b,e);
end;
if vibor=5 then
begin
writeln('Vi vibrali 5. Metod Simpsona '); writeln;
simps(a,b,e);
end;
readln
end.
Писал на ABC паскале поетому немного кривовато получилось. Но у меня приняли
|
|
|

02.01.2008, 04:06
|
|
Новичок
Регистрация: 02.01.2008
Сообщений: 2
Провел на форуме: 3754
Репутация:
0
|
|
Каким образом с помощью MFC реализовать следующее:
1. Приложение должно при нажатии клавиш к примеру 1,2,3, ........ выводить графические фигуры (Проблема в том что какое сообщение вставлять в карту? Это WM_CHAR ? и как потом реализацию отклика на сообщение связать с WM_PAINT ....... так чтобы появлялась нужная фигура)
2. Приложение под управлением таймера выводит на экран графические фигуры с заданным интервалом (Как в void CMyMainWnd::OnTimer(UINT nIDEvent) это можно осуществить ? )
3. Нужно чтобы с помощью клавиш "вверх - вниз" изменялась частота таймера.
Шаблон данных приложений примерно такого вида:
#include <afxwin.h>
class CMyMainWnd:
public CFrameWnd
{public:
CMyMainWnd()
{
Create(NULL,"$ - Djigser");
SetTimer(1,1000,NULL);
}
afx_msg void OnTimer(UINT);
DECLARE_MESSAGE_MAP()
~CMyMainWnd()
{
KillTimer(1);
}
};
BEGIN_MESSAGE_MAP(CMyMainWnd,CFrameWnd)
ON_WM_TIMER()
END_MESSAGE_MAP()
class CMyApp :
public CWinApp
{public:
CMyApp(){};
virtual BOOL InitInstance()
{
m_pMainWnd=new CMyMainWnd();
m_pMainWnd->ShowWindow(SW_SHOW);
return TRUE;
}
};
CMyApp theApp;
void CMyMainWnd::OnTimer(UINT nIDEvent)
{
if(nIDEvent==1)
{
CClientDC dc(this);
CBrush brush;
brush.CreateSolidBrush(RGB(0,0,255));
CBrush* def_brush = dc.SelectObject(&brush);
dc.Ellipse(5,5,50,50);
dc.SelectObject(def_brush);
brush.DeleteObject();
}
}
Был бы признателен за оказанную помощь.
|
|
|

02.01.2008, 19:58
|
|
Banned
Регистрация: 24.08.2007
Сообщений: 201
Провел на форуме: 983157
Репутация:
424
|
|
Задание
используя алгоритмы и контейнеры Stl:
создай список из 20 случаных элементов, со значениями от 1 до 19.
отсортируй список так что бы сначала шли четные элементы
Заранее спасибо
|
|
|

03.01.2008, 16:43
|
|
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
Провел на форуме: 3578578
Репутация:
275
|
|
Shawn1x
Код:
#include <vector>
#include <iostream>
#include <time.h>
#include <algorithm>
using namespace std;
bool pred( int value )
{
return !(value % 2) ;
}
void print( int value )
{
cout << value << '\t';
}
void set_and_print( int& value)
{
cout << ( value = rand() % 20 ) << '\t';
}
void main()
{
const int size = 20;
vector<int> vec(size);
srand((unsigned)time(NULL));
for_each(vec.begin(), vec.end(), set_and_print);
cout << endl;
partition(vec.begin(), vec.end(), pred);
for_each(vec.begin(), vec.end(), print);
cout << endl;
}
|
|
|

08.01.2008, 23:06
|
|
Новичок
Регистрация: 02.11.2007
Сообщений: 6
Провел на форуме: 42953
Репутация:
10
|
|
Народ, помогите пожалуйста.
Задача Ферма. Найти квадрат, который в сумме со всеми его собственными делителями дает куб.
С рекурсивным алгоритмом . На С++.
Заранее огромное спасибо.
Последний раз редактировалось Life-inventor; 08.01.2008 в 23:16..
|
|
|

10.01.2008, 00:48
|
|
Новичок
Регистрация: 09.01.2008
Сообщений: 1
Провел на форуме: 6384
Репутация:
0
|
|
очень надо решить задачу до пятницы...на с++...никто почему-то не может...неужели она такая нерешаемая?посмотрите пожалуйста...может кто хоть часть кода сможет написать?
Разместить на шахматной доске максимальное количество слонов и ладей так, чтобы они не находились друг у друга "под боем".
|
|
|

10.01.2008, 00:56
|
|
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме: 4610226
Репутация:
1332
|
|
http://forum.antichat.ru/showpost.php?p=517321&postcount=16
|
|
|

10.01.2008, 11:06
|
|
Участник форума
Регистрация: 27.10.2006
Сообщений: 115
Провел на форуме: 820289
Репутация:
119
|
|
Вот дали задачку, надо написать под Delphi в консоль апликатион, что-то не получается написать корректные функции
Задание
заданые n точек на плоскости записать в массив записей tpoint
Разработать подпрограмму поределамия коэф прямой проходишей через две точки
для описания прямой использовать запись с полями k,b:real
разработать подпрограмму формирования записей для всех возможных прямых проходящих между двумя точками
разработать подпрограмму определения прямой с максимальным К и соответствующей ей точек(определить их номера)
то что накропал
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
type tpoint=record
x,y:real; end;
primai=record
k,b:real; end;
tmas=array[1..20] of tpoint ;
mas=array[1..20] of real;
//vvod точек
procedure Vvod( var A:tpoint;n:Integer);
var i:integer;
begin
Writeln('vvedire kolvo tochek');
readln(n);
for i:=1 to n do
begin
Writeln('koordinatu x');
readln(A.x);
Writeln('koordinatu y');
readln(A.y);
end;
end;
//функция определения коэфициента.
Function Oprkoef(const tpoint1,tpoint2:tpoint; n:integer ):real;
begin
result:=(tpoint1.y--tpoint2.y)/(tpoint1.x--tpoint2.x);
end;
Var A:tpoint;
n,i,j:integer;
Begin
procedure Vvod(A,n);
readln;
end.
Среда ругается на вывоз процедуры, подскажите в чем оплошность?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|