Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Pascal] Замена break


Автор: N2N 2.7.2007, 08:43
1. Чем можно заменить word ? (Integer???)

2. Чем можно заменить break ?

Автор: Rodman 2.7.2007, 09:02
Цитата(N2N @  2.7.2007,  07:43 Найти цитируемый пост)
1. Чем можно заменить word ? (Integer???)

можно и так... смотря для каких целей!!!
Цитата(N2N @  2.7.2007,  07:43 Найти цитируемый пост)
2. Чем можно заменить break ? 

тоже самое не совсем понятно для чего...
break - выход из цикла
может подойдет
exit - но эта команда выкидывает из процедуры!
halt - из проги!

Автор: N2N 2.7.2007, 09:32
2. Мне нужно этот кусок кода:

Код

If j > T then break;


переделать так, чтобы не использовались ни break ни exit.
Может дополнительную переменную завести или что-то в этом роде?

Автор: Rodman 2.7.2007, 15:22
что вооще ты хочешь добиться???

Автор: N2N 2.7.2007, 15:45
Программа должна быть упрошена, не использовать break exit

Автор: Rodman 2.7.2007, 16:05
Цитата(N2N @  2.7.2007,  14:45 Найти цитируемый пост)
Программа должна быть упрошена, не использовать break , exit 

тонкое замечание!!!

но какая программа???

Автор: N2N 2.7.2007, 17:05
Код

var
M: integer;
arr : array [1..10000] of integer;
i,j,k : integer;
item : integer;
begin
read(M);
for i := 1 to M do
read(arr[i]);
for i := 1 to M - 1 do begin
if i > (M - 1) then break;
item := arr[i];
for j := i + 1 to M do begin
if j > M then break;
if item = arr[j] then begin
for k := j to M - 1 do
arr[k] := arr[k + 1];
M := M - 1;
end;
end;
end;
write(M);
end.

Автор: likehood 2.7.2007, 17:47
Код

var
M: integer;
arr : array [1..10000] of integer;
i,j,k : integer;
item : integer;
begin
    read(M);
    for i := 1 to M do
    read(arr[i]);
    i:=1;
    //for i := 1 to M - 1 do begin
    while i <= M-1 do begin
        //if i > (M - 1) then break;
        item := arr[i];
        j:=i+1;
        //for j := i + 1 to M do begin
        while j <= M do begin
            //if j > M then break;
            if item = arr[j] then begin
                for k := j to M - 1 do
                    arr[k] := arr[k + 1];
                M := M - 1;
            end;
            j:=j+1;
        end;
        i:=i+1;
    end;
write(M);
end.

Автор: N2N 2.7.2007, 21:10
Цитата(likehood @ 2.7.2007,  17:47)
Код

var
M: integer;
arr : array [1..10000] of integer;
i,j,k : integer;
item : integer;
begin
    read(M);
    for i := 1 to M do
    read(arr[i]);
    i:=1;
    //for i := 1 to M - 1 do begin
    while i <= M-1 do begin
        //if i > (M - 1) then break;
        item := arr[i];
        j:=i+1;
        //for j := i + 1 to M do begin
        while j <= M do begin
            //if j > M then break;
            if item = arr[j] then begin
                for k := j to M - 1 do
                    arr[k] := arr[k + 1];
                M := M - 1;
            end;
            j:=j+1;
        end;
        i:=i+1;
    end;
write(M);
end.

Строчки выделенные синим курсивом нужно вырезать?

Автор: Rodman 3.7.2007, 08:15
Цитата(N2N @  2.7.2007,  20:10 Найти цитируемый пост)
Строчки выделенные синим курсивом нужно вырезать? 

да...это коментарии!!!

Автор: N2N 3.7.2007, 09:30
Цитата(Rodman @ 3.7.2007,  08:15)
Цитата(N2N @  2.7.2007,  20:10 Найти цитируемый пост)
Строчки выделенные синим курсивом нужно вырезать? 

да...это коментарии!!!

Спасибо за пояснения

Добавлено @ 09:37
Спасибо огромное за помощь.

А здесь как избавиться от BREAK?

Код

Var
a,b,q,j,k: Integer;
Begin
readln(a,b);
for q := a to b do
Begin
k :=0
for j := 2 to sqrt(q) do
Begin
If q Mod j = 0 then
Begin
k := 1;
break;
End;
End;
If k = 0 then
write(q, ', ');
End;
End.

Автор: Rodman 3.7.2007, 10:41
ты вооще пробовал компилить???


что такое i???

Автор: N2N 3.7.2007, 11:24
Цитата(Rodman @ 3.7.2007,  10:41)
ты вооще пробовал компилить???


что такое i???

Это не i , это q. Я ошибся когда перепечатывал.
Да, компилил - работает, нужно только break заменить.
ПОмогите пожалуйста

Автор: Rodman 3.7.2007, 11:42
Код

Var
a,b,q,j,k: Integer;
Begin
readln(a,b);
for q := a to b do
Begin
k :=0;
j := 2;
while ((j<=sqrt(q))and(q Mod j <> 0))do
  k := 1;
If k = 0 then
  write(q, ', ');
End;
End.

Автор: N2N 22.8.2007, 18:46
Цитата(Rodman @ 3.7.2007,  11:42)
Код

Var
a,b,q,j,k: Integer;
Begin
readln(a,b);
for q := a to b do
Begin
k :=0;
j := 2;
while ((j<=sqrt(q))and(q Mod j <> 0))do
  k := 1;
If k = 0 then
  write(q, ', ');
End;
End.

ошибка type mismatch

Автор: Rodman 22.8.2007, 19:07
где?

Автор: N2N 22.8.2007, 19:26
Цитата(N2N @ 22.8.2007,  18:46)
Цитата(Rodman @ 3.7.2007,  11:42)
Код

Var
a,b,q,j,k: Integer;
Begin
readln(a,b);
for q := a to b do
Begin
k :=0;
j := 2;
while ((j<=sqrt(q))and(q Mod j <> 0
Код

))
 do
  k := 1;
If k = 0 then
  write(q, ', ');
End;
End.

ошибка type mismatch

выделил. шестая строчка снизу, на завершающих скобках

Автор: Rodman 22.8.2007, 19:32
блин... какой у тебя компилер? у меня все в порядке...

Автор: volvo877 23.8.2007, 12:38
Rodman, а J увеличивать кто будет?

Автор: Rodman 23.8.2007, 13:07
не уверен - надо ли?!

Автор: volvo877 23.8.2007, 13:28
Ну, если автора устроит "вечный цикл", то и не надо... 

При q = 5, например, сколько времени тебе хватит подождать, прежде чем ты нажмешь Ctrl+Break? Запускать программы для того чтобы удостовериться в правильной работе теперь не принято?

Я бы вообще сделал вот так:
Код

Var
a,b,q,j,k: Integer;
Begin
  readln(a,b);
  for q := a to b do begin

    k := 0;
    j := 2;

    while (j <= sqrt(q)) and (k = 0) do begin
      if (q Mod j = 0) then k := 1
      else inc(j)
    end;

    if k = 0 then write(q, ', ');
  end;
end.

Автор: N2N 26.8.2007, 08:10
Спасибо за помощь, парни! Переписал всё по своему - работает как надо. За советы респект

То Родман: Ваша программа висла, выдавая в ответе первое заданное число

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)