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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2007, 12:30   #1
ByteMan
Пользователь
 
Регистрация: 07.06.2007
Сообщений: 18
По умолчанию Паскаль. Матрица и Вектор.

Дана матрица A 4*4 выбрать из матрицы A элементы больше 10 и записать их в вектор B. (вектор это одномерный массив).
ByteMan вне форума Ответить с цитированием
Старый 03.11.2007, 12:32   #2
kommunist
C# developer
Форумчанин
 
Аватар для kommunist
 
Регистрация: 03.10.2007
Сообщений: 393
По умолчанию

что у тебя не получается?
I like WPF
kommunist вне форума Ответить с цитированием
Старый 03.11.2007, 12:34   #3
ByteMan
Пользователь
 
Регистрация: 07.06.2007
Сообщений: 18
По умолчанию

Матрицу я создал, а как из одного массива выбрать элементы больше 10 и присвоить их второму массиву, т.е. вектору?
ByteMan вне форума Ответить с цитированием
Старый 03.11.2007, 12:42   #4
kommunist
C# developer
Форумчанин
 
Аватар для kommunist
 
Регистрация: 03.10.2007
Сообщений: 393
По умолчанию

выбор из массива элементов:
for i:= 1 to 4 do
begin
for j:= 1 to 4 do
begin
if a[i,j]> 10 then
write(a[i,j],' ');
I like WPF
kommunist вне форума Ответить с цитированием
Старый 03.11.2007, 12:45   #5
ByteMan
Пользователь
 
Регистрация: 07.06.2007
Сообщений: 18
По умолчанию

а как эти элементы присвоить вектору?
ByteMan вне форума Ответить с цитированием
Старый 03.11.2007, 12:55   #6
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Код:
var i,j,temp:byte;
a:array [1..4,1..4]of integer;
b:array [1..16] of integer; //беру 16 элементов, т.к. в матрице А все числа могут быть больше 10!
...
temp:=0;
for i:=1 to 4 do
 for j:=1 to 4 do
  begin
  if a[i,j]>10 then
            begin
            temp:=temp+1;// можно inc(temp); написать :)
            b[temp]:=a[i,j];
            end;
  end;
В результате в массиве В будет Ваш верктор. Количиство чисел = temp.
zetrix вне форума Ответить с цитированием
Старый 03.11.2007, 13:00   #7
ByteMan
Пользователь
 
Регистрация: 07.06.2007
Сообщений: 18
По умолчанию

Спасибо! И у меня ещё вопрос как работает оператор For to do? Я вроде и читал в учебнике но что не совсем понял, кто может объясните по подробнее и желательно на примере.
ByteMan вне форума Ответить с цитированием
Старый 03.11.2007, 13:10   #8
kommunist
C# developer
Форумчанин
 
Аватар для kommunist
 
Регистрация: 03.10.2007
Сообщений: 393
По умолчанию

оператор for to do работает сдедующим образом:
Оператор цикла for имеет одну из двух форм:
for переменная:=начальное значение to конечное значение do
оператор
или
for переменная:=начальное значение downto конечное значение do
оператор

цикл служит для того что бы не повторять одно действие несколько раз при чем количество повторений известно:
например задача вывести алфавит ///без цикла:
Код:
program abc;
begin
writeln('a');
writeln('b');
writeln('c');
.............
.............
writeln('z';
end.
 можно используя цикл:
program abc;
var c:char;
begin
for c:= 'a' to 'z' do begin
write(c,' ');
end;
readln;
end.
не забываем про теги (кнопочка #code - расширенный режим)
I like WPF

Последний раз редактировалось Alex21; 03.11.2007 в 14:49.
kommunist вне форума Ответить с цитированием
Старый 03.11.2007, 14:49   #9
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию Пример с динамическим массивом (консоль)

Код:
program Extract;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
N=4;

var a:array[1..N,1..N]of real;
    b:array of real;
    i,j:integer;

  { TODO -oUser -cConsole Main : Insert code here }

begin
  randomize;
  for i:=1 to N do
  begin
    for j:=1 to N do
    begin
      a[i,j]:=Random(30);
      if a[i,j]>10 then
      begin
        SetLength(b,length(B)+1);
        b[length(b)-1]:=a[i,j];
      end;
      Write(a[i,j]:2:0,' ');
    end;
    writeln;
  end;
  writeln;

  for i:=0 to length(b)-1 do
  Write(b[i]:2:0,' ');

  readln;
end.

Последний раз редактировалось Alex21; 03.11.2007 в 15:28.
Alex21 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
N-мерный вектор xtraSHAD0W Паскаль, Turbo Pascal, PascalABC.NET 4 16.04.2008 08:18
Паскаль. Квадратная матрица Deimossy Помощь студентам 2 20.11.2007 13:23
Паскаль. Матрица delphin100 Помощь студентам 3 19.11.2007 21:43