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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2011, 11:42   #1
Noname11
 
Регистрация: 21.03.2011
Сообщений: 8
Вопрос задача по массивам.

Дан 2-х мерный массив, сформировать из него одномерный состоящий из логических значений. Причём если в соответствующей строке есть число среднеарифметическое этой строке.
зарание спасибо!
Noname11 вне форума Ответить с цитированием
Старый 24.03.2011, 11:44   #2
fancy_bui1d
 
Регистрация: 23.03.2011
Сообщений: 9
По умолчанию

Noname11
Честно говоря не особо понял сути задачи.
Массив, который формируется в итоге должен состоять из тру или фэлс? оО
fancy_bui1d вне форума Ответить с цитированием
Старый 24.03.2011, 11:52   #3
VadikV
Форумчанин
 
Аватар для VadikV
 
Регистрация: 08.01.2011
Сообщений: 226
По умолчанию

Считаешь среднее арифметическое строки. Проверяешь, есть ли в этой же строке найденное значение. если есть - помещаешь в результирующий массив true, если нет - false. Индекс в результирующем массиве равен номеру строки в исходном.
что тут сложного?
icq 223-630-454
e-mail vysotskiy@list.ru
сайт http://www.big-library.net/
VadikV вне форума Ответить с цитированием
Старый 24.03.2011, 11:53   #4
Noname11
 
Регистрация: 21.03.2011
Сообщений: 8
По умолчанию

Я сам её не понял по этому обращаюсь за помощью... нам писали идею создания одномерного массива вообщем вот что я успел записать)
b:arra[1..m] of boolean;



потом процедура нахождения
for i:=1 to m do begin
sr:=0;
for j:=1; to n do <сложить элементы x[i,j]>
sr:=s/n; или sr:=s div n;
i:=1;
While <не нашли sr> and <не закончился массив> do inc(i);
if i>n then ah:=false
esle ah:=true;
или
if i>n then b[j]:=false
else b[i]:=true;
так же говорили что можно это всё заменить b[j]:=(i<=n); и это будет красивее и лучше..
Noname11 вне форума Ответить с цитированием
Старый 24.03.2011, 11:56   #5
Noname11
 
Регистрация: 21.03.2011
Сообщений: 8
По умолчанию

VadikV
Спасибо конечно за совет, но суть задачи я уловил я не понимаю как это можно вооплатить я находил среднееарифметическое каждой строки а дальше у меня кончалась мысль так и идеи по вооплощению кода...
Помогите пожалуйста наконецто мне разобратся с этой программой...
Noname11 вне форума Ответить с цитированием
Старый 24.03.2011, 12:08   #6
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Код:
const
  maxN = 10;
  maxM = 10;

type
  TMyArray = array[1..maxN, 1..maxM] of Integer;
  TMyBoolArray = array[1..maxN] of Boolean;

var
  A: TMyArray;
  B: TMyBoolArray;
  n, m: Integer;
  S: Integer;
begin
  // fill array with random values, calculate mean as well
  for n := 1 to maxN do begin
    //
    S := 0;
    for m := 1 to maxM do begin
      //
      A[n, m] := Random(10);
      inc(S, A[n, m]);
    end;
    //
    S := S div maxM;
    //
    // find mean in row
    B[n] := false;
    for m := 1 to maxM do begin
      //
      if (S = A[n, m]) then begin
        //
        B[n] := true;
        break;
      end;
    end;
    //
  end; // for n...
end;
типа того
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 24.03.2011, 12:37   #7
Noname11
 
Регистрация: 21.03.2011
Сообщений: 8
По умолчанию

Спасибо, veniside!
Только вот я запихнул у себя в делфи и у меня тупо чёрное окно выводит......
можно усложнить задачку?
попробуйте сделать её так чтобы массив загружался из файла т.е
procedure reading();
procedure print();
procedure work();

Сам я пытался делать более гибким
т.е
procedure reading();
var i,j,buf:integer;
begin
read(inp,n);
read(inp,m);
for i:=1 to n do
for j:=1 to m do
begin
read(inp,buf);
a[i,j]:=buf;
end;
end;

procedure print();
var i,j:integer;
begin
for i:=1 to n do
begin
for j:=1 to m do
begin
write(a[i,j],' ');
end;
Writeln;
end;
end;
Noname11 вне форума Ответить с цитированием
Старый 24.03.2011, 16:17   #8
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

учись нормально формулировать задание.
составить из 0 и 1 массив по размеру равный количеству строк массива,
если в соотв. строке есть число = средн. арифм. этой строки 1 - иначе 0.
onewho вне форума Ответить с цитированием
Старый 24.03.2011, 17:41   #9
Noname11
 
Регистрация: 21.03.2011
Сообщений: 8
По умолчанию

Вот по идее средн. арифм. в каждой строке так то есть.. суть ещё в том что нужно только целочисленные...
Noname11 вне форума Ответить с цитированием
Старый 24.03.2011, 17:52   #10
Noname11
 
Регистрация: 21.03.2011
Сообщений: 8
По умолчанию

Вот у меня что выходит... а как это записывать в true или false ??
Или по идее всё верно?

Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const n=5;
var mas:array[1..n,1..n] of integer;
    ar:array[1..n] of real;
    i,j,k:integer;
    sr:real;
begin
randomize;
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
   mas[i,j]:=random(10);
   write(mas[i,j],'  ');
   end;
  writeln;
 end;
writeln;
k:=0;
for i:=1 to n do
 begin
  sr:=0;
  for j:=1 to n do
   sr:=sr+mas[i,j];
 sr:=sr/n;
 k:=k+1;
 ar[k]:=sr;
 end;
writeln;
for i:=1 to k do
 write(ar[i]:2:1,'  ');
readln;
end.
Noname11 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача по массивам) Flo Помощь студентам 1 30.11.2010 22:09
задача по массивам с++ nurai Общие вопросы C/C++ 6 28.10.2009 13:22
Задача по массивам grerg Помощь студентам 1 30.10.2007 08:25