[ 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. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    282
    Likes Received:
    23
    Reputations:
    0
    На гуглил аз 10 сек http://lectureroom.net/872.html
     
  2. Dimaus

    Dimaus Banned

    Joined:
    7 Nov 2008
    Messages:
    30
    Likes Received:
    1
    Reputations:
    0
    там с классами, мне нужно на if операторах, самый элементарный. спасибо за ссылку
     
  3. Wave

    Wave Member

    Joined:
    15 Aug 2010
    Messages:
    99
    Likes Received:
    12
    Reputations:
    0
    http://forum.antichat.ru/thread259092.html

    помогите в теме.. ПОЖАЛУЙСТА
     
  4. MaTpOc

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

    Joined:
    5 May 2008
    Messages:
    633
    Likes Received:
    475
    Reputations:
    25
    Вот ребят задачка посложнее, НО...решать ниче не надо, код уже есть.

    С какого фига она считает не по модулю, если я везде указал что нужно вычитать по модулю?
    PHP:
    {Дан массив R(N)<= 50,
    Найти наибоьшее и наименьшее значение модуля разности между соседними элементами.
    Определить номера элементовпри которых эти значения достигаются.}
    uses crt;
    type
       ar 
    = array[1..50of integer;
    var
       
    r:ar;
       
    maxmod,minmod:integer;
       
    n,el,el2,i:byte;

    procedure FindMaxRMod(r:arn:byte; var el,el2:byte);
       
    begin
         maxmod 
    := -maxintminmod := maxintel := 0el2 := 0;
         for 
    i:=1 to n-do
           if 
    abs(r[i]-r[i+1]) > maxmod then
         begin
           el 
    := i;
           
    maxmod := abs(r[i]-r[i+1])
         
    end
           
    else if abs(r[i]-r[i+1]) < minmod then
         begin
           el2 
    := i;
           
    minmod := abs(r[i]-r[i+1])
         
    end;
         
    end;

    begin
       clrscr
    ;
       
    write('Vvedite N: ') ; readln(n);
       
    randomize;
         for 
    i:=1 to n do
             
    r[i]:= random(100) - 20;
       
    writeln('Massiv: ') ;
         for 
    i:=1 to n do
               
    write(r[i], ' ') ;
          
    writeln;
       
    FindMaxRMod(rnelel2);
       
    writeln('Max. modul raznosti = 'maxmod' - mezhdu elementami r[',
    el'] and r['el+1']') ;
       
    writeln('Min. modul raznosti = 'minmod' - mezhdu elementami r[',
    el2'] and r['el2 1']') ;
       
    readln;
    end.
    все кароче нашел ошибку )
     
    #7764 MaTpOc, 13 Feb 2011
    Last edited: 13 Feb 2011
  5. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    282
    Likes Received:
    23
    Reputations:
    0
    Или я не понял что ты хотел или ты сделал не так. ты модуль берешь уже из разницы.

    опиши подробнее строку где стоит ABS
     
    2 people like this.
  6. MaTpOc

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

    Joined:
    5 May 2008
    Messages:
    633
    Likes Received:
    475
    Reputations:
    25
    ошибку нашел )

    а есть ли разница как записано?

    abs(abs(r)-abs(r[i+1])) так работает верно

    abs(r)-abs(r[i+1]) так нет

    или
    abs(r)-r[i+1]) так тоже не получается :confused:
     
    #7766 MaTpOc, 13 Feb 2011
    Last edited: 13 Feb 2011
  7. roker777

    roker777 Member

    Joined:
    9 Nov 2009
    Messages:
    15
    Likes Received:
    15
    Reputations:
    2
    Как удалить в тексте слова через одно, допустим было:" Как удалить в тексте слова", а стало:"Как в слова"?
     
  8. EndLeSSDre@M

    EndLeSSDre@M Banned

    Joined:
    18 Jul 2009
    Messages:
    143
    Likes Received:
    99
    Reputations:
    -5
    ну как бэ разделяешь текст на массив, а потом просто удаляешь из массива все четные ключи, и записываешь массив в строку и се.
     
  9. roker777

    roker777 Member

    Joined:
    9 Nov 2009
    Messages:
    15
    Likes Received:
    15
    Reputations:
    2
    EndLeSSDre@M, как разложить слова в массив я понял, а как удалить четные ячейки? как записать эту строку, это типа: Delete(mas, 2k); ?
     
  10. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    282
    Likes Received:
    23
    Reputations:
    0
    Ну самый простой вариант это инкременент по 2 пока не достигнешь конца.

    Еще вариант проверяй четный или нет индекс массива
    четность проверяеться так
    (a div 2 )* 2 = a если условие верное то число а четное
     
  11. MaTpOc

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

    Joined:
    5 May 2008
    Messages:
    633
    Likes Received:
    475
    Reputations:
    25
    Оставить в стрoке S только пoследнее вхoждение каждого симвoла. взaимный порядoк поставленныx симвoлов сохранить.

    например:

    12k4561k890k24
    1561890k24

    паскаль, нужно сделать через функцию или процедуру.
     
  12. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    939
    Likes Received:
    162
    Reputations:
    27
    Если я тебя правильно понял, то должно быть так:
    Code:
    Str := Func('12k4561k890k24'); // Str := '561890k24';
    Если да, тогда попробуй мой вариант:
    Code:
    function LastUniqueOccurrence(Str: String): String;
    var
      i, j: Integer;
      ls, lr: Integer;
    begin
      ls := Length(Str);
    
      Result := Str[ls];
    
      for i := ls downto 1 do
      begin
        lr := Length(Result);
    
        for j := 1 to lr do
          if Str[i] <> Result[j] then
          begin
            if j = lr then
              Result := Str[i] + Result;
          end
          else
            Break;
      end;
    end;
    
    ...
    
    Str1 := LastUniqueOccurrence(Str2);
     
    1 person likes this.
  13. MaTpOc

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

    Joined:
    5 May 2008
    Messages:
    633
    Likes Received:
    475
    Reputations:
    25
    спасибо, все верно, но у меня есть пара вопросов, где переменная Result в var, почему без указания ее типа работает а с ней -нет?

    что делает строка Result := Str + Result; ?
     
  14. spitfire3271

    spitfire3271 New Member

    Joined:
    13 Nov 2010
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    объясните кто-нибудь "Указатели" для чего нужны, с чем есть?!
     
  15. SVLCH

    SVLCH New Member

    Joined:
    6 Feb 2011
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    http://www.intuit.ru/department/pl/cpp/8/3.html
     
  16. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    724
    Likes Received:
    110
    Reputations:
    22
    лучшая статья по указателям, ссылкам, работе с памятью которую я когда либо читал:
    http://www.transl-gunsmoker.ru/2009/09/blog-post.html

    SVLCH ошибся темой
     
  17. MaTpOc

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

    Joined:
    5 May 2008
    Messages:
    633
    Likes Received:
    475
    Reputations:
    25
    объясните мне о result в паскале, почему в проге выше(мой пост) result пашет без объявления его в var , а вот в такой банальной проге ошибку из-за него выдает:

    PHP:
    var
     
    i,k:integer;
    BEGIN
    i
    :=4;
    k:=4;
      
    writeln(123);
      
    result:= i*i;
      
    inc(result);
      
    k:=result;
      
    writeln(k);
    END.

    //объясните плиз доступным языком что это за такая функция result, что она делает где и как применяется?

    Я уже облазил весь гугл, вот там везде в var она прописана, в справке паскаля ABC нету ее вообще, сам попробовал писать ее в функции - пашет, без пфункции не пашет, это если и там и там не объявлять в var. Помогите плиз разобраться
     
    #7777 MaTpOc, 15 Feb 2011
    Last edited: 16 Feb 2011
  18. =Zeus=

    =Zeus= Member

    Joined:
    10 Aug 2009
    Messages:
    213
    Likes Received:
    54
    Reputations:
    5
    Матрос, прочитай какую-то нормальную книгу по паскалю, раздел функции и процедуры. Когда ты пишешь
    Code:
    function foo:[COLOR=Red] string[/COLOR];
    begin
      result := 'This is string'; // значит ресалт будет строка
    end;
    
    то это подразумевает, что функция будет возвращать данные типа string, то есть строку. Значит и result у нее будет типа string. Если обьявить
    Code:
    function foo: [COLOR=Red]integer[/COLOR];
    begin
      result := 3;  // значит ресалт будет число
    end;
    
    значит ф-ция возвращает число, соответственно ресалт будет иметь тип integer;

    Result есть только у функций, его не нужно обьявлять нигде. Эта переменная доступна только в теле своей функции. То есть ты не можешь просто посреди своей программы работать с ней. Ресалт - это те данные, которые вернет ф-ция после своей работы. Теперь подитожим все это простым примером для консоли в делфи:
    Code:
    function Cube(x: integer): integer; // обьявляем свою ф-цию
    
    //...
    //Some code goes here
    //...
    
    function Cube(x: integer): integer; // описываем ее
    begin
      result := x*x*x;
    end;
    
    // main block
    var myVar: integer;
    begin
      result := 10; // - Ошибка, так нельзя делать
      myVar := Cube(3); //присваиваем переменной myVar результат работы ф-ции Cube
      writeln( IntToStr(myVar) );
    end.
    
    Строго не судите, пытался обьяснить как умел.
     
    #7778 =Zeus=, 16 Feb 2011
    Last edited: 16 Feb 2011
    1 person likes this.
  19. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    939
    Likes Received:
    162
    Reputations:
    27
    Result - переменная, которая используеться для возвращения результата функции. Например, в Паскале можно записывать так (код будет работать правильно):

    Code:
    function MyFunction: [B]string[/B];
    begin
      // Код функции
      Result := 'text'; // [U]Вариант 1[/U]. У Result тип [B]string[/B]
      MyFunction := 'text'; // [U]Вариант 2[/U]
      // Код функции
    end;
    
     
    #7779 Chrome~, 16 Feb 2011
    Last edited: 16 Feb 2011
  20. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    282
    Likes Received:
    23
    Reputations:
    0
    1000% покатит. Проверил на TP7.0
     
Loading...
Thread Status:
Not open for further replies.