[Pascal] Поиск мах элемента, с доп. условием
А где определена последовательность некоторого количества чисел?
Если в массиве, то
// 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;
}
что-то, типа этого...
Ну, так четко надо указывать. В решении массив не использовался...
А, вообще, ты на Pascal сам переведешь?
Вопросы сняты.
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.
возможно где-то с синтаксисом накосячил ибо паскаль не помню))
действительные..
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 используете
а если вся последовательность будет в строчку вводиться или вообще из внешнего файла
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.
Предполагается, что числа вводятся через пробел. Типы можно поменять, если используются действительные числа.
ваш вариант не подходит заданию
строка - тот же массив :)
как говорится что за мания бывае ту людей хранить кучу ненужных данных это раз
а во вторых ваш вариант не только не поэтому не проходит - в TB есть ограничение на длину строки
а я не знаю разницу между read и readln)) тока догадываюсь)) паскаль учил в школе, там учили юзать readln))
в моей проге можно readln на read заменить и ничего не поменяется)
а в свою очередь readln пропускает строку файла и переводит указатель на начало следущей
наиболее это важно конечно при работе не со стандартными input и output файлами но если рассматривать их то при считывании read(x) в x заносится считанное значение, а если их было считано >1 то оставшиеся заносятся в буфер и будут использованы при последующем вызове read
надеюсь не сумбурно изложил
В общем-то да, но все же не зря ее выделили в отдельный тип. У него есть свои особенности и отличия от массива - это можно сказать полумассив, а про это ничего сказано не было. Но я могу и ошибаться:)
Вот это уже куда серьезное препятствие, но можно усовершенствовать программу, правда она будет довольно громоздкой. Я хотел показать альтернативу, видимо неудачную, но меня смущает в вашей программе только одно - в начале нужно вводить количество элементов - на этом многое завязано, поэтому пользователю нужно считать количество введенных чисел, а это не слишком удобно.
ошибаешься, строка - это массив символов, а не полумассив :)
массивы могут быть разных типов.
если вернуться к "ненаглядному" BP то строку можно задать string а можно string[10] или string[50]
кстати по сути в BP string то же самое что string[255]