Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2009, 11:33   #1
katya36
Пользователь
 
Аватар для katya36
 
Регистрация: 19.12.2008
Сообщений: 51
Вопрос Построить логический вектор

{Пусть дана матрица A(nхn). Постройте логический вектор, каждый элемент которого равен true, если в строке существует элемент, делящий весь массив на две части с одинаковой суммой элементов в каждой.}

program Log_Vector;
{$APPTYPE CONSOLE}
uses
SysUtils;

const
n=10;
Type
str=array[1..n] or real;
mass=array[1..n] of str;
var vect:array[1..n] of boolean; \\тот самый логический вектор
A:matr; i:integer;
procedure read_matr (var M:matr);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to n do
read(M[i,j]);
readln
end;

................................... ................................... ...................................

А дальше, насколько я понимаю, нужно писать функцию, которая как раз таки узнаёт, существует ли в строке элемент, делящий весь массив на две части с одинаковой суммой элементов в каждой. А вот как это сделать - пока для меня загадка( Гляньте пожалуйста, может какие идейки возникнут??...
мы подобную задачку решали, так что начало у меня вроде правильно написано)))))
katya36 вне форума Ответить с цитированием
Старый 14.03.2009, 13:15   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Код:
program Log_Vector;
{$APPTYPE CONSOLE}
uses SysUtils;
const n=4;  //матрицу 10х10 долго вводить
Type  str=array[1..n] of integer;
      mass=array[1..n] of str;
function Bool(s:str):boolean; //нужная функция
var i,k:byte;
    sm1,sm2:integer;
begin
Bool:=false; //Считаем что такого элемента нет
k:=2; //начинаем проверять со второго
while k<=n-1 do  //пока он не последний, проверяем
  begin
    sm1:=0;sm2:=0;
    for i:=1 to k-1 do
    sm1:=sm1+s[i]; //Считаем сумму до него
    for i:=k+1 to n do
    sm2:=sm2+s[i]; //Считаем сумму после него
    if sm1=sm2 then //если они равны
      begin
       Bool:=true; //нормальная строка
       break;  //прекращаем в ней поиск
      end;
    k:=k+1;//переходим к следующему элементу строки
  end;
end;
procedure read_matr (var m:mass);
var i,j:integer;
begin
writeln('Vvedite ',n*n,' elementov matricy:');//Создание матрицы
for i:=1 to n do
for j:=1 to n do
read(m[i,j]);
readln
end;
procedure write_matr (var m:mass);//выводее в нормальном виде на экран
var i,j:integer;
begin
for i:=1 to n do
  begin
    for j:=1 to n do
    write(m[i,j]:4);
    writeln;
  end;
end;
var a:mass;
    v:array[1..n] of boolean;
    i:integer;
begin
read_matr(a);
writeln('Matrica A:');
write_matr(a);
for i:=1 to n do //идем по всем строкам
   begin
    v[i]:=Bool(a[i]); //Смотрим есть ли в строке нужный элемент и заносим результат в массив
    write(v[i],' '); //выводим массив
   end;
readln
end.
{например в таком массиве
10 1 5 5
6 2 2 4
1 2 3 4
4 5 2 9
результат будет
true true false true}
puporev вне форума Ответить с цитированием
Старый 14.03.2009, 13:32   #3
katya36
Пользователь
 
Аватар для katya36
 
Регистрация: 19.12.2008
Сообщений: 51
По умолчанию

Спасибо огромное, я всё поняла, не так уж и сложно оказывается!) Попробую сдать её)))
katya36 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Логический анализатор NieL Общие вопросы Delphi 1 10.03.2009 13:28
Вектор? Slavik Microsoft Office Excel 0 23.02.2009 10:30
N-мерный вектор xtraSHAD0W Паскаль, Turbo Pascal, PascalABC.NET 4 16.04.2008 08:18
Логический адрес InitInstance Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 24.03.2008 10:33