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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2011, 12:22   #1
BackSlash
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 39
Стрелка [Паскаль][Матрица][Столбцы]

Добрый день.
Есть задача:
Дана целочисленная матрица R размером 7х8. В каждом столбце матрицы определить количество четных положительных значений и сформировать из них одномерный массив D.

не могу понять как заставить проходить цикл по столбцам.
По строкам понятно, а по столбцам незнаю как.

Толкового пока мало написал, только ввод и ,собственно, все...

Код:
uses crt;
type Matrix = array[1..7,1..8] of integer;
var kolvo, max: integer;
     m: Matrix;
begin
clrscr;
for i := 1 to 7 do
  for j := 1 to 8 do
    read(m[i, j]);





readln;
end.
Буду благодарен если кто-нибудь поможет.
Спасибо.
BackSlash вне форума Ответить с цитированием
Старый 10.03.2011, 12:25   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Элемент матрицы
Код:
a1[i,j]
где i - номер в строке, j - номер в столбце.

Соответственно просто меняй j, чтобы идти по столбцу.
Прошел столбец - увеличиваешь i на 1, сбрасываешь j и идешь по следующему столбцу.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 10.03.2011, 12:41   #3
BackSlash
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 39
По умолчанию

написал следующее

Код:
 
uses crt;
type Matrix = array[1..7,1..8] of integer;
type Matrix1 = array[1..8] of integer;

var kolvo, max: integer;
     m: Matrix;
     m1:Matrix1;
begin
clrscr;
for i := 1 to 7 do
  for j := 1 to 8 do
    read(m[i, j]);

for j := 1 to 8 do
      if ( m[i, j] mod 2=0 AND m[i, j]>0 ) then  m[i, j]=m1[j];
      end;



readln;
end.
теперь мне непонятно как "Прошел столбец - увеличиваешь i на 1"
Это и есть столбец. Как тут увеличить i (то есть номер строки) именно после прохождения 8 ячеек стобца?
BackSlash вне форума Ответить с цитированием
Старый 10.03.2011, 13:12   #4
BackSlash
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 39
По умолчанию

По моему окончательный вариант выглядит так:
Код:
for j:=1 to 8 do
 begin
   for i:=1 to 7 do
    if ((m[i,j] mod 2=0) AND m[i,j]>0) then
end;
BackSlash вне форума Ответить с цитированием
Старый 10.03.2011, 13:14   #5
BackSlash
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 39
По умолчанию

Подскажите теперь как сформировать массив D здесь, и записывать в него числа.
А так я только вывод могу сделать под if но это будет не массив.
BackSlash вне форума Ответить с цитированием
Старый 10.03.2011, 14:18   #6
BackSlash
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 39
По умолчанию

Код:
uses crt;
type Matrix = array[1..7,1..8] of integer;
type Matrix1 = array[1..56] of integer;

var i,j: integer;
     m: Matrix;
     m1:Matrix1;
Begin
randomize;
clrscr;

for i := 1 to 7 do
  for j := 1 to 8 do
    m[i,j]:=random(101)-50;

Writeln('Matrica M:');

for i:=1 to 7 do  begin
    for j:=1 to 8 do write(m[i,j]:5);
    writeln;
end;


for j:=1 to 8 do
 begin
   for i:=1 to 7 do
    if ((m[i,j] mod 2=0) AND( m[i,j]>0) ) then m1[i]:=m[i,j];
end;


Writeln('Matrica D:');

for i:=1 to 56 do write(m1[i]:5);writeln;

readln;
end.
почему выводит только 7 цифр? И пропускает некоторые четные положительные?
BackSlash вне форума Ответить с цитированием
Старый 10.03.2011, 14:23   #7
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Цитата:
не могу понять как заставить проходить цикл по столбцам.
Код:
for i:=1 to n do
 for j:=1 to m do
   if mas[j,i]....
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.

Последний раз редактировалось Niro; 10.03.2011 в 14:27.
Niro вне форума Ответить с цитированием
Старый 10.03.2011, 14:38   #8
BackSlash
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 39
По умолчанию

Пробовал как ты показал, тоже самое 7-8 цифр на выходе..
BackSlash вне форума Ответить с цитированием
Старый 10.03.2011, 15:03   #9
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Цитата:
7-8 цифр на выходе..
правильно их и будет восемь, ты прочитал моё сообщение раньше чем я его отредактировал? так я там не внимательно прочитал задание и массив нужен только на 8 элементов, ведь у тебя 8 столбцов, а найти надо
Цитата:
количество четных положительных значений и сформировать из них одномерный массив D
Так что как-то так
Код:
for i:=1 to 7 do
 begin
 ch:=ch+1; 
 for j:=1 to 8 do
  if (m[j,i] mod 2=0) AND (m[j,i]>0) then begin
                                             k:=k+1;
                                             newmas[ch]:=k; 
                                          end;
 end;
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 10.03.2011, 16:33   #10
BackSlash
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 39
По умолчанию

Это не то(
нужно формировать из тех чисел которые в столбцах, которые четны и положительны.
BackSlash вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрица(Паскаль) kr3gg Помощь студентам 5 30.05.2010 23:05
Паскаль. Матрица d_ovod Паскаль, Turbo Pascal, PascalABC.NET 2 28.05.2010 07:11
Матрица паскаль Zyld Помощь студентам 1 20.05.2010 01:20
Паскаль, матрица. ai\ekcah^p Помощь студентам 2 28.02.2010 14:32
матрица паскаль telle Помощь студентам 2 28.05.2009 01:01