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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2010, 21:51   #1
V@mpir
Пользователь
 
Регистрация: 18.03.2009
Сообщений: 54
По умолчанию Номер совпадения

Необходимо найти ПЕРВЫЙ совпавший элемент, у меня упорно получается последний, думаю что ошибка в цикле, не как не могу выйти из цикла на первом элементе, он продолжает прогонять до конца.

Код:
var a:array [1..5] of integer;
     i,r,q:integer;
begin
randomize;
o:=0;
for i:= 1 to 5 do
begin
 a[i]:=random(3);
  writeln (a[i]);
  end;
   readln (q);
    for i:=1 to 5 do
    begin
    if q=a[i] then
      r:=i;
    end;
  writeln ('Nomer sovapadenia',' ' , r);
    writeln;
 readln;
 { TODO -oUser -cConsole Main : Insert code here }

 end.

Последний раз редактировалось Stilet; 22.01.2010 в 12:17.
V@mpir вне форума Ответить с цитированием
Старый 21.01.2010, 22:14   #2
Сергeй
Заблокирован
 
Регистрация: 14.01.2010
Сообщений: 92
По умолчанию

> не как не могу выйти из цикла

Стыдно не знать ни Паскаль ни русский)

По-русски - "никак"
По Вирту прерывание цикла - break

))
Сергeй вне форума Ответить с цитированием
Старый 21.01.2010, 22:34   #3
V@mpir
Пользователь
 
Регистрация: 18.03.2009
Сообщений: 54
По умолчанию

Прерывать после присвоения номера совпадения переменной
Цитата:
r:=i;
или после, пробовал и так и так не получается...
Либо выводит ноль, либо вообще ничего не выводит.
V@mpir вне форума Ответить с цитированием
Старый 21.01.2010, 22:45   #4
Сергeй
Заблокирован
 
Регистрация: 14.01.2010
Сообщений: 92
По умолчанию

Ты вообще в курсе понятий - "простой" и "составной" оператор языка Паскаль ?

Последний раз редактировалось Сергeй; 21.01.2010 в 22:48.
Сергeй вне форума Ответить с цитированием
Старый 21.01.2010, 23:12   #5
V@mpir
Пользователь
 
Регистрация: 18.03.2009
Сообщений: 54
По умолчанию

Есть что по существу?

Код:
var a:array [1..5] of integer;
i,r,q,n:integer;
begin
randomize;
for i:= 1 to 5 do
begin
a[i]:=random(3);
writeln (a[i]);
end;
readln (q);
for i:=1 to 5 do
begin
if q=a[i] then
  break;
end;
 r:=i;

writeln ('Nomer sovapadenia',' ' , r);
writeln;
readln;
И стоило это такого пафоса...

Последний раз редактировалось Stilet; 22.01.2010 в 12:17.
V@mpir вне форума Ответить с цитированием
Старый 21.01.2010, 23:13   #6
Сергeй
Заблокирован
 
Регистрация: 14.01.2010
Сообщений: 92
По умолчанию

А ты считаешь что я от балды задал тебе наводящий вопрос ?)
Сергeй вне форума Ответить с цитированием
Старый 21.01.2010, 23:15   #7
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от V@mpir Посмотреть сообщение
Есть что по существу?
Тут в общем два пути: первый - начать цикл с конца, и второй(получше в данном случае) вам уже сказали - прервать цикл, когда найдено первое совпадение
Код:
for i := 1 to 5 do
    if q = a[i] then
    begin
        r := i;
        break;
    end;
Цитата:
Сообщение от V@mpir
Код:
for i:=1 to 5 do
begin
if q=a[i] then
break;
end;
r:=i;
кстати, так лучше не надо, в Паскале не определено значение i после выхода из цикла

Последний раз редактировалось netrino; 21.01.2010 в 23:39. Причина: исправил ошибку
netrino вне форума Ответить с цитированием
Старый 21.01.2010, 23:42   #8
Сергeй
Заблокирован
 
Регистрация: 14.01.2010
Сообщений: 92
По умолчанию

> в Паскале не определено значение i после выхода из цикла

Глупость сморозил.
Сергeй вне форума Ответить с цитированием
Старый 22.01.2010, 00:18   #9
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Сергeй Посмотреть сообщение
> в Паскале не определено значение i после выхода из цикла

Глупость сморозил.
Увы, но это действительно так...
Во многих случаях счётчик будет иметь ожидаемое значение, но не всегда. Не стоит надеяться на случайность
netrino вне форума Ответить с цитированием
Старый 22.01.2010, 12:20   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Сергeй
Между прочим Нетрино прав.
Не рекомендуется использовать FOR если значение счетчика буден нужно после него. Я не знаю почему именно так происходит но в некоторых случаях действительно нельзя (и даже компилятор это запрещает) использовать значение счетчика после цикла FOR.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
stringgrid,сравнение двух столбцов на совпадения и не совпадения betirsolt БД в Delphi 7 19.01.2010 15:09
Совпадения shad0w Microsoft Office Excel 3 21.08.2009 12:42
Не могу разобраться с сравнением 2-х двумерных масивов на совпадения текста tj_pablo Общие вопросы C/C++ 0 11.03.2009 22:21
как вывести факт совпадения? Dennikid Общие вопросы Delphi 0 29.10.2008 16:05
Имя и номер KAMASUTR Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 10.08.2007 22:26