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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2010, 19:13   #1
Nastik
 
Регистрация: 07.06.2010
Сообщений: 9
По умолчанию Pascal, Массивы

Задача имеет следующее содержание:

Определить номера тех строк целочисленной матрицы А[N,K], которые совпадают с массивом D[K]. Если таких строк нет, выдать соответствующее сообщение.

Вот что у меня есть:

Program primer;
Uses crt;
Const L=5; M=7;
Var K, N: integer;
D: Array [1..L] of real;
A: Array [1..M,1..L] of real;
Begin
Clrscr;
For K:=1 to L do
Begin
Write (‘D[‘, K, ‘]=’);
Read (D[K]);
End;
For N:=1 to M do
For K:=1 to L do
Begin
Write (‘A[‘, N, K, ‘]=’);
Read (A[N,K]);
End;
For N:=1 to M do
If A[N,K]=D[K] then writeln (‘N=’, N)
Else writeln (‘Net covpadeniy’);
Readkey;
End.

Помогите разобраться с последним циклом....Моя программа выдаёт почему-то неправильный результат..((((
Nastik вне форума Ответить с цитированием
Старый 07.06.2010, 19:37   #2
Kazik
Форумчанин
 
Регистрация: 27.05.2009
Сообщений: 192
По умолчанию

попробуй так...
Program primer;
Uses crt;
Const L=5; M=7;
Var K, N: integer;
D: Array [1..L] of real;
A: Array [1..M,1..L] of real;
f:boolean;
Begin
Clrscr;
For K:=1 to L do
Begin
Write (‘D[‘, K, ‘]=’);
Read (D[K]);
End;
For N:=1 to M do
For K:=1 to L do
Begin
Write (‘A[‘, N, K, ‘]=’);
Read (A[N,K]);
End;
For N:=1 to M do
begin
k:=1;
while k<=l do
begin
If A[N,K]=D[K] then f:=true
Else
begin
f:=false;
k:=l;
end;
k++;
end;
if f=true then writeln (‘N=’, N);
end;
Readkey;
End.
Kazik вне форума Ответить с цитированием
Старый 07.06.2010, 19:47   #3
Nastik
 
Регистрация: 07.06.2010
Сообщений: 9
По умолчанию

k++;

А что значит эта строчка??
Я программу ввожу,запускаю,ввожу все цифры...И когда программа должна дать результат,она просто зависает!(((
Nastik вне форума Ответить с цитированием
Старый 07.06.2010, 20:08   #4
Kazik
Форумчанин
 
Регистрация: 27.05.2009
Сообщений: 192
По умолчанию

вместо K++ запиши k:=k+1
и посмотри так ли ты записала что выделена жирным
while k<=L do
begin
If A[N,K]=D[K] then f:=true
Else
begin
f:=false;
k:=L;
Kazik вне форума Ответить с цитированием
Старый 07.06.2010, 20:24   #5
Nastik
 
Регистрация: 07.06.2010
Сообщений: 9
По умолчанию

Круто!)))Получилось)))))
Спасибо большое!)))
Только можно несколько вопросов задать,а то моей преподовательнице нужно всё по строчкам объяснять!(((

1. Что означает эта сточка:
f:boolean;
2. Почему взяли именно while? Что бы программа проверяла каждый элемент строки,да?

Последний раз редактировалось Nastik; 07.06.2010 в 20:28.
Nastik вне форума Ответить с цитированием
Старый 07.06.2010, 20:38   #6
Kazik
Форумчанин
 
Регистрация: 27.05.2009
Сообщений: 192
По умолчанию

f:boolean; означает что мы задаем переменную логического типа..
ты наверное заметила что она принимает только значение true(да) или false(нет).
while использовали чтобы программа проверяла каждый элемент строки, но если встречала элементы в строке не совпадающие с элементом массива D[K], то сразуже переходила на проверку другой строки
Kazik вне форума Ответить с цитированием
Старый 07.06.2010, 20:44   #7
Nastik
 
Регистрация: 07.06.2010
Сообщений: 9
По умолчанию

Всё,поняла я!!
Спасибо ещё раз большое!!)))
Nastik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы в Pascal Шахрия Помощь студентам 2 13.10.2009 20:01
массивы Pascal -ushёl- Помощь студентам 3 23.03.2009 06:45
Pascal/Массивы ромка) Паскаль, Turbo Pascal, PascalABC.NET 6 14.06.2008 18:29
Pascal. Массивы Danilyuk Помощь студентам 1 22.01.2008 19:56