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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2008, 22:36   #1
RamireZ
Студент
Пользователь
 
Аватар для RamireZ
 
Регистрация: 30.05.2008
Сообщений: 61
По умолчанию Паскаль и массивы

прога состоит из 2-х частей,с первой разобрался а во 2-о1 вот что:
Дана программа,которая в целочисленной матрице в столбцах с нечетными номерами находит номер столбца,в котором максимальное количество четных положительных чисел
вот что у меня получилось(отрывок),но почему то не получается:
<code>
//подсчет номера нечетного столбца с максимальным количеством четных положительных чисел
while j<=4 do
begin
for i:=1 to 4 do
begin
if i mod 2=0 then//если столбец нечетный
begin
for j:=1 to 4 do
if mas[i,j]>0//если элемент больше 0
then
begin mas[i,j]:=k;
if k mod 2 <>0 //если элемент четный
then n2:=n2+1;
end;
end;
end;

if max<n2 then
begin
max:=n2;
end;
j:=j+2;
end;
writeln('max=',max);
end.</code>
RamireZ вне форума Ответить с цитированием
Старый 23.10.2008, 22:43   #2
-=<[Evklidd]>=-
Форумчанин Подтвердите свой е-майл
 
Аватар для -=<[Evklidd]>=-
 
Регистрация: 22.01.2008
Сообщений: 161
По умолчанию

Цитата:
if i mod 2=0 then//если столбец нечетный
Это как раз четный столбец получается (на 2 нацело делится)!!!
Аналогично в этой строке
Цитата:
if k mod 2 <>0 //если элемент четный
-=<[Evklidd]>=- вне форума Ответить с цитированием
Старый 23.10.2008, 23:15   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Раз Вы пишете mas[i,j], значит i - строки, j- столбцы, Вы же считаете все наоборот. Если нам надо что-то посчитать в столбцах, то они идут внешним циклом, а строки внутренним.
Код:
max:=0; jmax:=1; //начальные значения
for j:=1 to 4 do   //идем по столбцам
if j mod 2<>0 then  //если столбец нечетный
    begin 
      kol:=0;  //начальное значение количества элементов
      for i:=1 to 4 do  //в этом столбце смотрим по строкам
      if  (mas[i,j]>0) and (a[i,j] mod 2=0) then kol:=kol+1;//если положительное и четное, считаем
      if kol>max then
            begin
               max:=kol; //максимальное количество
               jmax:=j;   /столбец с максимальным количеством
            end;
    end;
И возьмите матрицу побольше, чтож Вы из двух столбцов выбираете.
puporev вне форума Ответить с цитированием
Старый 23.10.2008, 23:20   #4
RamireZ
Студент
Пользователь
 
Аватар для RamireZ
 
Регистрация: 30.05.2008
Сообщений: 61
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
Раз Вы пишете mas[i,j], значит i - строки, j- столбцы, Вы же считаете все наоборот. Если нам надо что-то посчитать в столбцах, то они идут внешним циклом, а строки внутренним.
Код:
max:=0; jmax:=1; //начальные значения
for j:=1 to 4 do   //идем по столбцам
if j mod 2<>0 then  //если столбец нечетный
    begin 
      kol:=0;  //начальное значение количества элементов
      for i:=1 to 4 do  //в этом столбце смотрим по строкам
      if  (mas[i,j]>0) and (a[i,j] mod 2=0) then kol:=kol+1;//если положительное и четное, считаем
      if kol>max then
            begin
               max:=kol; //максимальное количество
               jmax:=j;   /столбец с максимальным количеством
            end;
    end;
И возьмите матрицу побольше, чтож Вы из двух столбцов выбираете.
ок,спс;действительно че то я недодумал)
вот только что меня интересует ...and (a[i,j] mod 2=0) then....
необходимо будет создать еще один массив или это опечатка ?
Зы:а матрицу я взял такую,чтобы значения долго не вводить(в реальности она 10х10)
RamireZ вне форума Ответить с цитированием
Старый 23.10.2008, 23:23   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Конечно опечатка, просто я так обычно пишу, ну и по привычке здесь написал.
Задавайте матрицу рандомно.

Последний раз редактировалось puporev; 23.10.2008 в 23:25.
puporev вне форума Ответить с цитированием
Старый 24.10.2008, 16:52   #6
RamireZ
Студент
Пользователь
 
Аватар для RamireZ
 
Регистрация: 30.05.2008
Сообщений: 61
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
Раз Вы пишете mas[i,j], значит i - строки, j- столбцы, Вы же считаете все наоборот. Если нам надо что-то посчитать в столбцах, то они идут внешним циклом, а строки внутренним.
Код:
      if  (mas[i,j]>0) and (mas[i,j] mod 2=0)

      i
И возьмите матрицу побольше, чтож Вы из двух столбцов выбираете.
//программирую на PascalABC пишет"операция не применима к операндам этого типа (mas[i,j] mod 2=0)",что посоветуете и куда вставить в коде?
RamireZ вне форума Ответить с цитированием
Старый 24.10.2008, 17:14   #7
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

При чем тут Паскаль. У вас наверно массив вещественного типа. Переделайте на mas:array[1..4,1..4] of integer;
puporev вне форума Ответить с цитированием
Старый 24.10.2008, 17:20   #8
RamireZ
Студент
Пользователь
 
Аватар для RamireZ
 
Регистрация: 30.05.2008
Сообщений: 61
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
При чем тут Паскаль. У вас наверно массив вещественного типа. Переделайте на mas:array[1..4,1..4] of integer;
точно,спс puporev
RamireZ вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль. массивы }{oTT@БЬ)Ч™ Помощь студентам 9 07.12.2015 20:00
Паскаль. задачи на массивы rant Помощь студентам 27 20.04.2010 09:33
Паскаль. Массивы Sexy Fox Помощь студентам 5 12.04.2008 21:45
Паскаль. Динамич массивы ProPaL Помощь студентам 6 25.03.2008 09:43
Паскаль, массивы. SZero Помощь студентам 5 22.03.2008 16:06