Паскаль. Пожалуйста, помогите найти ошибку!
Доброго времени суток!
Недавно начал изучать паскаль, встретился с такой вот задачкой: Дана целочисленная таблица А[1:10]. Подсчитать количество i, таких, чтобы A[i] было больше всех предыдущих элементов таблицы. Извиняюсь, что не умею делать листинги, поэтому пишу своё решение текстом. (решение без куска, где заполняется массив): s:=0; for i:=2 to 10 do begin r:=1; while (r<i) and (a[i]>a[i-r]) do r:=r+1; if r=i then s:=s+1 else end; writeln(s); end. Собственно, программа запускается, но при любых значениях элементов массива переменная s выводится со значением 0. Пожалуйста, подскажите, в чём ошибка |
вроде так. прогу не "отлаживал"
Код:
const n = 10; |
Цитата:
Единственное - строку if r=i then s:=s+1 else я заменил строкой if r=i then s:=s+1; Потому что этот else ту ни к селу, ни к городу. Но и с ним, т.е. в исходном варианте, тоже работает. Я для пробы вставил for i:=1 to 10 do a[i]:=i; и получил, как и ожидал, 9. Так что ошибка где-то как раз в невыложенной части, т.е. во вводе массива. |
Благодарю за помощь, но видимо, я допускаю где то ошибки в синтаксисе, ибо у меня и в Вашем случае у меня К=0. Массивы заполнял корявенько с помощью
for i:=1 to 10 do readln(a[i]); for j:=1 to 10 do readln(a[j]); оба массива имели одинаковые значение (в первом случае от 1 до 10, во втором случае от 10 до 1, в третьем случае все элементы, кроме третье имели значение 234, а третий = 2345) Вопросы: 1) подскажите,пожалуйста, как вставлять листинги? 2) inc(i) - увеличивает значение i на 1, я правильно понял? 3) Объясните, пожалуйста, где ошибка в моём решении, и почему в Вашем у меня такой же результат? |
Ок. Владимир, спасибо, сейчас выложу полностью.
|
Цитата:
Цитата:
Цитата:
|
1) есть как недоделанная стрелочка вниз дополнительные ВВ-Коды там символ диез.
либо написать {CODE}листинг{/CODE} вместо {} поставить [] 2)да 3) ошибки не знаю. возможно ее и нету. возможно у вас что-то с компилятором. есть одна очень полезная штука в паскале для отладки(если бы такие были везде было бы супер) зайдите в меню паскаля debug -> Watch сделайте окошко синее по размеру чтоб было видно watch (они находятся в одном окне но примерно как в пэинте можно изменять размеры "холста") два раза клацните на "окошко" Watch и вбейте туда переменную -> ок потом на зеленой полоске опять и т.д. а дальше перейдите в "окошко" с листингом и клавишей F8 прогоняйте прогу. попутно замечайте что происходит с переменными |
Большое спасибо за помощь!)
Сейчас занаво переписал программу-заработало. Сравниваю нынешний код с выложенным на сайте - тоже самое. Спасибо и за остальные подсказки) Да, Watch - оч полезная штука. Cейчас буду разберираться с кодом который предлжил kreol. Кстати, kreol, в Вашем варианте нужно заполнять два идентичных массива, или я что-то мудрю? |
ээ нет. один. но я код не проверял. кст то, что вы предложили в
Цитата:
a единственное что у них разные индексы. вернее в данном случае просто индекс представляет две разные переменные и еще в моем листинге два слова var этого делать нельзя) только один раз |
да, точно) массив A, а номер элемента как раз и задан в скобках.
Вообщем, kreol, Ваш код тоже заработал, только с поправкой на обнуление счётчика l после inc(k). Большое спасибо за помощь) |
Часовой пояс GMT +4, время: 13:02. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.