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

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

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

    Soherox Member

    Joined:
    17 Feb 2010
    Messages:
    45
    Likes Received:
    16
    Reputations:
    0
    superboy4..покопался в твоем коде, честно, не особо понял что там написано :confused: :( написал с нуля, вот код, прокоментил все, чтобы было понятно, если что-то все равно не понятно, спрашивай

    Code:
    unit Enciphering;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Grids, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Edit2: TEdit;
        Label1: TLabel;
        Label2: TLabel;
        Button1: TButton;
        StringGrid1: TStringGrid;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    const
      n = 1000; // длина строки
      dif  = 224; // разница между символами в ASCII
    var
      Form1: TForm1;
      key, tex: string;
      tqu, kqu: integer;
      rez: string;
      tx: set of 'а'..'я';
      tnum, knum, code: array [1..n] of integer;
    
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
      var
        i: integer;
    begin
      tex:=Edit1.Text; // Для текста
      key:=Edit2.Text; // Для ключа
      rez:=''; // Наш ответ
      tqu:=length(tex); // Длина текста
      kqu:=length(key); // Длина ключа
      for i:=1 to length(tex) do tnum[i]:=-1; // Исключение инородных сиволов
      for i:=1 to length(tex) do knum[i]:=0; // Обнуление
      code:=knum;
      for i:=1 to tqu do
        if tex[i] in tx then tnum[i]:=ord(tex[i]) - dif; // Нахождение порядкового номера в алфавите (отсчет от 0 до 30)
      for i:=1 to kqu do
        knum[i]:=ord(key[i]) - dif;
      for i:=kqu + 1 to tqu  do
        knum[i]:=knum[i - kqu]; // Дополнение ключа в случае если его длина меньше длины строки
      for i:=1 to tqu do
        if tnum[i]<> -1 then code[i]:=(tnum[i] + knum[i]) mod 32  
        else code[i]:=ord(' ')-dif; // Само шифрование
      for i:=1 to tqu do
        rez:= rez + chr(code[i] + dif); // Получение ответа
      stringgrid1.ColCount:=tqu+1; 
      for i:=1 to tqu do
        StringGrid1.Cells[i, 0]:=tex[i]; 
      for i:=1 to tqu do
        StringGrid1.Cells[i, 1]:=rez[i]; // Вывод ответа
    end;
    
    end.
     
    1 person likes this.
  2. DimkO

    DimkO Banned

    Joined:
    16 Nov 2008
    Messages:
    28
    Likes Received:
    3
    Reputations:
    0
    начал осваивать Visual Basic и появился такой вопрос. Почему после изменения размеров кнопки при загрузке формы при каждом выполнении программы форма меняет свои координаты расположения на экране?выстраивая их как будто каскадом.
    код состоит всего из 3-х строк:
    Code:
    Private Sub Form_Load()
    Randomize
    Command1.Height = 2625 * Rnd
    Command1.Width = 3360 * Rnd
    End Sub
     
  3. s0l_ir0n

    s0l_ir0n Active Member

    Joined:
    14 Mar 2009
    Messages:
    399
    Likes Received:
    144
    Reputations:
    18
    Вот тебе и каскад...
     
    1 person likes this.
  4. EndLeSSDre@M

    EndLeSSDre@M Banned

    Joined:
    18 Jul 2009
    Messages:
    142
    Likes Received:
    99
    Reputations:
    -5
    так потому что у тебя форма строится методом рандома!!! Rnd - функция генерации случайных чисел!
     
  5. R1k94

    R1k94 New Member

    Joined:
    18 Dec 2009
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Задачка на тему программирования.

    Помогите пожалуйста решить задачку. Pascal
    [​IMG]
     
  6. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    при данных условиях задача не имеет единственного решения! Маленькие кружки с радиусом R3 могут свободно перемещаться обеспечивая касание как с большой R1 так и с малой R2 окружностями при R1=R2+R3 .... при этом площадь будет меняться!

    при R1<R2+R3 можно решить но нужны координаты центров R3

    при R1>R2+R3 НЕТ РЕШЕНИЙ

    Уточни задачу!
     
    #2446 Delimiter, 18 Mar 2010
    Last edited: 18 Mar 2010
  7. St0nX

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

    Joined:
    19 May 2007
    Messages:
    257
    Likes Received:
    46
    Reputations:
    0
    pi := 3.14;
    S := pi(( (sqr(r1)+sqr(r2))/2) - sqr(r3));
    Это если предположить что окружности находяться на одной линии.
     
    #2447 St0nX, 18 Mar 2010
    Last edited: 18 Mar 2010
  8. R1k94

    R1k94 New Member

    Joined:
    18 Dec 2009
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    задача такая как и есть, это весь ее текст
     
  9. DimkO

    DimkO Banned

    Joined:
    16 Nov 2008
    Messages:
    28
    Likes Received:
    3
    Reputations:
    0
    но я же использую рандом для задания координат кнопки а не формы,почему оно на форму влияет не пойму...=\
     
  10. Irdis

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

    Joined:
    6 Feb 2006
    Messages:
    248
    Likes Received:
    52
    Reputations:
    3
    Delimiter погорячился
    т.к. 2*r3+r2=r1
     
    #2450 Irdis, 18 Mar 2010
    Last edited: 18 Mar 2010
  11. EndLeSSDre@M

    EndLeSSDre@M Banned

    Joined:
    18 Jul 2009
    Messages:
    142
    Likes Received:
    99
    Reputations:
    -5
    так как r2-r1=2*r3 то из этого следует что центры лежат на одной прямой, если бы было не так тогда окружности не могли бы пересекаться...
    значит площадь будет вычисляться по формуле:

    s=pi*(r1^2/2+r2^2/2-r3^2)
     
  12. R1k94

    R1k94 New Member

    Joined:
    18 Dec 2009
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    А как саму прогу записать? Имею ввиду
    program
    var
    ...
     
  13. EndLeSSDre@M

    EndLeSSDre@M Banned

    Joined:
    18 Jul 2009
    Messages:
    142
    Likes Received:
    99
    Reputations:
    -5
    что то типа такого:

    PHP:
    program qasdf;
    const
    pi:=3.14;
    r1:=25;
    r2:=15;
    r3:=5;
    var
    s:integer;
    begin
    s
    :=pi*(sqr(r1)/2+sqr(r2)/2-sqr(r3));
    writeln(s);
    readln;
    end.
    хотя лучше без ввода вручную... иначе придется проверять на соприкосновение окружностей
     
    #2453 EndLeSSDre@M, 18 Mar 2010
    Last edited: 18 Mar 2010
  14. BELbIY

    BELbIY Banned

    Joined:
    14 Aug 2009
    Messages:
    0
    Likes Received:
    47
    Reputations:
    -1
    Code:
    program sq;
    var r1,r2,r3:real;
    
    function square(r1,r2,r3:real):real;
    begin
    square:=pi*((r1*r1)/2+(r2*r2)-(r3*r3)*2);
    end;
    
    begin
    write('radius 1 ');
    readln(r1);
    write('radius 2 ');
    readln(r2);
    write('radius 3 ');
    read(r3);
    
    write('square is ',square(r1,r2,r3):1:2);
    end.
     
    1 person likes this.
  15. Soherox

    Soherox Member

    Joined:
    17 Feb 2010
    Messages:
    45
    Likes Received:
    16
    Reputations:
    0
    EndLeSSDre@M...в Паскале и так есть встроенная константа pi, так что это писать не обязательно =)
     
    1 person likes this.
  16. Irdis

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

    Joined:
    6 Feb 2006
    Messages:
    248
    Likes Received:
    52
    Reputations:
    3
    нет никак это не следует...
     
  17. [underwater]

    [underwater] Member

    Joined:
    29 Mar 2009
    Messages:
    78
    Likes Received:
    92
    Reputations:
    27
    На ASMе. Помогите пожалуйста.
     
  18. banan5555

    banan5555 New Member

    Joined:
    25 Jan 2010
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Задача 1
    Дан массив целых чисел состоящий из 100000 чисел. Написать многопоточное приложение которое на 10 процессах вычислит: Сумму отрицательных элементов массива.

    Задача 2
    Написать многопоточное приложение которое на 10 процессах реализует задачу:
    Дана матрица размера M × N. Найти количество ее столбцов, элементы которых упорядочены по убыванию.
    М=100000
    N=50000

    Язык С++ с MPI.
     
  19. Life7

    Life7 Banned

    Joined:
    14 Jun 2009
    Messages:
    150
    Likes Received:
    54
    Reputations:
    0
    Помогите, пожалуйста. То ли я торможу, то ли лыжи не едут.
    Задание: Инициализировать массив, который содержит целые числа. Переписать парные и непарные числа в разные массивы. Оформить это действие в виде процедуры с формальными параметрами. - В делфи

    Вот то что я наваяла, подскажите, пожалуйста, ошибку:

    program Project1;

    {$APPTYPE CONSOLE}

    uses
    SysUtils;
    type Mas=array [1..10] of integer;
    Mas1=array [1..10] of integer;
    Mas2=array [1..10] of integer;
    procedure Proc(i:integer; M:Mas; M1:Mas; M2:Mas2);
    begin
    for i:=1 to 10 do
    if M mod 2 =0 then M:=M1
    else M:=M2;
    end;

    var M:Mas; M1:Mas; M2:Mas2; i:integer;

    begin
    M[1]:=2;
    M[2]:=6;
    M[3]:=9;
    M[4]:=11;
    M[5]:=17;
    M[6]:=10;
    M[7]:=19;
    M[8]:=23;
    M[9]:=13;
    M[10]:=1;
    proc ( i, M, M1, M2);

    for i:=1 to 10 do
    Write (M1);

    for i:=1 to 10 do
    Writeln(M2);



    readln;
    end.
     
  20. EndLeSSDre@M

    EndLeSSDre@M Banned

    Joined:
    18 Jul 2009
    Messages:
    142
    Likes Received:
    99
    Reputations:
    -5
    че то я не догнал... в условии парные.... а в программе ищешь четные и не четные.... по подробнее плиз

    ну и если разбираться в самом коде то:

    PHP:
    if M[imod 2 =0 then M[i]:=M1[i]
    else 
    M[i]:=M2[i];
    скорее всего нужно изменить так:

    PHP:
    if M[imod 2 =0 then M1[i]:=M[i]
    else 
    M2[i]:=M[i];
    и еще по поводу этого... если при i=1 будет четное число, то например записываем его в M1 дальше при i=2 нечетное число то его записываем в M2 и получается что он будет под 2 номером! а под первым будет 0.....это как бэ тоже не гуд!

    лучше измени на это:
    PHP:
    k=1;
    l=1;
    for 
    i:=1 to 10 do
    if 
    M[imod 2 =0 then M1[k]:=M[i] and k=k+1
    else M2[l]:=M[i] and l=l+1;
    end;


    PHP:
    for i:=1 to 10 do
    Write (M1[i]);

    for 
    i:=1 to 10 do
    Writeln(M2[i]);
    тогда уж везде пиши Writeln для перехода на новую строку... или Write чтоб подряд писались

    и после проделанного получаем код:

    PHP:
    program Project1;

    {
    $APPTYPE CONSOLE}

    uses
    SysUtils
    ;
    type Mas=array [1..10of integer;
    Mas1=array [1..10of integer;
    Mas2=array [1..10of integer;
    procedure Proc(i:integerM:MasM1:MasM2:Mas2);
    begin
    k
    =1;
    l=1;
    for 
    i:=1 to 10 do
    if 
    M[imod 2 =0 then M1[k]:=M[i] and k=k+1
    else M2[l]:=M[i] and l=l+1;
    end;

    var 
    M:MasM1:MasM2:Mas2i:integer;

    begin
    M
    [1]:=2;
    M[2]:=6;
    M[3]:=9;
    M[4]:=11;
    M[5]:=17;
    M[6]:=10;
    M[7]:=19;
    M[8]:=23;
    M[9]:=13;
    M[10]:=1;
    proc iMM1M2,k,l);

    for 
    i:=1 to k do
    Writeln (M1[i]);

    for 
    i:=1 to l do
    Writeln(M2[i]);

    readln;
    end.
    не помню как на дельфи делать в условии добавления делать... типа if тото то k=1 и l=1 елсе... поправьте меня если что
    Надеюсь правильно))) привет Soherox :rolleyes:
     
    #2460 EndLeSSDre@M, 19 Mar 2010
    Last edited: 19 Mar 2010
Thread Status:
Not open for further replies.