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

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

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

    Anutka New Member

    Joined:
    26 Oct 2008
    Messages:
    9
    Likes Received:
    2
    Reputations:
    0
    Люди.Помогите!Пожалуйста.мне срочно нужно решение двух задач на C++:
    1) задан массив целых чисел. определим подвектор, как один или несколько последовательных элементов массива. Каждому подвектору поставить в соответствие сумму его элементов. Требуется написать функцию, вычисляющую максимум из сумм подвекторов в массиве.
    2) Предложить алгоритм получения всех перестановок целого числа N.
     
  2. prox1kk

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

    Joined:
    23 Jan 2007
    Messages:
    21
    Likes Received:
    11
    Reputations:
    4
    Basic.
    Задача следующая:
    В зависимости от выбора пользователя найти сумму четных или кратных трем элементов массива. Массив ввести с клавиатуры.
    я насоображал следующее:
    Code:
    print "1. summa chetnix elementov massiva"
    print "2. summa kratnix trem elementov massiva"
    print "vash vibor"
    A$=input$(1)
    If (A$="1") then
    print "summa chetnix elementov massiva"
    do
    input "vvedite razmer massiva N"; N
    If (N<=0) or (int(N)<>N) then print "net resheniy"
    loop while (N<=0) or (int(N)<>N)
    Dim (A)
    for i=1 to N
    print "Vvedite";i;"-i element massiva";
    input A(i)
    next i
    summa=0
    for i=1 to N
    if A(i) mod 2=0 then
    summa=summa+A(i)
    end if
    next i
    for i=1 to N
    print A(i);
    next i
    print "summa chetnix elementov massiva"; summa
    Else If (A$="2") then
    print "summa kratnix trem elementov massiva"
    do
    input "vvedite razmer massiva N"; N
    If (N<=0) or (int(N)<>N) then print "net resheniy"
    loop while (N<=0) or (int(N)<>N)
    Dim (A)
    for i=1 to N
    print "Vvedite";i;"-i element massiva";
    input A(i)
    next i
    summa=0
    for i=1 to N
    if A(i) mod 3=0 then
    summa=summa+A(i)
    end if
    next i
    for i=1 to N
    print A(i);
    next i
    print "summa kratnix trem elementov massiva"; summa
    выдает ошибку IF
    может кто выручит, а то не пойму что еще не так ...
     
  3. 043nKRuT0y

    043nKRuT0y Elder - Старейшина

    Joined:
    31 Oct 2007
    Messages:
    226
    Likes Received:
    8
    Reputations:
    0
    Кто знает как решить :
    Круг радиусом R движется из центра екрана по СПИРАЛИ к границам екрана !
    Реализовать нужно на С# с элементами графики !
    Кто может - помогите ! С меня + !
     
  4. groupby

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

    Joined:
    21 Sep 2008
    Messages:
    30
    Likes Received:
    13
    Reputations:
    0
    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    namespace CircleMoving
    {
        public partial class Form1 : Form
        {
            const int m_Radius = 100;
            const int m_Addition = 4;
            const int m_SmallCircleRadius = m_Radius / 2;
    
            int m_StartPositionX;
            int m_StartPositionY;
            int m_SpiralX;
            int m_SpiralY;        
    
            bool m_Sign = true;
    
            List<Point> m_LastPoints;
    
            public Form1()
            {            
                InitializeComponent();
    
                m_StartPositionX = this.Width / 2 - m_Radius / 2;
                m_StartPositionY = this.Height / 2 - m_Radius / 2;
                m_SpiralX = 0;
                m_SpiralY = 0;
                m_LastPoints = new List<Point>();
            }
    
            private void timer1_Tick(object sender, EventArgs e)
            {
                m_StartPositionX++;
                m_StartPositionY++;
    
                if (m_Sign)
                    m_SpiralX += m_Addition;
                else
                    m_SpiralX -= m_Addition;            
    
                m_SpiralY = (int)Math.Sqrt(
                    Math.Pow(m_SmallCircleRadius, 2) - Math.Pow(m_SpiralX, 2)
                    );
    
                this.Invalidate();
    
                if (m_SpiralX + m_Addition >= m_SmallCircleRadius)            
                    m_Sign = false;            
    
                if (m_SpiralX - m_Addition <= 0)
                    m_Sign = true;            
            }        
    
            private void Form1_Paint(object sender, PaintEventArgs e)
            {
                Graphics g = e.Graphics;
                Point m_LastPoint = Point.Empty;            
                foreach (Point m_Point in m_LastPoints)
                {
                    if(m_LastPoint == Point.Empty)                
                        g.DrawEllipse(new Pen(Color.DarkSlateBlue), m_Point.X, m_Point.Y, 1, 1);
                    else
                        g.DrawLine(new Pen(Color.DarkSlateBlue), m_LastPoint, m_Point);
                    m_LastPoint = m_Point;
                }
                g.DrawEllipse(
                    new Pen(Color.DarkRed),
                    new Rectangle(
                    m_StartPositionX + m_SpiralX - m_SmallCircleRadius,
                    m_StartPositionY + m_SpiralY - m_SmallCircleRadius,
                    m_Radius,
                    m_Radius
                    )
                );
                m_LastPoints.Add(new Point(
                    m_StartPositionX + m_SpiralX - m_SmallCircleRadius + m_Radius / 2,
                    m_StartPositionY + m_SpiralY - m_SmallCircleRadius + m_Radius / 2
                    ));
                if ((m_LastPoints[m_LastPoints.Count - 1].X + m_Radius / 2 == this.Width)
                    ||
                    (m_LastPoints[m_LastPoints.Count - 1].Y + m_Radius / 2 == this.Height))
                {
                    timer1.Stop();
                    timer1.Enabled = false;
                    timer1.Dispose();
                    MessageBox.Show("Перемещение круга завершено");
                }
            }
        }
    }
    
     
  5. lisa99

    lisa99 Banned

    Joined:
    15 Jul 2008
    Messages:
    359
    Likes Received:
    200
    Reputations:
    70
    не пойму версию бейсика...
    похоже на qbasic, но несоответсвие в командах объявления массива.

    Для VB - другие ошибки.

    (там лучше использовать ReDim)
    Назови версию, я напишу тебе твою прожку
     
    #705 lisa99, 30 Oct 2008
    Last edited: 30 Oct 2008
    1 person likes this.
  6. 043nKRuT0y

    043nKRuT0y Elder - Старейшина

    Joined:
    31 Oct 2007
    Messages:
    226
    Likes Received:
    8
    Reputations:
    0
    2 groupby :
    Слушай чето мне етот синтаксис не знаком ( На С++ можно туже задачу , ато добрую половину кода не пойму !

    Да и для справки в чем ето было написано ???
     
  7. omen-6-6-6

    omen-6-6-6 New Member

    Joined:
    21 Jun 2008
    Messages:
    2
    Likes Received:
    2
    Reputations:
    0
    помогите с лабой..


    1. Рисование на канве формы с использованием пиксельной графики и графических примитивов

    1. Создать фон формы с плавным переходом от одного цвета к другому.
    2. Используя пиксельную графику и графические примитивы, вывести на форму произвольный рисунок.
    3. Выполнить простую анимацию следующими методами:
    a) С использованием randomize, random ( ) и компонента TTimer (стр. VCL System);
    Пример 1

    procedure TForm1.Timer1Timer(Sender: TObject);
    var x,y:integer;
    begin
    randomize;
    x:=Form1.ClientWidth div 2;
    y:=Form1.ClientHeight div 2;
    Canvas.MoveTo(x,y);
    Canvas.Pen.Color:=RGB(random(255),random(255),random(255));
    Canvas.LineTo(random(ClientWidth),random(ClientHeight));
    end;

    procedure TForm1.FormMouseMove(……);
    begin
    Application.Terminate;
    end;

    Пример 2 (анимация объекта TShape)

    Такая анимация достаточно проста, так как весь код рисования и перерисования скрыт в объекте. Например, чтобы заставить объект TShape перемещаться по горизонтали, нужно просто изменять свойство Shape1.Left.

    b) Используя свойство пера Pen.Mode.
    Режим Pen.Mode=pmNotXor или Pen.Mode=pmXor предназначен для рисования движущихся фигур. Если два раза нарисовать одну и ту же фигуру таким пером, то после первого раза она появится, после второго – сотрется.

    Пример

    Rectangle(x0,y0,x,y);
    pause:=time;
    while (time-pause)<1E-12 do;
    Rectangle(x0,y0,x,y);

    c) Анимацию можно организовать, если “стереть” фигуру прямоугольником с цветом фона:

    procedure TForm2.Button1Click(Sender: TObject);
    var rr:real;
    angle,i,j,x,y:integer;
    begin
    for i:=1 to 5 do begin
    angle:=random(368);
    rr:=Angle*Рi/180;
    for j:=1 to 100 do begin
    x:=trunc(j*sin(rr))+100;
    y:=trunc(j*cos(rr))+100;
    with Form2.Canvas do begin
    Вrush.Color:=clВlue;
    Еllipse(x-16,y-16,x+16,y+16);
    Вrush.Color:= clBtnFace;
    Rectangle(0,0,Form2.ClientWidth,Form2.ClientHeight);end;
    end; end; end;

    К сожалению, такой метод дает сильное мерцание на экране.

    d) Использование двойной буферизации для анимации.
    Двойной буфер – это набор плоскостей, одна из которых используется для отображения на экране (это может быть канва формы или компонента TPaintBox), а другая – для рисования (это может быть компонент TBitMap или другой компонент TPaintBox). Использование двойного буфера позволяет получить плавное движениепри анимации и отсутствие мерцания, но уменьшает скорость движения фигуры.

    Пример
    procedure TForm3.Button1Click(Sender: TObject);
    var rr:real;
    angle,i,j,x,y:integer;
    TheBitmap:TBitmap;
    begin
    TheBitmap:=TBitmap.Create;
    TheBitmap.Height:=Form3.ClientHeight;
    TheBitmap.Width:=Form3.ClientWidth;
    for i:=1 to 10 do begin
    angle:=random(368);
    rr:=Angle*pi/180;
    for j:=1 to 100 do begin
    x:=trunc(j*sin(rr))+100;
    y:=trunc(j*cos(rr))+100;
    with TheBitmap.Canvas do begin
    Brush.Color:= clBtnFace;
    Rectangle(0,0,Width,Height);
    Brush.Color:=clblue;
    Ellipse(x-16,y-16,x+16,y+16);
    Form1.Canvas.CopyRect(Rect(0,0,Width,Height),
    TheBitmap.Canvas,
    Rect(0,0,Width,Height));
    end; end; end; end;

    Выполните данную процедуру, а затем на ее основе напишите свой код анимации с двойным буфером.

    4. Выведите в качестве фона формы какую-либо битовую матрицу так, чтобы она занимала всю площадь формы.

    поставлю плюсы++
     
    1 person likes this.
  8. lisa99

    lisa99 Banned

    Joined:
    15 Jul 2008
    Messages:
    359
    Likes Received:
    200
    Reputations:
    70
    1. помогите? или "сделайте за меня"?
    2. и много ты их поставишь с такой репой?

    сделай сам хоть что-нибудь, тогда будет смысл "помогать"
     
    1 person likes this.
  9. groupby

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

    Joined:
    21 Sep 2008
    Messages:
    30
    Likes Received:
    13
    Reputations:
    0
    Ты че бля, дебил? :confused: :mad:

    Твои слова? :
     
  10. ToniKapuchon

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

    Joined:
    26 Feb 2006
    Messages:
    153
    Likes Received:
    45
    Reputations:
    -1
    Кароч, есть ли какая нить winapi функция, возвращающая значение хранящаяся по определённому адресу?
    Нужно вобщем изучить файловую систему FAT
    Задание:
    Написать программу, которая показывает дампы.
    Исследовать изменение элементов BOOT, FAT, ROOT и DIR при работе с файлами(команд: COPY, MOVE, DEL, RENAME).
    Изучить алгоритм расположения файлов на диске и провести расчет цепочки кластеров для файла длиной не менее1кб.

    Кароч подобие WinHex!!)) Подскажите алгоритм... а то я не могу въехать с чего начать!!
    С++
     
  11. bons

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

    Joined:
    20 Dec 2007
    Messages:
    286
    Likes Received:
    121
    Reputations:
    21
    это наверно очень жестокая программа...

    узнать содержимое ячейки памяти по ее адресу можно разыменовав указатель, содержащий этот адрес...

    Трудно понять что конкретно тебе надо.
    по поводу изучения FAT - если нужно то вот код программы, которая выводит список содержимого указанной директории в FAT32 через прямое обращение к диску а также проходит по цепочке кластеров файла чтобы подсчитать количество фрагментов.

    http://slil.ru/26306307
     
    #711 bons, 6 Nov 2008
    Last edited: 6 Nov 2008
    1 person likes this.
  12. SI17

    SI17 New Member

    Joined:
    19 Jun 2008
    Messages:
    1
    Likes Received:
    1
    Reputations:
    0
    Народ... помогите плз нуно составить другу прогу на ассемблере.....собсно вот задание:
    и плюсег еще в круглешочке... сам я на ВБА и дельфи пишу... ничего тут непонимаю... разбираться долго.... а сдавать завтра....=(
    если поможите репы на кидаю и чем смогу помогу=) может пиго поставлю если близко живети ;-)
     
    1 person likes this.
  13. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    mov eax,24
    add eax,1dh
    and eax,8
    это типа (24)+(1d)v8 если v - это and
     
  14. vikseriq

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

    Joined:
    31 Jul 2008
    Messages:
    118
    Likes Received:
    44
    Reputations:
    2
    Оо, кто сдает 7 ноября-то ?
    Что за -> и . ?
     
  15. F&D

    F&D Member

    Joined:
    6 Nov 2008
    Messages:
    341
    Likes Received:
    8
    Reputations:
    5
    Алгоритм шифрования RSA

    Доброго времени суток друзья. У меня вот такая проблемка с задачей. Необходимо реализовать алгоритм шифрования RSA, т.е. шифрование и расшифровывание.

    Code:
    var
      Form1: TForm1;
      Fn,n,e,p,q,d:integer;
    implementation
    
    {$R *.dfm}
    [B]//наибольший общим делитель[/B]
    function nod(a,b:integer):integer;
    var i:integer;
    begin
      while a<>b do if a>b then a:=a-b else b:=b-a;
      result:=a;
    end;
    [B]//генерация ключей[/B]
    procedure TForm1.Button1Click(Sender: TObject);
    var i,k:integer;
    begin
      p:=strtoint(edit1.Text);
      q:=strtoint(edit2.Text);
        n:=p*q;
        Fn:=(p-1)*(q-1);
      for i:=2 to Fn do
        if nod(i,Fn)=1 then
          begin
            e:=i;
            break;
          end;
    k:=1;
    while (k*Fn+1)mod e<>0   do
      inc(k);
      d:=(k*Fn+1)div e;
    
    edit4.Text:='= '+inttostr(d);
    edit3.Text:='= '+inttostr(e);
    end;
    [B]//шифрование[/B]
    procedure TForm1.Button2Click(Sender: TObject);
    var s1,s:string;
        k,c,m,nn,i,j:integer;
    begin
      memo1.Clear;
      s:=Edit5.Text;
      c:=1 ;
      s1:='';
      nn:=length(s);
        for i:=1 to nn do
          begin
            m:=(ord(s[i])-ord('A')) mod 26;           
            c:=1 ;
              for j:=1 to e do                        
                c:=(c*m) mod n ;
                memo1.lines.add(inttostr(c)) ;   
                c:=c mod 26;
                s1:=s1 + chr(c+ord('A')) ;       
          end;
      Edit6.Text:=s1;
    end;
    [B]//дешифровка[/B]
    procedure TForm1.Button3Click(Sender: TObject);
    var s1,s:string;
    k,c,m,nn,i,j:integer;
    begin
      s:= Edit6.Text;
    //c:=1 ;
    s1:='';
    nn:=length(s);
    for i:=1 to nn do
    begin
         m:=(ord(s[i])-ord('A')) mod 26;
         c:=1 ;
          for j:=1 to d do
           c:=(c*m) mod n ;
           memo1.lines.add(inttostr(c)) ;
           c:=c mod 26;
         s1:=s1 + chr(c+ord('A')) ;
    end;
    Edit7.Text:=s1;
    end;
    end.
    вот шифрование написано вроде правильно, но не работает ,и дешифровка - тоже. И в мемо выводит не правильно. Можете подсказать, где что изменить, в чем я ошибся?!
     
    #715 F&D, 8 Nov 2008
    Last edited: 10 Nov 2008
  16. kholann

    kholann New Member

    Joined:
    8 Nov 2008
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Пожалуйста, подскажите, как можно отобразить пересечение сферы с кубом в OpenGL с помощью буфера трафарета?
     
  17. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Заюзать Crypto API
     
  18. Namelles One

    Namelles One Elder - Старейшина

    Joined:
    8 Jul 2005
    Messages:
    43
    Likes Received:
    14
    Reputations:
    19
    Может в выборе деятельности? Перепиши хотя бы с комментариями - функция зашифрования, функция расшифрования.

    Где ты ключевую пару генерируешь?

    /me кажется - это вааще не RSA =\
     
  19. F&D

    F&D Member

    Joined:
    6 Nov 2008
    Messages:
    341
    Likes Received:
    8
    Reputations:
    5
    Благодарю за совет, обязательно попробую.

    Вы вместо того чтобы критиковать, помогли бы. Комменты отредактировал.
    Когда кажется креститься надо. Извените конечно за грубость.
    Это RSA, можно хотя по генерации ключей это понять.
     
  20. velvetdust

    velvetdust New Member

    Joined:
    8 Nov 2008
    Messages:
    7
    Likes Received:
    0
    Reputations:
    -5
    Надо перевести кусок кода из C++ в C! спс заранее!

    long step(int i)
    {
    int g = 1;
    for(int j = 1; j<i; j++)g*=10;
    return g;
    }

    int main(int argc, char* argv[])
    {
    int k;
    cin >> k;

    int l = k, g=1;

    while(l / 10 > 0)
    {
    l/=10;
    ++g;
    }

    int s1, s2;

    s1 = k/step(g) + (k/step(g-1) % 10);
    s2 = k %10 + (k/step(2))%10;
     
Thread Status:
Not open for further replies.