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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2013, 16:00   #1
slovetskii
Новичок
Джуниор
 
Регистрация: 24.10.2013
Сообщений: 4
По умолчанию Дана целочисленная матрица m*n. Найти количество ее строк, все элементы которых различны.

дана целочисленная матрица m*n. Найти количество ее строк, все элементы которых различны. числа вводятся с клавиатуры. если можно цикл FOR

помогите пожалуйста решить! завтра сдавать лабу

Последний раз редактировалось Serge_Bliznykov; 24.10.2013 в 16:21.
slovetskii вне форума Ответить с цитированием
Старый 24.10.2013, 16:20   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Написать код ввода матрицы конечно же не можешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.10.2013, 16:36   #3
slovetskii
Новичок
Джуниор
 
Регистрация: 24.10.2013
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Написать код ввода матрицы конечно же не можешь?
Код я написал, не могу сделать так, чтобы правильно считало количество строк
slovetskii вне форума Ответить с цитированием
Старый 24.10.2013, 16:58   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вы нам тут свой код напишите, будет повод для разговора/помощи...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.10.2013, 17:04   #5
slovetskii
Новичок
Джуниор
 
Регистрация: 24.10.2013
Сообщений: 4
Сообщение Вот код

uses crt;
var a:array[1..10,1..10] of integer;
i,j,m,n,x,s:integer;
begin
clrscr;
randomize;
write('Количество строк: ');
read(m);
write('Количество столбцов: ');
read(n);


for i:=1 to m do begin

writeln('Строка ',i,' : ');

for j:=1 to n do begin

write('Столбец ',j,' : ');

readln(a[i,j]);
end;
writeln;
end;

{for i:=1 to m do begin
for j:=1 to n do begin
a[i,j]:=random(5);
write(a[i,j]:5);
end;
writeln;
end;
writeln;}

for i:=1 to m do begin
s:=0;
{if a[i,j]=a[i,j+1] then s:=0;}
for j:=1 to n do begin

if a[i,j]<>a[i,j+1] then s:=s+1 else s:=0;
end;
writeln;
end;
write('Количество строк: ',s);


readkey;
end.
slovetskii вне форума Ответить с цитированием
Старый 24.10.2013, 17:14   #6
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

а если вот так...
Код:
const
  m = 5;
  n = 4;

var
  a: array [1..m, 1..n] of integer;
  f: boolean;
  count: integer;
  i, j, k: integer;

begin
  
  for i := 1 to m do 
  begin
    f := true;
    
    for j := 1 to n - 1 do     
      for k := j + 1 to n do
        if a[i,j] = a[i,k] then
          f := false;     
    
    if f then inc(count);    
  end;
  
end.
P.S. не проверял

Последний раз редактировалось unbanned; 24.10.2013 в 17:17.
unbanned вне форума Ответить с цитированием
Старый 24.10.2013, 17:20   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
  for i:=1 to m do begin
    s:=0;
{    if a[i,j]=a[i,j+1] then s:=0;  }
// все элементы различны 
// надо сравнивать каждый с каждым (двойной цикл!!) j1 j2
//    различны значит НЕ найдется двух таких что они равны.
    ok:=true; //сначала считаем что это так
    for j1:=1 to n do begin 
      for j2:=1 to n do begin 
        if (j1<>j2) //это не мы сами
        and ( a[i,j1]=a[i,j2] ) then ok:=false; // и если найдем равные то изменим
      end;
    end;
    if ok then s:=s+1; //когда проверили ВСЕ пары элементов (после двойного цикла!) смотрим надо увеличить счетчик "правильных" строк

Код:
     for j2:=1 to n do begin  // формально можно  сравнивать каждый с каждым. ( и проверять j1<>j2 !!)
но с предыдущими (где j2<j1) мы уже сравнивали
с собой (j2=j1) сравнивать не надо
поэтому достаточно сравнить с последующими (j2>j1)
Код:
     for j2:=j1+1 to n do begin
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 24.10.2013 в 17:27.
evg_m на форуме Ответить с цитированием
Старый 24.10.2013, 17:24   #8
slovetskii
Новичок
Джуниор
 
Регистрация: 24.10.2013
Сообщений: 4
По умолчанию

а можно как - нибудь без true и false? мы еще не изучали..
slovetskii вне форума Ответить с цитированием
Старый 24.10.2013, 17:29   #9
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

ну тогда просто берешь переменную целочисленную...
Код:
var
 f:integer;
вместо f:= true;

пишешь
Код:
f:= 1;
вместо f:= false;

пишешь
Код:
f:= 0;
ну и сравниваешь тогда
Код:
if f=1 then...

Последний раз редактировалось unbanned; 24.10.2013 в 17:31.
unbanned вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подпрограмма: Дана матрица. Подсчитать количество строк, в которых элемент побочной диагонали четный darkshade Паскаль, Turbo Pascal, PascalABC.NET 9 18.04.2013 23:05
Дана n значимая квадратная матрица, найти строку в которой все элементы четные -на дельфи Спасибо заранее!!! Altynai-93 Помощь студентам 1 12.12.2012 14:27
Дана действительная матрица размером n x m, все элементы которой различны. В каждой строке выбирается эл bayker Помощь студентам 5 30.05.2010 21:32
Найти кол-во её стобцов,все элементы которых различны. Delphi. Flashcherry Помощь студентам 1 21.03.2009 00:46
Дана прямоугольная матрица. Определить количество столбцов, произведение элементов которых меньше 5 Sweeney Паскаль, Turbo Pascal, PascalABC.NET 0 10.12.2008 01:41