IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Что не так с Halt?
avp
сообщение 28.10.2005 20:56
Сообщение #1





Группа: Пользователи
Сообщений: 7
Пол: Женский

Репутация: -  0  +


Программа завершается при использовании halt, ПОМОГИТЕ ИСПРАВИТЬ ОШИБКУ
Код
const MaxSize=100;
var A:array[1..MaxSize] of integer; {Массив элементов}
   Elem:array[1..MaxSize] of integer; {Массив номеров элементов}
   I,
   MaxA, {Количество элементов в массиве A    }
   MaxElem:integer; {Количество элементов в массиве Elem }

function IsSimple(M:integer):boolean;
{ Функция возвращает true если число простое }
var k:integer;
begin
 if M<0 then
 begin IsSimple:=false;
 exit;
 end;
 isSimple:=true;
for k:=2 to M-1 do
 if M mod K = 0 then isSimple:=false;
end;
begin
{Ввод массива}
writeln('Программа находит номера простых элементов');
writeln('Какое количество чисел необходимо обработать?');
readln(MaxA);
if MaxA>MaxSize then
begin{Если количество элементов слишком большое,сообщаем и заканчиваем работу}
 writeln('Число слишком большое, максимальное возможное',MaxSize:4);
 readln;
 halt(1);
end;
writeln('Введите числа:');
for i := 1 to MaxA do
 begin
  write(i:4,': ');
  readln(A[i]);
  if A[i]<1 then
  begin
   writeln('Неверное отрицательное число, изменено на 1');
   A[i]:=1;
  end;
 end;
MaxElem:=0;
for i:=1 to MaxA do
if IsSimple(A[i]) then
begin
 {Если число простое, то увеличиваем MaxElem и заносим его номер в массив}
 MaxElem:=MaxElem+1;
 Elem[MaxElem]:=i;
end;
{Вывод полученных результатов}
for i:=1 to MaxElem do
writeln('№ ',i:4,' № в массиве : ',Elem[i]);
readln;
end.

И 2 задачка, та же самая проблема
Код
const MaxSize=100;
var A:array[1..MaxSize] of integer; {Массив элементов}
    i,j,
    maxA:integer; {Количество элементов в массиве A    }
begin
{Ввод массива}
writeln('Программа вставляет пустые элементы в массив');
writeln('Какой размер массива?');
readln(maxA);
if maxA>MaxSize then
 begin
 {Если количество элементов слишком большое, сообщаем и заканчиваем работу}
  writeln('Число слишком большое, максимальное возможное ',MaxSize:4);
  readln;
  halt(1);
 end;
writeln('Введите элемeнты массива:');
for i := 1 to maxA do
 begin
  write(i:4,': ');
  readln(A[i]);
 end;
{Проверка условия и вставка нулевого элемента}
i:=1;
while i<=maxA do
 begin
  if (A[i]<0) and (A[i] mod 2 <> 0) then
   begin
   {Передвигаем все элементы вправо и вставляем нулевой элемент}
    for j:=maxA downto i+1 do
     A[j+1]:=A[j];
    maxA:=maxA+1;
    A[i+1]:=0;
   end;
  i:=i+1;
 end;
{Вывод результата}
for i := 1 to MaxA do
 writeln('Элемент ',i:3,':  ',A[i]);
readln;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 28.10.2005 21:23
Сообщение #2


Гость






Ну, попробуй тот кусок, где происходит выход по Halt(1), заменить на вот это:
writeln('Программа находит номера простых элементов');
Repeat
writeln('Какое количество чисел необходимо обработать? [1 .. ', MaxSize, ']:');
readln(MaxA);
if MaxA>MaxSize then begin
{ Если количество элементов слишком большое, сообщаем и просим повторить ввод }
writeln('Число слишком большое, повторите ввод...');
end;
Until MaxA <= MaxSize;

Пойдет?
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 10:52
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"