Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[Pascal] Поиск мах элемента, с доп. условием

431
11 января 2007 года
sherry
207 / / 16.10.2006
Даётся Nекоторое количество чисел. Определить порядковый номер первого и последнего максимального элемента. Порядок следования чисел не менять, массив не использовать.
9
11 января 2007 года
Lerkin
3.0K / / 25.03.2003
Цитата: sherry
Даётся Nекоторое количество чисел. Определить порядковый номер первого и последнего максимального элемента. Порядок следования чисел не менять, массив не использовать.



А где определена последовательность некоторого количества чисел?
Если в массиве, то

Код:
// N - количество элементов
    // array[] - массив чисел

    int idx_min, idx_max;
    int num_min, num_max;

    idx_min = idx_max = 0;
    num_min = num_max = array[0];

    for( int i = 1; i < N; i++ )
    {
    if( array < num_min )
        idx_min = i, num_min = array;

    if( array > num_max )
        idx_max = i, num_max = array;
    }


что-то, типа этого...
431
11 января 2007 года
sherry
207 / / 16.10.2006
Наверняка ты невнимательно прочитал условие. Там чётко сказано: МАССИВ НЕ ИСПОЛЬЗОВАТЬ! Последовательность вводится с клавиатуры, в свободном порядке...
9
11 января 2007 года
Lerkin
3.0K / / 25.03.2003
Цитата: sherry
...Последовательность вводится с клавиатуры, в свободном порядке...



Ну, так четко надо указывать. В решении массив не использовался...
А, вообще, ты на Pascal сам переведешь?

431
11 января 2007 года
sherry
207 / / 16.10.2006
нет ____________
9
11 января 2007 года
Lerkin
3.0K / / 25.03.2003
Цитата: sherry
нет ____________



Вопросы сняты.

271
11 января 2007 года
MrXaK
721 / / 31.12.2002
считаю что числа только положительные)
Код:
var
 i, m, N, max, k1max, k2max: integer;
 
begin
 max = 0;
 write('N=');
 readln(N);
 for i := 0 to N do begin
    readln(m);
    if( m > max ) then begin
      max := m;
      k1max := i;
      k2max := i;
    end
    else if ( m = max ) then begin
      k2max := i;
    end;
 end;
 writeln('1oe', k1max, '2oe', k2max);
end.

возможно где-то с синтаксисом накосячил ибо паскаль не помню))
622
11 января 2007 года
nilbog
507 / / 19.12.2006
считаю что числа любые )
действительные..
Код:
var i,N,imax1,imax2:integer; max,x:real;
begin
 write('N=');
 read(N); read(x); max:=x;  imax1:=1; imax2:=1;
 for i:=2 to N do
   begin
    read(x);
    if x > max  then
     begin
      max := x;
      imax1 := i;
      imax2 := i
    end
      else if  x = max  then k2max := i
  end;
writeln(imax1,' ',imax2)
end.

2Mr.Hacker
зачем вы где не требуется readln используете
а если вся последовательность будет в строчку вводиться или вообще из внешнего файла
11K
12 января 2007 года
Salamansar
83 / / 29.11.2006
А вот мой вариант:
Код:
program ch;
var st,st1:string;
      i,f,k,mx:integer;
      pn,p:byte;
begin
readln(st);
k:=length(st);
for i:=1 to k do
if st<>' ' do st1:=st1+st
                 else begin
                    val(f,st1,' ');
                    st1:='';
                    if f>mx then begin mx=f;
                                             p:=i;
                                             pn:=i
                                     end;
                    if f=mx then pn:=i
                        end
end.

Предполагается, что числа вводятся через пробел. Типы можно поменять, если используются действительные числа.
622
12 января 2007 года
nilbog
507 / / 19.12.2006
ээ нет
ваш вариант не подходит заданию
строка - тот же массив :)
как говорится что за мания бывае ту людей хранить кучу ненужных данных это раз
а во вторых ваш вариант не только не поэтому не проходит - в TB есть ограничение на длину строки
271
12 января 2007 года
MrXaK
721 / / 31.12.2002
2nilbog
а я не знаю разницу между read и readln)) тока догадываюсь)) паскаль учил в школе, там учили юзать readln))
в моей проге можно readln на read заменить и ничего не поменяется)
622
12 января 2007 года
nilbog
507 / / 19.12.2006
использование readln(x) равносильно использованию read(x);readln;
а в свою очередь readln пропускает строку файла и переводит указатель на начало следущей
наиболее это важно конечно при работе не со стандартными input и output файлами но если рассматривать их то при считывании read(x) в x заносится считанное значение, а если их было считано >1 то оставшиеся заносятся в буфер и будут использованы при последующем вызове read
надеюсь не сумбурно изложил
11K
13 января 2007 года
Salamansar
83 / / 29.11.2006
Цитата:
строка - тот же массив


В общем-то да, но все же не зря ее выделили в отдельный тип. У него есть свои особенности и отличия от массива - это можно сказать полумассив, а про это ничего сказано не было. Но я могу и ошибаться:)

Цитата:
в TB есть ограничение на длину строки


Вот это уже куда серьезное препятствие, но можно усовершенствовать программу, правда она будет довольно громоздкой. Я хотел показать альтернативу, видимо неудачную, но меня смущает в вашей программе только одно - в начале нужно вводить количество элементов - на этом многое завязано, поэтому пользователю нужно считать количество введенных чисел, а это не слишком удобно.

242
13 января 2007 года
Оlga
2.2K / / 04.02.2006
Цитата:
В общем-то да, но все же не зря ее выделили в отдельный тип. У него есть свои особенности и отличия от массива - это можно сказать полумассив, а про это ничего сказано не было. Но я могу и ошибаться


ошибаешься, строка - это массив символов, а не полумассив :)
массивы могут быть разных типов.

622
13 января 2007 года
nilbog
507 / / 19.12.2006
кстати если отойти от BP и вернуться к стандарту паскаля (не нужно вот только сейчас реплик "да кому он нужен") то там нет стандартного типа string а строки задаются конструктором packed array[1..N] of char {N>=1}
если вернуться к "ненаглядному" BP то строку можно задать string а можно string[10] или string[50]
кстати по сути в BP string то же самое что string[255]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог