[ Delphi / Pascal ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by banned, 6 May 2007.

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

    Vish Banned

    Joined:
    12 Jun 2009
    Messages:
    8
    Likes Received:
    1
    Reputations:
    0
    Можно и так, без массива, в принципе так меньше кода) Одно и тоже, ток без массива

    А вот первый код явно не верный, запусти его и тот что ты последний написал, тот что как у меня, но без массива и вот результаты будут 100% разные..

    //хотя наверно я ошибаюсь, потому что в уме начал считать и получается верно) Я сразу и не понял, твоего алгоритма :)
     
    #4981 Vish, 17 Dec 2009
    Last edited: 17 Dec 2009
  2. Thenno

    Thenno Member

    Joined:
    3 Jul 2009
    Messages:
    77
    Likes Received:
    21
    Reputations:
    0
    Странно, у меня выдает одно и тоже :)

    Первый код был точно неверен, я там немного сбился с мысл в одном месте - он одно не трехзначное захватывал.
     
  3. Vish

    Vish Banned

    Joined:
    12 Jun 2009
    Messages:
    8
    Likes Received:
    1
    Reputations:
    0
    поэтому у меня и получились разные результаты :)

    Зато теперь у парня есть несколько вариантов реализации данной ему задачи :rolleyes:

    Интересно, что ему препод сказал, когда он принёс задачу написанную на делфи :D
     
    1 person likes this.
  4. TPAXTOP

    TPAXTOP New Member

    Joined:
    10 Dec 2009
    Messages:
    35
    Likes Received:
    0
    Reputations:
    0
    ну помогите же кто нибудь...
    Складіть програму для обчислення суми всіх трьохзначних чисел, кратних 25.
    rus:Составьте программу для вычисления суммы всех трехзначительных чисел, кратных 25.
    НА ПАСКАЛЕ,плз.
     
  5. Vish

    Vish Banned

    Joined:
    12 Jun 2009
    Messages:
    8
    Likes Received:
    1
    Reputations:
    0
    писец, парень не тупи, тебе сделали уже давно.. даже выбор есть, 3 варианта тебе предложено :D
     
  6. patcher

    patcher Banned

    Joined:
    15 Dec 2009
    Messages:
    190
    Likes Received:
    37
    Reputations:
    10
    TPAXTOP, вот, набросал в блокноте. Можно было бы конечно более оптимально решить задачу, но думаю тебе и так пойдет))
    Code:
    program name_of_program;
    var i,s:integer;  
    begin  
    for i:=100 to 999 do
      begin 
      if i mod 25=0 then  
        s:=s+i;  
      end;  
    writeln(s);  
    readln;  
    end.
     
  7. StealthMaster

    StealthMaster Member

    Joined:
    3 Dec 2008
    Messages:
    52
    Likes Received:
    11
    Reputations:
    0
    TPAXTOP, тебе же написали целых два способа: с циклом while и с циклом for:

    Хотя, имхо, второй алгоритм (с циклом for) можно немного доработать: вместо того, чтобы делать 900 сравнений можно посчитать количество чисел делящихся на 25 в пределах от 100 (включительно) до 999, а потом запустить цикл for с таким количеством итераций (фактически, полученный алгоритм очень похож на первый):

    Code:
    Program For25Extra;
    uses
        CRT;
    var
      Result:       integer;
      count:        integer;
      number:       integer;
      i:            integer;
    begin
      clrscr;
      count := (999 div 25) - (99 div 25);
      Result := 0;
      Number := 100;
      for i := 1 to count do
          begin
               inc(Result, Number);
               inc(Number, 25);
          end;
      writeln('Result: ', Result);
      readln;
    end.
    
     
    #4987 StealthMaster, 17 Dec 2009
    Last edited: 17 Dec 2009
  8. mr_walker

    mr_walker Member

    Joined:
    9 Aug 2009
    Messages:
    41
    Likes Received:
    34
    Reputations:
    2
    Пост #5252 ктото знает?
     
  9. storm-soft

    storm-soft New Member

    Joined:
    17 Jun 2007
    Messages:
    6
    Likes Received:
    1
    Reputations:
    0
    Подскажите пожалуйста кто знает как это сделать
    нужно подключится к почтовому серверу и проверить есть ли письма от определённого отправителя.
    Заранее спасибо
     
  10. Вася Рогов

    Вася Рогов New Member

    Joined:
    6 Jul 2009
    Messages:
    16
    Likes Received:
    0
    Reputations:
    0
    как правильно зацепица (залогиница) на сайте wap.my.mail.ru
    сначало делаю post, потом get... но ничего не выходит... снифер пока ничего внятного не выдал.
     
  11. romeo[solo]

    romeo[solo] New Member

    Joined:
    17 Dec 2009
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    нужно сделать 10 потоков, и контроллирующий поток
    10 потоков имеют 1 и тот же код, каждый поток при необходимости выполнения какого-то действия отсылает данные на контроллирующийся поток, в котором все потоки становятся в очередь на выполнение, после того как контроллирующий поток обработал запрос за выполнение 1 действия, он отдаёт команду на запрашивающий поток, что можно продолжать работу
    т.е. все потоки становятся в очередь в контр поток, и только когда будет обработано действие контр поток возобнавляет работу того потока для которого это действие выполнялось.
    ещё такой вопрос: если программа будет содержать много потоков, нагрузка процессора будет распределяться по всем ядрам или нет?
     
  12. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    ничего. неотвечает. читай msdn
    Нужно в цикле запускать нужное кол-во раз

    Вообще на форуме куча примеров связанных с прогопоточностью. ВОт и возьми какойить один из них
     
  13. DimkO

    DimkO Banned

    Joined:
    16 Nov 2008
    Messages:
    28
    Likes Received:
    3
    Reputations:
    0
    123

    как сделать что бы при нажатии на ячейку в стринггрид она изменяла свой цвет?
     
  14. НTL

    НTL Elder - Старейшина

    Joined:
    26 Jan 2008
    Messages:
    715
    Likes Received:
    205
    Reputations:
    -26
    Как с помощью сокетов сделать сервер и клиент чтобы передать команды?
     
  15. boomba

    boomba New Member

    Joined:
    19 Jan 2009
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Подскажите!! как распарсить страницу одноклассников для определения ошибки при входе: "Профиль временно заблокирован. Попробуйте войти еще раз через 30 минут."
    Пишу так
    if Pos('Профиль временно заблокирован.',b.lock) >0 then
    begin
    ....
    но пос ничего не находит.... как исправить? и что искать при такое ошибке??
     
  16. Si{R}ius

    Si{R}ius Member

    Joined:
    13 Nov 2008
    Messages:
    95
    Likes Received:
    36
    Reputations:
    0
    Димон, глянь Delphi Russian Knowledge Base , там подборка статей по делфи, про изменение StrinGrida туева хуча статей, как и про другие компоненты...

    Вопрос

    Как по четырем вводимым точкам определить, выпуклый ли четырехугольник? (не пересекаются ли его стороны) (Pascal/Delphi)
     
  17. DimkO

    DimkO Banned

    Joined:
    16 Nov 2008
    Messages:
    28
    Likes Received:
    3
    Reputations:
    0
    отвечу как по математике,нарыл теорему:
    "Сумма углов опуклого n-угольника = 180градусов*(n-2)"
    в нашем случае n=4,то есть сумма углов =360,осталось только проверить сумму углов.их ты можешь найти через точки,а именно подсчитать расстояние между двумя точками для всех сторон четырехугольника,а потом брать 3 смежные точки,соединять их в треугольник и находить необходимый угол четырехугольника,ну а дальше сумма....осталось только вывести окончательную формулу и забить все в делфи\паскаль:)

    кто знает алгоритм попроще пишите:)
     
    1 person likes this.
  18. Markus_13

    Markus_13 Member

    Joined:
    19 Feb 2009
    Messages:
    74
    Likes Received:
    19
    Reputations:
    0
    Тоже нужно было нечто подобное, покопался нашел у себя прогу, переписал немного под твои нужды, вот:
    Code:
    function Sign(const v:Integer):shortint;
    begin Result:=0;if v<0 then Result:=-1
    else if v>0 then Result:=1;end;
    ...
    function WhichSide(p,q,r:TPoint):Integer;begin
    Result:=Sign((p.x-q.x)*(q.y-r.y)-(p.y-q.y)*(q.x-r.x));end;
    ...
    function Compare(p,q:TPoint):Integer;begin if p.x<q.x then
    Result:=-1 else if p.x>q.x then Result:=1 else if p.y<q.y then
    Result:=-1 else if p.y>q.y then Result:=1 else Result:=0;end;
    ...
    function Vypukl(p: array of TPoint):boolean;
    var i,n,d1,d2,s1,s2,c:Integer;p1,p2,p3:tPoint;
    function CheckTriple:Boolean;begin Result:=True;
    d1:=compare(p2,p3);if d1=-d2 then inc(c);d2:=d1;
    s1:=WhichSide(p1,p2,p3);if s1<>0 then begin if s2=-s1
    then begin Result:=False;Exit;end;s2:=s1;end;end;
    begin result:=true;s2:=0;c:=0;
    n:=Length(p);d2:=Compare(p[0],p[1]);
    for i:=0 to High(p)do begin p1:=p[i];
    p2:=p[(i+1)mod n];p3:=p[(i+2)mod n];
    if not CheckTriple then begin Result:=false;Exit;end;
    end;end;
    ...
    var i:tImage; ms:tLabel;
    ...
    procedure TForm1.iClick(Sender: TObject);
    var p:array of tPoint; k,m:byte;
    begin
    m:=4;
    setlength(p,m);
    for k:=0 to m-1 do begin
    p[k].X:=random(i.Width-10)+5;
    p[k].Y:=random(i.Height-10)+5;
    end;
    i.Canvas.FillRect(i.ClientRect);
    i.Canvas.Polygon(p);
    ms.Caption:='Не выпуклый!';
    if Vypukl(p)then ms.Caption:='Выпуклый';
    end;
    работает, но не 100%но =(
    З.Ы. код определения выпуклости я откуда-то скопипастил (непомню уже) и переделал под свои нужды :rolleyes:
     
    2 people like this.
  19. ZdezBilYa

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

    Joined:
    29 Aug 2008
    Messages:
    198
    Likes Received:
    75
    Reputations:
    19
    элементарно...
    - рассматриваешь все пары вершин
    - для каждой пары составляешь уравнение прямой, проходящей через эти две точки (запрос в гугле: "уравнение прямой через две точки")
    - подставляешь координаты двух других точек в уравнение прямой. Если значения одинакового знака, значит точки лежат по одну сторону от прямой.
    - если для всех пар точек получилось, что другие точки лежат по одну сторону, значит четырехугольник выпуклый
     
    1 person likes this.
  20. SHAXID

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

    Joined:
    13 Dec 2007
    Messages:
    24
    Likes Received:
    17
    Reputations:
    -6
    При компиляции появляется ошибка вида:
    [Fatal Error] Could not create output file 'C:\(путь)\Project1.exe

    В чем может быть проблема?..
     
Thread Status:
Not open for further replies.