Студентам с лабораторными сюда (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 20 Jun 2007.

Thread Status:
Not open for further replies.
  1. zarkon

    zarkon Elder - Старейшина

    Joined:
    22 Nov 2006
    Messages:
    403
    Likes Received:
    98
    Reputations:
    76
    Доброе время суток.
    Требуется для курсового написать Генератор случайных чисел с экспоненциальным законом распределения. Формула: 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 ();}

    Заранее благодарен.
     
    #161 zarkon, 27 Dec 2007
    Last edited: 27 Dec 2007
  2. Heavy Metal

    Heavy Metal Member

    Joined:
    16 Sep 2007
    Messages:
    19
    Likes Received:
    27
    Reputations:
    7
    Хелп. На асме (Tasm) надо накодить прогу, вычисляющую все простые числа в диапазоне от 2 до вводимого с клавы числа.

    upd:
    Кое как разобрался, написал ) выкладываю на всякий случай

    Code:
     .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
     
    #162 Heavy Metal, 28 Dec 2007
    Last edited: 29 Dec 2007
    1 person likes this.
  3. Loker

    Loker Elder - Старейшина

    Joined:
    25 Oct 2007
    Messages:
    46
    Likes Received:
    23
    Reputations:
    5
    Может кому поможет.
    Курсовая работа: Нахождение интеграла 5 методами с высокой точностью..

    Code:
    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 паскале поетому немного кривовато получилось. Но у меня приняли
     
    1 person likes this.
  4. Georg Jung

    Georg Jung New Member

    Joined:
    2 Jan 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    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();
    }
    }

    Был бы признателен за оказанную помощь.
     
  5. Shawn1x

    Shawn1x Elder - Старейшина

    Joined:
    24 Aug 2007
    Messages:
    307
    Likes Received:
    538
    Reputations:
    13
    Задание
    используя алгоритмы и контейнеры Stl:
    создай список из 20 случаных элементов, со значениями от 1 до 19.
    отсортируй список так что бы сначала шли четные элементы
    Заранее спасибо
     
  6. Forcer

    Forcer Elder - Старейшина

    Joined:
    12 Apr 2007
    Messages:
    321
    Likes Received:
    98
    Reputations:
    12
    Shawn1x

    Code:
    #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;
    }
     
    2 people like this.
  7. Life-inventor

    Life-inventor New Member

    Joined:
    2 Nov 2007
    Messages:
    4
    Likes Received:
    2
    Reputations:
    0
    Народ, помогите пожалуйста.

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

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

    Заранее огромное спасибо.
     
    #167 Life-inventor, 8 Jan 2008
    Last edited: 8 Jan 2008
  8. kotopusya

    kotopusya New Member

    Joined:
    8 Jan 2008
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    очень надо решить задачу до пятницы...на с++...никто почему-то не может...неужели она такая нерешаемая?посмотрите пожалуйста...может кто хоть часть кода сможет написать?
    Разместить на шахматной доске максимальное количество слонов и ладей так, чтобы они не находились друг у друга "под боем".
     
  9. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    http://forum.antichat.ru/showpost.php?p=517321&postcount=16
     
    1 person likes this.
  10. mari00

    mari00 Elder - Старейшина

    Joined:
    27 Oct 2006
    Messages:
    93
    Likes Received:
    40
    Reputations:
    16
    Вот дали задачку, надо написать под Delphi в консоль апликатион, что-то не получается написать корректные функции
    Задание
    то что накропал
    Среда ругается на вывоз процедуры, подскажите в чем оплошность?
     
  11. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    А к чему создавать тип TPoint, когда он в делфи уже есть? Только, вроде бы, там x и y типа integer, если память не изменяет. Лучше объявите тип TMyPoint.
    В процедуру Vvod передавайте не var A: TPoint, а лучше var A: array of TMyPoint.
    Что означает код
    ?
    Что за операция -- ? И вообще для чего у вас функция Oprkoef, если она нигде не вызывается?
    хе, ключевое слово procedure при вызове подпрограммы из тела главной программы не нужно совершенно.
    ЗЫ. На будущее оформляйте плиз код в тэги [коде][/коде], а не в [квоте][/квоте], читать код сложно
     
  12. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Часть кода может быть таким:
    Code:
    program Project2;
    {$APPTYPE CONSOLE}
    type
      TMyPoint = record
        x, y : real;
      end;
      TLine = record
        k, b : real;
      end;
      TMas = array [1..20] of TMyPoint;
    ////vvod точек
    procedure Vvod (var A : TMas; n : Integer);
    var
      i : integer;
    begin
      for i := 1 to n do begin
        Write ('koordinatu x: ');
        readln (A[i].x);
        Write ('koordinatu y: ');
        readln (A[i].y);
      end;
    end;
    ........
    var
      A : TMas;
      n, i, j : integer;
    begin
      Write ('vvedire kolvo tochek: ');
      readln(n);
      Vvod (A,n);
      readln;
    end.
    
     
    1 person likes this.
  13. DSSNB

    DSSNB New Member

    Joined:
    13 Jan 2008
    Messages:
    2
    Likes Received:
    1
    Reputations:
    0
    Вообщем нада на завтра ответить на 1 из вопросов, облазил гугл, яндэкс, всё безтолку. Помогите пжлст=)

    Вот собственно и сами вопросы:

    1. Ассемблер МП18086 фирмы Intel. Арифметические команды. Команды инкрементирования и декрементирования операндов.

    2. Минимизация логических функций с использованием координатных диаграмм Вейча. Свойства и шаги минимизации. Создание выражения и схемы для базиса <Да-Нет>.



    Заранее огромное-огромное спасибо!
     
  14. Life-inventor

    Life-inventor New Member

    Joined:
    2 Nov 2007
    Messages:
    4
    Likes Received:
    2
    Reputations:
    0
    Люди, помогите плиз, ооочень надо....
     
    1 person likes this.
  15. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    Code:
    #include <stdio.h>
    int i;
    
    int get(void){
    int kv,kub,summ;
    kv=i*i;
    kub=i*i*i;
    summ=kv;
    for(int h=1;h<=(i*i);h++){
    if(kv%h==0) summ+=h;
    }
    if(summ==kub) return 0;
    else get();
    return 0;
    }
    
    int main(void){
    i=1;
    get();
    printf("%d",&i);
    return 0;
    }
    На тебе! Написано за 5мин.
     
  16. SHLAK

    SHLAK New Member

    Joined:
    10 Dec 2007
    Messages:
    12
    Likes Received:
    4
    Reputations:
    0
    Вот буду благодарен, уже с этой последний лабой замучался, а завтра уже сдавать

    C++

    1. Вычислите сумму элементов с нечетными номерами.
    2. Преобразуйте массив так, чтобы элементы массива поменялись местами (первый — с последним, второй — с предпоследним и т.д.).
    3. Вычислите сумму элементов, находящихся между первым и последним отрицательными элементами.
    4. Из данного массива и другого массива того же типа, но другой размерности сформируйте общий массив и вычислите сумму положительных элементов, стоящих на нечетных местах.
     
  17. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    Code:
    int summ=0,massv[size];//чё там у тя
    for(int x=0;x<=size;x++){
    if(x%2==1) summ+=massv[x];
    }
    
    Code:
    int massv[size],nsize;
    bool f=size%2;
    if(!f) nsize=(size-1)/2;
    else nsize=size/2;
    for(int x=0;x<=nsize;x++){
    massv[x]=massv[size-x];
    } 
    
     
    #177 Ky3bMu4, 15 Jan 2008
    Last edited: 15 Jan 2008
  18. Forcer

    Forcer Elder - Старейшина

    Joined:
    12 Apr 2007
    Messages:
    321
    Likes Received:
    98
    Reputations:
    12
    Ky3bMu4
    в циклах везде используешь <= - наверное нужно просто <.
    К тому же massv[x]=massv[size-x]; не меняет местами элементы.
     
    #178 Forcer, 15 Jan 2008
    Last edited: 15 Jan 2008
  19. reversys

    reversys Elder - Старейшина

    Joined:
    21 Nov 2007
    Messages:
    139
    Likes Received:
    57
    Reputations:
    7
    2 Ky3bMu4
    Forcer прав, поправь там.

    2 SHLAK

    Code:
            int first=-1,last=-1,mass[30],sum=0;
    	for(int i=0;i<30;i++)
    	{
    		if(mass[i]<0)
    		{
    			if(first==-1)
    			{
    				first=i;
    			}
    			last=i;
    		}
    	}
    	for(i=first+1;i<last;i++)
    	{
    		sum+=mass[i];
    	}
     
  20. Forcer

    Forcer Elder - Старейшина

    Joined:
    12 Apr 2007
    Messages:
    321
    Likes Received:
    98
    Reputations:
    12
    Code:
    	const int size1 = 10, size2 = 5;
    	int mas1[size1] = {1,2,3,-4,5,6,7,8,9,-10},
    		mas2[size2] = {11,12,13,-14,15},
    		newsize = size1 + size2,	
    		sum = 0;
    
    	int* mas3 = new int[ newsize ];
    
    	for( int i = 0; i < size1; ++i ) {
    		mas3[i] = mas1[i];
    		if( i % 2 && mas3[i] > 0 )
    			sum += mas3[i];
    	}
    
    	for( int i = 0; i < size2; ++i ) {
    		mas3[size1+i] = mas2[i];
    		if( (size1+i) % 2 && mas3[size1+i] > 0 )
    			sum += mas3[size1+i];
    	}
    
    	for(int i=0; i < newsize; ++i)
    		cout << mas3[i] << ' ';
    
    	cout << "\nSum = " << sum << endl;
    
    	delete [] mas3;
    
     
    #180 Forcer, 15 Jan 2008
    Last edited: 15 Jan 2008
Thread Status:
Not open for further replies.