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

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

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

 
 Ответить  Открыть новую тему 
> Задачка на последовательность, никак не могу решить
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 50
Пол: Мужской
Реальное имя: Андрей

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


Помогите решить задачу, а то никак не получается ... sad.gif
Задача состоит в следующем: Дано целое число N и набор из N вещественных чисел. Если данный набор образует убывающую последовательность, то вывести 0; в противном случае вывести номер первого числа, нарушающего закономерность.
Вот всё что я додумался сделать:

var d:array [-1000..1000] of Real;
    N,i,k,t:Integer;
begin
     WriteLn;
     Write('Введите целое число N:');
     ReadLn(N);
     Write('Введите набор из N вещественных чисел:');
     t:=0;
     for i:=1 to N do
     begin
        t:=t+1;
        Read(d[i]);
        if d[i-1]<d[i] then
          k:=t
        else
          k:=0;
      end;
      WriteLn('k=',k);
      ReadLn;
end.


Но код работает не правильно, подскажите плиз как решить...

Сообщение отредактировано: kent -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






k := 0;
for i:=1 to N do begin
  ReadLn(d[i]); { именно ReadLn, а не Read !!! }
  if (i > 1) and (d[i-1]<d[i]) and (k = 0) then k:=i
end;


Только вот смысл такого объявления:
d:array [-1000..1000] of Real;
не совсем понятен... Зачем первые 1000 элементов (с отрицательными индексами)? Просто так?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 50
Пол: Мужской
Реальное имя: Андрей

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


Большое спасибо volvo!!!

Цитата
Только вот смысл такого объявления:
d:array [-1000..1000] of Real;
не совсем понятен... Зачем первые 1000 элементов (с отрицательными индексами)? Просто так?

Да в принципе, так ещё можно и с отрицательными числами проверить...

Сообщение отредактировано: kent -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






По-моему, ты путаешь отрицательные числа и индексы... То, что ты написал, примерно равняется:
d:array [0..2000] of Real;
, только начало всего этого массива сдвинуто на 1000 элементов влево (за 0), и первый элемент массива будет не d[0], а d[-1000]...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Кстати, если тебе не нужно СОХРАНЯТЬ эту последовательность, то можно обойтись вообще без массива. Только с двумя переменными.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 50
Пол: Мужской
Реальное имя: Андрей

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


Цитата(volvo @ 2.07.05 16:58)
По-моему, ты путаешь отрицательные числа и индексы... То, что ты написал, примерно равняется:
d:array [0..2000] of Real;
, только начало всего этого массива сдвинуто на 1000 элементов влево (за 0), и первый элемент массива будет не d[0], а d[-1000]...

Я этого не знал честно говоря, паскалем занимаюсь всего лишь две недели.
Спасибо что поправил...

Сообщение отредактировано: kent -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Профи
****

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

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


Цитата
d:array [0..2000] of Real;
И не от нуля надо, а от единицы.
Цитата
for i:=1{<--- } to N do


и вообще зачем массив?

Предыдущие сообщения читаем ВНИМАТЕЛЬНО !!!

Сообщение отредактировано: volvo -


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Пионер
**

Группа: Пользователи
Сообщений: 50
Пол: Мужской
Реальное имя: Андрей

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


Цитата
Кстати, если тебе не нужно СОХРАНЯТЬ эту последовательность, то можно обойтись вообще без массива. Только с двумя переменными.

А как не подскажешь? Массив это первое что пришло мне в голову...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Профи
****

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

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


kent, кстати, у тебя выводится последнее, а не первое число, нарушающее последовательность, и переменная t - совершенна лишняя (вместо неё можно ставить i).

Вот вариант без массива:
var new, old : Real;
    N,i,k : Integer;
begin
     WriteLn;
     Write('Введите целое число N:');
     ReadLn(N);
     Write('Введите набор из N вещественных чисел:');
     ReadLn(old);
     k := 0;
     for i := 2 to N do begin
       ReadLn(new);
       if (k = 0) and (new >= old) then k := i;
       old := new;
     end;
     WriteLn('k=', k);
     ReadLn;
end.


2 volvo: прошу прощения, когда я последний раз обновлял страницу, твоего поста ещё не было.


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Цитата(Archon @ 2.07.05 16:43)
kent, кстати, у тебя выводится последнее, а не первое число, нарушающее последовательность, и переменная t - совершенна лишняя (вместо неё можно ставить i).


Естественно, когда ты писАл вот это, ВТОРОГО поста тоже еще не было?
Устное предупреждение.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Такой вопрос : обязательно вводить всю последовательность ? Ведь можно остановить ввод, когда найдено первое несоответствие, или по заданию обязательно полностью ввести сначала ?


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Пионер
**

Группа: Пользователи
Сообщений: 50
Пол: Мужской
Реальное имя: Андрей

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


Archon, спасибо за вариант без массива!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Незачто. :D :D :D
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Помогите адаптировать эту задачю под delphi 7!
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 15.04.2025 11:03
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name