Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 22.12.2011, 16:21   #1 (permalink)
Ol'ga
Новичок
 
Регистрация: 22.12.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите решить

Помогите мне решить бонусную лабу...
Пусть дана прямоугольная матрица.Организовать движение курсора вдоль выбранной строки или вдоль выбранного столбца с накопление суммы из пройденных курсором элементов.Смещение на 1 элемент производится после нажатия заранее выбранной клавиши.
Ol'ga вне форума   Ответить с цитированием

Старый 22.12.2011, 16:21
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Я уверен, что в этих обсуждениях вы найдете решение

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

Старый 22.12.2011, 16:57   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Увы, есть такая закономерность: чем тщательнее Вы будете хранить тайну языка программирования, на котором нужно сделать задание, тем меньше шансов на то, что Вам кто-нибудь поможет. Проверено годами. А на экстрасенсов надежды мало - совсем от рук отбились, шляются неизвестно где...
Vladimir_S вне форума   Ответить с цитированием
Старый 23.12.2011, 15:58   #3 (permalink)
Ol'ga
Новичок
 
Регистрация: 22.12.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

я сама вот пробовала решать и вот что у меня получилось:
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;
помогите мне исправить ошибки и как мне сумму вычислить??
Ol'ga вне форума   Ответить с цитированием
Старый 23.12.2011, 21:32   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Ol'ga Посмотреть сообщение
помогите мне исправить ошибки и как мне сумму вычислить??
Помогаю. Исправил. Вот так (выход я сделал по 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.
Vladimir_S вне форума   Ответить с цитированием
Старый 25.12.2011, 23:38   #5 (permalink)
Ol'ga
Новичок
 
Регистрация: 22.12.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо вам большое!!!!)))
Ol'ga вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 11:35.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.