ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #161  
Старый 27.12.2007, 21:50
Аватар для zarkon
zarkon
Постоянный
Регистрация: 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..
 
Ответить с цитированием

  #162  
Старый 28.12.2007, 01:18
Аватар для Heavy Metal
Heavy Metal
Новичок
Регистрация: 16.09.2007
Сообщений: 25
Провел на форуме:
120760

Репутация: 62
Отправить сообщение для Heavy Metal с помощью ICQ
По умолчанию

Хелп. На асме (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..
 
Ответить с цитированием

  #163  
Старый 28.12.2007, 17:33
Аватар для Loker
Loker
Познающий
Регистрация: 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 паскале поетому немного кривовато получилось. Но у меня приняли
 
Ответить с цитированием

  #164  
Старый 02.01.2008, 04:06
Аватар для Georg Jung
Georg Jung
Новичок
Регистрация: 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();
}
}

Был бы признателен за оказанную помощь.
 
Ответить с цитированием

  #165  
Старый 02.01.2008, 19:58
Аватар для Shawn1x
Shawn1x
Banned
Регистрация: 24.08.2007
Сообщений: 201
Провел на форуме:
983157

Репутация: 424
Отправить сообщение для Shawn1x с помощью ICQ
По умолчанию

Задание
используя алгоритмы и контейнеры Stl:
создай список из 20 случаных элементов, со значениями от 1 до 19.
отсортируй список так что бы сначала шли четные элементы
Заранее спасибо
 
Ответить с цитированием

  #166  
Старый 03.01.2008, 16:43
Аватар для Forcer
Forcer
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
Провел на форуме:
3578578

Репутация: 275
Отправить сообщение для Forcer с помощью ICQ
По умолчанию

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;
}
 
Ответить с цитированием

  #167  
Старый 08.01.2008, 23:06
Аватар для Life-inventor
Life-inventor
Новичок
Регистрация: 02.11.2007
Сообщений: 6
Провел на форуме:
42953

Репутация: 10
По умолчанию

Народ, помогите пожалуйста.

Задача Ферма. Найти квадрат, который в сумме со всеми его собственными делителями дает куб.

С рекурсивным алгоритмом . На С++.

Заранее огромное спасибо.

Последний раз редактировалось Life-inventor; 08.01.2008 в 23:16..
 
Ответить с цитированием

  #168  
Старый 10.01.2008, 00:48
Аватар для kotopusya
kotopusya
Новичок
Регистрация: 09.01.2008
Сообщений: 1
Провел на форуме:
6384

Репутация: 0
По умолчанию

очень надо решить задачу до пятницы...на с++...никто почему-то не может...неужели она такая нерешаемая?посмотрите пожалуйста...может кто хоть часть кода сможет написать?
Разместить на шахматной доске максимальное количество слонов и ладей так, чтобы они не находились друг у друга "под боем".
 
Ответить с цитированием

  #169  
Старый 10.01.2008, 00:56
Аватар для ZaCo
ZaCo
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме:
4610226

Репутация: 1332


По умолчанию

http://forum.antichat.ru/showpost.php?p=517321&postcount=16
 
Ответить с цитированием

  #170  
Старый 10.01.2008, 11:06
Аватар для mari00
mari00
Участник форума
Регистрация: 27.10.2006
Сообщений: 115
Провел на форуме:
820289

Репутация: 119
Отправить сообщение для mari00 с помощью ICQ
По умолчанию

Вот дали задачку, надо написать под 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.
Среда ругается на вывоз процедуры, подскажите в чем оплошность?
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сюда выкладываем все проги для фрикринга мобильников, которых знаем! nigger Сотовый фрикинг 5 11.04.2009 11:15
Американским студентам запретили пользоваться Skype KPOT_f!nd Мировые новости 1 28.09.2006 03:47
Любителям квестов сюда!! FoX's Болталка 10 25.01.2005 20:42



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ