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

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

    Joined:
    5 May 2008
    Messages:
    633
    Likes Received:
    475
    Reputations:
    25

    не работает (((((
    на C := random(10); это ругается

    массив 2х мерный


    2 3 5 -2
    -1 -2 3 0
    0 1 -1 1
    1 0 2 3
    3 2 1 1
     
  2. [stranger]

    [stranger] Member

    Joined:
    2 Feb 2010
    Messages:
    167
    Likes Received:
    29
    Reputations:
    4
    так, давай нормально напиши что надо считать, а то я уже запутался.. оО
    и схрена на рендом ругается? оО
    на чем компилишь?
     
  3. MaTpOc

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

    Joined:
    5 May 2008
    Messages:
    633
    Likes Received:
    475
    Reputations:
    25
    Pascal ABC

    вот матрица, ну можно забить на нее, но сделать ввод с клавы

    2 3 5 2
    1 2 3 0
    0 1 1 1
    1 0 2 3
    3 2 1 1

    нужно: Составить программу определения среднего арифметического ненулевых элементов 2-ого столбца матрицы.


    вот сам замутил

    PHP:
    var
    a:array [1..41..4of integer;
    k,n,i:integer;
    sa:real;
    begin
    k
    :=0;
    sa:=0;
    for 
    i:=1 to 4 do 
    if 
    a[i,2]<>0 then
    begin
      inc
    (k);
      
    sa:=sa+a[i,2];
    end;
    sa:=sa/k;// ругается
    writeln(sa:0:2);
    end.
     
  4. [stranger]

    [stranger] Member

    Joined:
    2 Feb 2010
    Messages:
    167
    Likes Received:
    29
    Reputations:
    4
    это в делфи, в паскале не проверял..
    Code:
    program matros;
    
    var
      arr: array[0..4, 0..3] of integer;
      i, j, res, n: integer;
    begin
      for i := 0 to 4 do
        for j := 0 to 3 do
          readln(arr[i, j]);
    
      res := 0;
      n := 0;
    
      for i := 0 to 4 do
        begin
          if arr[i, 1] <> 0 then
            begin
              inc(n);
              res := res + arr[i, 1];
            end;
        end;
      if (n > 0) then writeln(res/n:0:2) else writeln('0,00');
      readln;
    
    end.
    
    UPD: в паскале работает
     
    #7244 [stranger], 17 Nov 2010
    Last edited: 17 Nov 2010
    1 person likes this.
  5. finnk

    finnk New Member

    Joined:
    1 Jul 2010
    Messages:
    30
    Likes Received:
    1
    Reputations:
    0
    MaTpOc
    как же ему не ругаться? у тебя получается:
    Code:
    sa:=sa/k;    //так как и sa и k остаются =0
    будет примерно так тогда:
    Code:
    var 
    a:array [1..4, 1..4] of integer; 
    k,n,i,j:integer; 
    sa:real; 
    begin
    for i:= 1 to 4 do
      for j:= 1 to 4 do readln(a[i,j]);
    k:=0; 
    sa:=0; 
    for i:=1 to 4 do  
    if a[i,2]<>0 then 
    begin 
      inc(k); 
      sa:=sa+a[i,2]; 
    end; 
    sa:=sa/k; 
    writeln(sa:0:2); 
    end.  
    P.S. Все элементы 2-ого столбца могут быть 0))
     
    1 person likes this.
  6. [stranger]

    [stranger] Member

    Joined:
    2 Feb 2010
    Messages:
    167
    Likes Received:
    29
    Reputations:
    4
    кстати, да! правильно! на это ведь проверки нет

    UPD: поправил код
     
  7. finnk

    finnk New Member

    Joined:
    1 Jul 2010
    Messages:
    30
    Likes Received:
    1
    Reputations:
    0
    ну это, я уверен, он сам реализовать в состоянии :)
     
  8. MaTpOc

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

    Joined:
    5 May 2008
    Messages:
    633
    Likes Received:
    475
    Reputations:
    25
    помогите еще найти среднее арифметическое элементов с четными номерами массива C=(-1, 3, 6, -8, -3, 6)
     
  9. 0ldbi4

    0ldbi4 Elder - Старейшина

    Joined:
    14 Apr 2008
    Messages:
    264
    Likes Received:
    51
    Reputations:
    10
    нака

    Code:
    var x,n,i,result:integer; c: array of integer;   
    begin
       x:=0; n:=0; result:=0;   
       for i := 1 to lenght(c)      
          begin
            if (i mod 2) then begin x:=x+c[i]; n:=n+1; end;
          end;
       result:=x/n;
    end;
     
    #7249 0ldbi4, 17 Nov 2010
    Last edited: 17 Nov 2010
  10. MaTpOc

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

    Joined:
    5 May 2008
    Messages:
    633
    Likes Received:
    475
    Reputations:
    25
    ругается на lenght(c)

    вот немного подправил, все равно на lenght(c) ругается, типо строковый тип (

    PHP:
    var
    x,n,i,result:integer;
    c: array [1..12]of integer;
    begin
       x
    :=0;
       
    n:=0;
       
    result:=0;
       for 
    := 1 to length(c)
          
    begin
            
    if (i mod 2then
            begin
            x
    :=x+c[i];
            
    n:=n+1;
            
    end;
          
    end;
       
    result:=x/n;
    end;
     
  11. 0ldbi4

    0ldbi4 Elder - Старейшина

    Joined:
    14 Apr 2008
    Messages:
    264
    Likes Received:
    51
    Reputations:
    10
    ну что не ясного раз ты в начале определил длину массива тогда и лен(с) тебе не нужен смело ставь там 12.

    И сорри вроде в делфе длину массива иначе узнают с пхп перепутал
     
  12. MaTpOc

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

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

    PHP:
    var
    x,n,i,result:integer;
    c: array [1..12]of integer;
    begin
       x
    :=0;
       
    n:=0;
       
    result:=0;
       for 
    := 1 to [COLOR=Red]12[/COLOR]
          
    begin
            
    if (i mod 2then //тут ошибку выдает!!!
            
    begin
            x
    :=x+c[i];
            
    n:=n+1;
            
    end;
          
    end;
       
    result:=x/n;
    end
     
  13. Chrome~

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

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Да, в Delphi длина массива = SizeOf(arr).
    PHP:
            if i mod 2 0 then
     
  14. 0ldbi4

    0ldbi4 Elder - Старейшина

    Joined:
    14 Apr 2008
    Messages:
    264
    Likes Received:
    51
    Reputations:
    10
    Матрос не хотел но все же пришлось открывать Делфе))

    PHP:
    var
    x,n,i,result:integer;
    c: array [1..12]of integer;
    begin
       
    for := 1 to 12 do
       
    c[i]:=random(100); // Вводим в массив случайные элементы от 0 до 100.

       
    for := 1 to 12 do
          
    begin
            
    if (i Mod 2=0then // Проверяем четность индекса элемента или итерации цикла.
            
    begin
            x
    :=x+c[i]; // Наращиваем сумму
            
    n:=n+1;  // Наращиваем число четных элементов добавленных в сумму.
            
    end;
          
    end;
       
    result:=x/n;  // Получаем результат, среднее арифметическое.

    end;
     
    #7254 0ldbi4, 17 Nov 2010
    Last edited: 17 Nov 2010
    2 people like this.
  15. [stranger]

    [stranger] Member

    Joined:
    2 Feb 2010
    Messages:
    167
    Likes Received:
    29
    Reputations:
    4
    ну, ээ, я вроде ведь уже постил решение..
     
  16. finnk

    finnk New Member

    Joined:
    1 Jul 2010
    Messages:
    30
    Likes Received:
    1
    Reputations:
    0
    Доброго всем времени суток. Требуется помощь в составлении алгоритма сортировки списка по нескольким параметрам. У кого есть желание пишите в личку, ну или в этой же теме отпишитесь.
     
  17. Isaev

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

    Joined:
    25 Jul 2007
    Messages:
    120
    Likes Received:
    19
    Reputations:
    6
    а чего его создавать то? там 10 строчек простого кода
     
  18. finnk

    finnk New Member

    Joined:
    1 Jul 2010
    Messages:
    30
    Likes Received:
    1
    Reputations:
    0
    ну раз все так просто, 10 строчек в студию :D
    хотя скорее всего вы просто не совсем поняли что мне нужно, если необходимо, могу выложить исходник, для больше степени визуализации вопроса так сказать,но предупреждаю сразу, писал прогу чтобы просто преподу сдать и поэтому никаким "стилем" там и не пахнет :)
    P. S. Прошу прощения, описался, не сортировки, а поиска элемента в списке по нескольким параметрам
     
    #7258 finnk, 18 Nov 2010
    Last edited: 18 Nov 2010
  19. Isaev

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

    Joined:
    25 Jul 2007
    Messages:
    120
    Likes Received:
    19
    Reputations:
    6
    Смотря что подразумевается под списком :)
    когда я просто сдавал преподу, я делал через двухсвязные списки, и весь метод фильтрации/поиска заключался в следующем
    Code:
      bool FilterBooks(const void* plit, const void* wort)
      {
        Book* B=dynamic_cast<Book*>((Lit*)plit);
        if (B)
        {
          if (((const mString*)wort)->GetLength()==0) return true;
          return B->GetTitle().Contains((const mString*)wort)
           ||B->GetPublisher().Contains((const mString*)wort)
           ||B->GetPubDate().asText().Contains((const mString*)wort)
           ||B->GetAuthor().Contains((const mString*)wort)
           ||B->GetISBN().Contains((const mString*)wort);
        }
        return false;
      }
    
    при чём фильтр применяется тут сразу ко всей таблице и к каждой колонке, работает быстро
     
  20. kriperS

    kriperS New Member

    Joined:
    6 Sep 2010
    Messages:
    15
    Likes Received:
    0
    Reputations:
    0
    Помогите решить такую задачу на паскале ><
    Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц.
    В единственной строке записана последовательность нулей и единиц (без пробелов). Суммарное количество цифр не превышает 100.
    Выходные данные
    В единственную строку нужно вывести искомую длину цепочки нулей.
     
Thread Status:
Not open for further replies.