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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2013, 19:55   #1
SsAn
Пользователь
 
Регистрация: 23.12.2013
Сообщений: 25
По умолчанию Функция. целочисленная квадратная матрица порядка N. Найти номера строк, все элементы которых четные.

Есть целочисленная квадратная матрица порядка N. Найти номера строк элементы которых четные.
SsAn вне форума Ответить с цитированием
Старый 23.12.2013, 20:00   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Нашел: 1,4,5,7
type_Oleg вне форума Ответить с цитированием
Старый 23.12.2013, 20:08   #3
SsAn
Пользователь
 
Регистрация: 23.12.2013
Сообщений: 25
По умолчанию

Код:
program lab_5_2;
uses crt;
type
  mas=array[1..100,1..100] of real;
  var b:mas;
  
   procedure vvod(var x:mas; n:integer);
  var i, j:integer;
  begin
     for i:=1 to n do
      for j:=1 to n do
      x[i,j]:=random(100);
     end;
     procedure vyvod(x:mas; n:integer);
  var i,j:integer;
  begin
    for i:=1 to n do
     begin
       for j:=1 to n do
       write(x[i,j]:5:0, ' ');
       writeln;
       end;
   writeln;
   end;
   procedure dva(x:mas; var y:mas; n:integer);
   var i,j:integer;
   begin
       for i:=1 to n do
         for j:=1 to n do
         y[i,j]:=x[i,j];
         end;
  function nuli (x:mas; n:integer):real;
     var i,j:integer;
         y:real;
     begin
      for i:=1 to n do
        for j:= 1 to n do
        begin
        if n mod 2=0
    then writeln(x[i,j])

    end;
    writeln;
    end;
    var c:mas;
  m:integer;
  begin
     write('Введите размерность мас');
     readln(m);
     randomize;
     vvod(c,m);
     writeln('Исходная');
     vyvod(c,m);
     writeln('Преобразованная');

     vyvod(c, m);
     writeln;
    end.
Я не могу функцию сделать.



________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 23.12.2013 в 20:18.
SsAn вне форума Ответить с цитированием
Старый 23.12.2013, 20:23   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
type
  mas=array[1..100,1..100] of real;
  var b:mas;
  
   procedure vvod(var x:mas; n:integer);
зачем Вам массив b ? (выделил цветом).

Цитата:
Я не могу функцию сделать.
какую функцию?!
- которая печатает все номера строк, в которых ВСЕ элементы чётные?
или
- которая печатает все номера строк, где ВСТРЕЧАЮТСЯ чётные элементы?

Или какую функцию?
И, кстати, почему именно функцию? Напоминаю, что в отличие от процедуры, функция должна ВЕРНУТЬ какое-то значение. Что должна вернуть ваша функция?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.12.2013, 20:28   #5
SsAn
Пользователь
 
Регистрация: 23.12.2013
Сообщений: 25
По умолчанию

функцию,которая печатает все номера строк, в которых ВСЕ элементы чётные.
а массив b это просто не удалила во время одной из попыток.
SsAn вне форума Ответить с цитированием
Старый 23.12.2013, 22:07   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от SsAn Посмотреть сообщение
функцию,которая печатает все номера строк, в которых ВСЕ элементы чётные.
функция должна что-то возвращать.
Что должна возвращать ваша функция?

и проблема номер два - у Вас матрица ошибочно представлена как матрица вещественных чисел. Для вашей задачи она должна быть ЦЕЛОЧИСЛЕННОЙ!!
(для дробных чисел отсутствует понятие кратности/чётности/не чётности!
например, число 2.4 - это чётное число?! Оно делится без остатка на 2 ?!)



Что же касается возвращаемого значения, хотите, функция вернёт КОЛИЧЕСТВО найденных строк?!

получите и распишитесь:
Код:
type
  mas=array[1..100,1..100] of integer;
....

function CountEvenRows(x:mas; n:integer) : integer;
  var 
    i,j, rez:integer;
    isEven : boolean;
  begin
    Write('Номера строк матрицы со всеми чётными элементами: ');
    rez := 0;
    for i:=1 to n do
    begin
       isEven := true; 
       for j:=1 to n do
          if odd(x[i,j]) then begin
               isEven := false; 
               break
          end;
      if isEven then begin
         Write(i:2,' ');
         Inc(rez);
      end; 
   end;
   writeln;
   CountEvenRows := rez;
end;
....
p.s. не проверял...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.12.2013, 22:38   #7
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Красота..
Пофлужу..
1)
Цитата:
Код:
for j:=1 to n do
          if odd(x[i,j]) then begin
               isEven := false; 
               break
Или так..
Код:
j := 1;
while (j <=n) and (not odd(x[i, j]) do
      Inc(j);
if j = n+1 then..
Дело вкуса..

2)
Цитата:
x:mas
100*100*2(2 раза выделяем память)*sizeof Integer.. А не жирно?
предлагаю ставить const.. и память не жрем.. и напакостить не можем..
Poma][a вне форума Ответить с цитированием
Старый 24.12.2013, 21:09   #8
SsAn
Пользователь
 
Регистрация: 23.12.2013
Сообщений: 25
По умолчанию

Код:
if odd(x[i,j]) then begin
Мне выдает здесь ошибку...Нельзя преобразовать выражение типа real к типу integer.
SsAn вне форума Ответить с цитированием
Старый 24.12.2013, 21:11   #9
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Значит у Вас массив типа Real, что является дикой ересью.. Понятие четности\нечетности применимо лишь для целых чисел.. (еще раз посмотрите пример Сержа)
Poma][a вне форума Ответить с цитированием
Старый 24.12.2013, 21:16   #10
SsAn
Пользователь
 
Регистрация: 23.12.2013
Сообщений: 25
По умолчанию

Код:
write(x[i,j]:5:0, ' ');
теперь здесь ошибка...
Формат вывода применим только к типам real и complex.

Последний раз редактировалось SsAn; 24.12.2013 в 21:24.
SsAn вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана целочисленная матрица m*n. Найти количество ее строк, все элементы которых различны. slovetskii Паскаль, Turbo Pascal, PascalABC.NET 8 24.10.2013 17:29
целочисленная квадратная матрица порядка n fits Паскаль, Turbo Pascal, PascalABC.NET 0 13.12.2012 21:01
Дана n значимая квадратная матрица, найти строку в которой все элементы четные -на дельфи Спасибо заранее!!! Altynai-93 Помощь студентам 1 12.12.2012 14:27
Дана действительная квадратная матрица порядка n. Найти наибольшее из значений элементов, расположенных в Хутор Паскаль, Turbo Pascal, PascalABC.NET 2 18.12.2010 12:41
Дан массив размерности, определить номера строк элементы которых образуют последовательность С++ Lera Помощь студентам 2 18.12.2009 17:17