Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Люди!!Посмотрите задачку плиз!!!

Автор: jackal 3.01.2003 22:58

4. Задан двумерный целочисленный массив E размером 10 на 10 элементов. Написать процедуру для циклического сдвига вправо элементов тех строк массива, которые не содержат чисел, оканчивающихся на 7.
--------
Что такое циклич сдвиг?
Если сможете-помогите!!!
И ещё одна;
------

Const n=20;
Type vector= array[1..n] of integer;
Вычислить для вектора x:
4) x[n]*(x[n] + x[n-1])*(x[n] + x[n-1] + x[n-2])* ... *(x[n] + ... + x[1])
C Новым Годом!!!

Автор: AlaRic 3.01.2003 23:33

Если не ошибаюсь то циклический сдвиг - это операция сдвига битов, выходящих за пределы выражения или слова в другой конец...
В твоем случае числа которые нужно сдвинуть - числа, не оканчивающиеся на 7.

Автор: jackal 4.01.2003 0:29

Alaric!!
Большое тебе спасибо, но практике я боюсь ничего не смогу!
Не могли бы вы хоть чуть-чуть написать часть программки и как насчёт 2-ой задачки?
Помоги Ламеру!!!

Автор: AlaRic 4.01.2003 1:03

Тебе нужно сдвинуть строки или элементы?А то я не пойму что-то!

Автор: jackal 4.01.2003 1:35

элементы

Автор: Ivs 4.01.2003 1:39

Цитата
Если не ошибаюсь то циклический сдвиг - это операция сдвига битов, выходящих за пределы выражения или слова в другой конец...

AlaRic, ты это о чем ????? Какие еще биты?????

Вот прога, но она без процедуры, т.к 2-х мерный массив нельзя передовать в качестве параматра в процедуру (или можно???)
Но на самом деле можно создать вспомогательный одномерный массив и работать с ним, но, если честно, - что-то не хочется.
Код

uses crt;
const n=10;
var
  a:array[1..n,1..n] of integer;
  i,j,k,x,g:integer;
begin
  ClrScr;
  for i:=1 to n do
  begin
     for j:=1 to n do
     begin
      a[i,j]:=random(50);
      write(a[i,j]:3);
     end;
     writeln;
  end;

  for i:=1 to n do
  begin
     k:=0;
     for j:=1 to n do
     begin
      if a[i,j] mod 10=7 then begin k:=1;break;end;
     end;
     if k=0 then
     begin
      x:=a[i,n];
      for g:=n downto 2 do a[i,g]:=a[i,g-1];
      a[i,1]:=x;
     end;
  end;
  writeln;
  for i:=1 to n do
  begin
     for j:=1 to n do write(a[i,j]:3);
     writeln;
  end;
  readln;
end.
 

Автор: Ivs 4.01.2003 1:55

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

Код

uses crt;
const n=20;
var
  P:longint;
  i:integer;
  S:longint;
  vector:array[1..n] of integer;
begin
  ClrScr;
  for i:=1 to n do
  begin
                    vector[i]:=random(3)+1;
                    write(vector[i]:3);
  end;
  P:=1;
  S:=0;
  for i:=n downto 1 do
  begin
                         S:=S+vector[i];
                         P:=P*S;
  end;
  writeln;
  writeln(P);
  readln;
end.

Автор: AlaRic 4.01.2003 2:12

Цитата
AlaRic, ты это о чем
Прошу прощения - прогон! sad.gif

Автор: jackal 4.01.2003 2:17

Я тут сижу и у меня радости полные штаны!!
Спасибо вам всем!!!!
Хотел спросить-как вам это удаётся?
Какую литературу порекомендуете?
Заранее спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Огромный RESPECT!!!!

Автор: AlaRic 4.01.2003 2:20

Скачай все доки с этого сайта и читай сколько влезет! ..... Ивс - молодец!