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


Ответ
 
Опции темы Опции просмотра
Старый 04.01.2010, 10:33   #1 (permalink)
ДенисКО
Member
 
Регистрация: 02.11.2009
Сообщений: 19
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Две задачи на Pascal: про массив и про наибольший общий делитель

Задача 1. . Пусть дана вещественная квадратная матрица порядка 10. В строках с отрицательным элементом на главной диагонали найдите сумму элементов. Сумму элементов строки записывать отдельно. Вот программа, но она выводит сумму только одной(первой) строки с отрицательным элементом.
Код:
program Laba4;
const Nmax=3;
type ind=1..Nmax;
mas=array [1..Nmax,1..Nmax] of integer;
var a:mas; i,j:ind; S:integer; N:real;
begin
repeat
write ('vviberite sposob vvoda(1-ruchnoi;2-avtomaticheskii)');
readln (N);
until (N=1) or (N=2);
if N=1 then
  begin
   for i:=1 to Nmax do
   for j:=1 to Nmax do
     begin
      write ('a[',i,j,']=');
      readln (a[i,j]);
     end;
  end;
randomize;
if N=2 then
 begin
  for i:=1 to Nmax do
  for j:=1 to Nmax do
   begin
    a[i,j]:=-random (101)+50;
   end;
 end;
write (a[i,j]:4);
writeln;
for i:=1 to Nmax do
for j:=1 to Nmax do
 begin

  if (a[i,j]<0) and (i=j) then
   begin
    for j:=1 to Nmax do
     begin
       S:=S+a[i,j];
     end;
     writeln ('S=',S);
     readln;
   end;
 end;
end.
Задача 2. Даны три натуральных числа. Определить их наибольший общий делитель.


P.S. Заранее благодарю.

Последний раз редактировалось Long Cat; 04.01.2010 в 10:47
ДенисКО вне форума   Ответить с цитированием

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

Ваш топик на эту тему не единственный, вот похожие

Pascal, две задачи
Задачи по Pascal
Помогите, пожалуйста, решить три задачи по Pascal

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

Насчет первой задачи. У Вас неверно построен оконечный цикл. Давайте разберемся. Вот Ваш фрагмент:
Код:
for i:=1 to Nmax do
 for j:=1 to Nmax do
  begin
   if (a[i,j]<0) and (i=j) then
    begin
     for j:=1 to Nmax do
      begin
       S:=S+a[i,j];
      end;
     writeln ('S=',S);
     readln;
    end;
   end;
То есть НЕ ЗАВЕРШИВ внешний цикл по j Вы открываете внутренний цикл... по тому же j !!! Так не годится. Замечу, что этот внешний цикл вовсе не нужен. К тому же, у Вас пропущено обнуление числа S при переходе к следующей строке. Я бы предложил как-нибудь так:
Код:
for i:=1 to Nmax do
 if a[i,i]<0 then
  begin
   S:=0;
   for j:=1 to Nmax do
    S:=S+a[i,j];
   writeln ('S[',i,']= ',S);
  end;
Readln;
Vladimir_S вне форума   Ответить с цитированием
Старый 04.01.2010, 11:28   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от ДенисКО Посмотреть сообщение
Задача 2. Даны три натуральных числа. Определить их наибольший общий делитель.
Например, так:
Код:
var
 a1,a2,a3,m:WORD;
 b:BOOLEAN;
Begin
 Write('a1= ');
 ReadLn(a1);
 Write('a2= ');
 ReadLn(a2);
 Write('a3= ');
 ReadLn(a3);
 m:=(a1 div 2);
 b:=FALSE;
 Repeat
  b:=((a1 mod m)=0) and
     ((a2 mod m)=0) and
     ((a3 mod m)=0) and
     (m>1);
  DEC(m);
 Until b OR (m=1);
 If b then
  Writeln('The greatest common divisor is ',m)
  else
  Writeln('These numbers have no common divisors');
 ReadLn;
End.
Vladimir_S вне форума   Ответить с цитированием
Старый 21.01.2010, 12:03   #4 (permalink)
ДенисКО
Member
 
Регистрация: 02.11.2009
Сообщений: 19
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

а можете 2ую задачу сделать с процедурами?
ДенисКО вне форума   Ответить с цитированием
Ads

Яндекс

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


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

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




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

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