Помощь - Поиск - Пользователи - Календарь
Полная версия: Числовая последовательность
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Lauri
Задача такая - определить, являются ли введённые числа возрастающей последовательностью?
Вот так я это сделал:
Код

program posled;
uses crt;
var a:string;
    i,j,k:integer;
    b:byte;
    begin
    clrscr;
    writeln('BBEDITE CTPOKY:');
    readln (a);
    j:=length (a);
    for i:=1 to j do
     begin
     if a[i]<a[i+1] then b:=1
     end;

     if b=1 then
     writeln ('DA') else writeln ('HET');
         readln;
     end.


Но не понимаю в чём ошибка - программа работает некорректно... Помогите плиз разобраться..
klem4
Зачем у тебя там строка ? И кстате я так думаю ты хотела использовать массив, ты уверена что он тут нужен ? можно и без него ...
Гость
А зачем же там массив использовать?... тем более я его там и не наблюдаю..) мне кажется со строкой там удобнее (можно длину определить) а в массиве так можно разве?
Pola
Тут либо надо искать противоречие:
Код
  b:=1; {предположение}
    for i:=1 to j-1 do {j-1!!!!}
     begin
       if a[i]>=a[i+1] then b:=0 {противоречие}
     end;


Либо
считать количетсво правильно расположенных пар
и если количество = j-1, то вся последовательность упорядочена
klem4
могу предложить такой вариант :

uses crt;
var
_pred,_succ,n,i : integer;
check : boolean;
begin

write('n = '); readln(n);

writeln('Введите последовательность');

i := 1; check := true;

readln(_pred);

while (i < n) and check do begin
readln(_succ);
check := (_pred < _succ);
_pred := _succ;
inc(i);
end;

writeln(check);

readln;
end.
Pola
klem4, последовательность до конца не будет введена...
из файла было бы не страшно, а с клавы...


Хотя у Lauri скорее цифры сравниваются, чем числа...
klem4
Можно сделать чтобы и до конца, какой только сысл ... представь сколько ты сэкономишь времени если у тебя в файле 100000 элементов а условие возрастания нарушается при первой проврке rolleyes.gif
Pola
Я и говорю, что если бы был файл, то все ok,
а у нее с клавы...
klem4
Ну и что ошибки то нету никакой, я имею в виду рпограмма завернаештся корректно .. можно убрать
and check
и все будет ок ...
Pola
Есть такой выход
вместо readln поставить read в твоем варианте
и просить вввести все числа в одну строуку через пробел
тогда будет не заметно, что ты пользователя прервал на полуслове

Цитата(klem4 @ 15.01.2006 14:53) *

Ну и что ошибки то нету никакой, я имею в виду рпограмма завернаештся корректно .. можно убрать
and check
и все будет ок ...


если убрать
and checK
будет ошибка
klem4
Точно, тогда можно сдеать вот так :

while (i < n)  do begin
readln(_succ);
if check then check := (_pred < _succ);
_pred := _succ;
inc(i);
end;
volvo
Pola, я не понял, ты умеешь только чужие решения критиковать? Свои шедевры ты считаешь зазорным выложить на форуме? dry.gif
Pola
volvo, зачем за других делать?
вот ошибку можно помочь найти

учаться на своих ошибках...
а у меня способности искать ошибки. smile.gif

У меня тоже есть такие способности - искать ошибки, так почему ты мне эти способности не даешь проявить на твоих программах? blum.gif Нехорошо...
Lauri
Да это не выход, даже если read и через пробел, то всё равно некорректно... буду как-нибудь другим способом, благо способов сортировки предостаточно..) всё равно спасибо за помощь;)
Pola
volvo, а уменя пока по своим вопросов к тебе нет tong2.gif

а коды я давала... про стороны треугольника посмотри
и исправляй сколько хошь yes2.gif

Цитата(Lauri @ 15.01.2006 16:09) *

Да это не выход, даже если read и через пробел, то всё равно некорректно... буду как-нибудь другим способом, благо способов сортировки предостаточно..) всё равно спасибо за помощь;)


read и через пробел в проге klem4, а не в твоей

или цикл while в его же проге замени на последний им данный вариант (4 поста выше)
klem4
Чем не понравился вот этот вариант ? Это какраз ТО что тебе нужно, не используется массив и последовательность вводится ПОЛНОСТЬЮ

http://forum.pascal.net.ru/index.php?s=&sh...indpost&p=59065 - пост N11
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.