1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программирован. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление
  2. Чат codeby в telegram перезагрузка. Обсуждаем вопросы информационной безопасности и методы защиты информации, программирование. Задавайте свои вопросы и комментируйте чужие. Подробнее ...

    Скрыть объявление

Оформление массивов

Тема в разделе "Вопросы новичков и не только", создана пользователем tarn, 5 май 2010.

  1. tarn

    tarn Гость

    Репутация:
    0
    Помогите, пожалуйста, разобраться:
    нужно процедуру umnojeniye выполнить 81x81 (6561) раз, "пермножив" ею массивы 0000,0001,...,2221,2222 каждый на каждый.
    Код:
    program Diskret;
    uses sysutils;
    
    procedure umnojeniye(a,b:array[1..4] of byte);
    var i,j,k,g,w:byte;
    rezumn,pr,polin,rzn:array[1..10]of byte;
    s:array[1..10,1..10]of byte;
    
    begin
    for i:=1 to 4 do
    for j:=1 to 4 do
    s[i,j]:=(a[i]*b[j])mod 3;
    
    for i:=1 to 4 do
    for j:=1 to 4 do
    for k:=1 to 7 do
    if i=k-j+1 then
    rezumn[k]:=(rezumn[k]+s[i,j])mod 3;
    
    polin[1]:=2; polin[2]:=1;polin[3]:=2;polin[4]:=2;polin[5]:=1;
    
    g:=0;
    repeat
    for i:=0 to 2 do
    if (((i*polin[1])mod 3)+rezumn[1])mod 3 = 0 then
    begin
    for j:=1 to 5 do
    begin
    pr[j]:=(polin[j]*i)mod 3;
    rzn[j]:=(rezumn[j]+pr[j])mod 3;
    end;
    g:=g+1;
    for w:=1 to 4 do
    rezumn[w]:=rzn[w+1];
    rezumn[5]:=rezumn[5+g];
    break;
    end;
    until g>2;
    for i:=2 to 5 do
    Write(rzn[i],' ');
    end;
    
    
    var i,j,k,l:byte;
    m:array[1..100,1..4]of byte;
    ch:word;
    
    begin
    ch:=0;
    for i:=0 to 2 do
    begin
    for j:=0 to 2 do
    begin
    for k:=0 to 2 do
    begin
    for l:=0 to 2 do
    begin
    ch:=ch+1;
    m[ch,1]:=i;
    m[ch,2]:=j;
    m[ch,3]:=k;
    m[ch,4]:=l;
    end;
    end;
    end;
    end;
    
    for i:=1 to 81 do
    for j:=1 to 81 do
    begin
    umnojeniye(m[i],m[j]); {здесь компилятор противится}
    writeln;
    end;
    ReadLn;ReadLn;
    end.
    Проблема в этом моменте:
    Код:
    for i:=1 to 81 do
    for j:=1 to 81 do
    begin
    umnojeniye(m[i],m[j]); {здесь компилятор противится}
    writeln;
    end;
    В Lazarus всё собирается, но работает некорректно (первый элемент должен получиться 0000, последний 2200).
    Наверно, таким образом m одномерный массив из двумерного нельзя делать, как исправить подскажите, пожалуйста.
     
  2. Over

    Over Well-Known Member

    Репутация:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    116
    Симпатии:
    0
    "Компилятор противится" - хотелось бы увидеть, что компилятор пишет.
    Ответы "пишет чего-то непонятное" не устроят.
     
Загрузка...

Поделиться этой страницей