• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите решить

  • Автор темы Автор темы Ol'ga
  • Дата начала Дата начала

Ol'ga

Ученик
Регистрация
22 Дек 2011
Сообщения
3
Реакции
0
Баллы
0
Помогите решить

Помогите мне решить бонусную лабу...
Пусть дана прямоугольная матрица.Организовать движение курсора вдоль выбранной строки или вдоль выбранного столбца с накопление суммы из пройденных курсором элементов.Смещение на 1 элемент производится после нажатия заранее выбранной клавиши.
 
Увы, есть такая закономерность: чем тщательнее Вы будете хранить тайну языка программирования, на котором нужно сделать задание, тем меньше шансов на то, что Вам кто-нибудь поможет. Проверено годами. А на экстрасенсов надежды мало - совсем от рук отбились, шляются неизвестно где...
 
я сама вот пробовала решать и вот что у меня получилось:
program Lab8;
usese crt;
type matrix=array[1..10,1..10] of integer;
var a:matrix;
i,j,n,x,y:byte;
ch:char;
procedure vvod(var ma:matrix; n:integer);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to n do ma[i,j]:=random(10);
end;
procedure print(ma:matrix; n:integer);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to n do write(ma[i,j]:2);
writeln;
end;
begin
clrscr;
x:=1;y:=1;
write('vvedite razmer kvadratnoy matrix: ');
readln(n);
if n>10 then n:=10;
vvod (a,n) ;
print (a,n) ;
gotoxy(1,1) ;x:=1 ;y:=1;
while true do begin
ch:=readkey;
if ch=#0 then begin
if ch=#79 then exit;
if (ch=#77) and (x<2*n) then begin x:=x+2;gotoxy(x,y) end;
if (ch=#75) and (x>2) then begin x:=x-2;gotoxy(x,y) end;
if (ch=#72) and (y>n/4) then begin y:=y-1; gotoxy(x,y) end;
if (ch=#80) and (y<11) then begin y:=y+1; gotoxy(x,y) end;
end;
end;
помогите мне исправить ошибки и как мне сумму вычислить??
 
помогите мне исправить ошибки и как мне сумму вычислить??
Помогаю. Исправил. Вот так (выход я сделал по Esc):
Код:
uses crt;
type
 matrix=array[1..10,1..10] of integer;
var
 a:matrix;
 i,j,n,x,y:byte;
 Sum:Word;
 ch:char;

procedure vvod(var ma:matrix; n:integer);
var i,j:integer;
begin
 for i:=1 to n do
  for j:=1 to n do
   ma[i,j]:=random(10);
end;

procedure print(ma:matrix; n:integer);
var i,j:integer;
begin
 clrscr;
 for i:=1 to n do
  begin
   for j:=1 to n do
    write(ma[i,j]:2);
   writeln;
  end;
 writeln;
end;

Procedure Calc_Sum;
var xs,ys:byte;
begin
 if (x mod 2)=0 then
  begin
   xs:=x;
   ys:=y;
   gotoxy(1,n+1);
   Sum:=Sum+a[y,(x div 2)];
   write('Sum= ',Sum:3);
   x:=xs;
   y:=ys;
   gotoxy(x,y);
  end;
end;

BEGIN
 clrscr;
 x:=1;
 y:=1;
 write('vvedite razmer kvadratnoy matrix: ');
 readln(n);
 if n>10 then n:=10;
 vvod(a,n);
 print(a,n);
 Sum:=0;
 gotoxy(1,n+1);
 write('Sum= ',Sum:3);
 gotoxy(1,1);
 x:=1;
 y:=1;
 while true do
  begin
   ch:=readkey;
   if ch=#27 then exit;
   if (ch=#77) and (x<2*n) then
    begin
     x:=x+1;
     gotoxy(x,y);
     Calc_Sum;
    end;
   if (ch=#75) and (x>1) then
    begin
     x:=x-1;
     gotoxy(x,y);
     Calc_Sum;
    end;
   if (ch=#72) and (y>1) then
    begin
     y:=y-1;
     gotoxy(x,y);
     Calc_Sum;
    end;
   if (ch=#80) and (y<n) then
    begin
     y:=y+1;
     gotoxy(x,y);
     Calc_Sum;
    end;
  end;
END.
 
Спасибо вам большое!!!!)))
 
Назад
Сверху