Нужно определить длину максимальной возрастающей по длине последовательности целых подряд идущих случайных чисел. Те, например, в последовательности 3 4 6 7 5 2 7 0 ответ будет 4, тк тут последовательность будет 3 4 6 7. Не получается составить алгоритм для проги, помогите, пожалуйста
Не через массивы, если что
Другие языки программирования и технологии
Помогите, пожалуйста, с алгоритмом для проги.
С Новым 2016 годом!
$ cat maxacc.c
#include <stdio.h>
#include <limits.h>
int
main ()
{
int npred = INT_MIN, ncur, count = 0, maxcount = 0;
while (scanf ("%d", &ncur) != EOF) {
if (ncur > npred) count++;
else {
if (count > maxcount) maxcount = count;
count = 0;
}
npred = ncur;
}
printf ("%d\n", maxcount);
return 0;
}
$ make maxacc
cc maxacc.c -o maxacc
$ echo 3 4 6 7 5 2 7 0 | ./maxacc
4
$ cat maxacc.c
#include <stdio.h>
#include <limits.h>
int
main ()
{
int npred = INT_MIN, ncur, count = 0, maxcount = 0;
while (scanf ("%d", &ncur) != EOF) {
if (ncur > npred) count++;
else {
if (count > maxcount) maxcount = count;
count = 0;
}
npred = ncur;
}
printf ("%d\n", maxcount);
return 0;
}
$ make maxacc
cc maxacc.c -o maxacc
$ echo 3 4 6 7 5 2 7 0 | ./maxacc
4
Условие ужасно сформулировано. Не "возрастающей по длине последовательности", а "максимальной длины подпоследовательности возрастающих по величине чисел". И строго или не строго возрастающей?
Сделаю для строго, в двух вариантах.
Для ввода чисел с клавиатуры:
program mlp1;
var i,k,m,n,a,b:integer;
begin
k:=1; m:=1; write('n: '); readln(n); writeln('Enter ',n,' numbers:'); read(a);
for i:=2 to n do
begin read(b); if b>a then k:=k+1 else k:=1; if k>m then m:=k; a:=b end;
readln; writeln(m); readln
end.
Для псевдослучайных чисел, генерируемых программой:
program mlp2;
var i,k,m,n,a,b:integer;
begin
k:=1; m:=1; write('n: '); readln(n); randomize;
a:=-99+random(199); write(a:4);
for i:=2 to n do
begin
b:=-99+random(199); write(b:4);
if b>a then k:=k+1 else k:=1; if k>m then m:=k; a:=b
end;
writeln; writeln('m=',m); readln
end.
Сделаю для строго, в двух вариантах.
Для ввода чисел с клавиатуры:
program mlp1;
var i,k,m,n,a,b:integer;
begin
k:=1; m:=1; write('n: '); readln(n); writeln('Enter ',n,' numbers:'); read(a);
for i:=2 to n do
begin read(b); if b>a then k:=k+1 else k:=1; if k>m then m:=k; a:=b end;
readln; writeln(m); readln
end.
Для псевдослучайных чисел, генерируемых программой:
program mlp2;
var i,k,m,n,a,b:integer;
begin
k:=1; m:=1; write('n: '); readln(n); randomize;
a:=-99+random(199); write(a:4);
for i:=2 to n do
begin
b:=-99+random(199); write(b:4);
if b>a then k:=k+1 else k:=1; if k>m then m:=k; a:=b
end;
writeln; writeln('m=',m); readln
end.
еще проще чем через массивы...
Похожие вопросы
- Помогите пожалуйста создать алгоритм!
- Помогите пожалуйста по алгоритмам. Написать программу.
- Информатика. Программирование. Обработка массивов данных. Помогите составить алгоритм и прог. код к нему.
- народ помогите пожалуйста) надо сделать прогу на pascal)
- Умные люди есть тут?;)) ) Помогите, пожалуйста, с домашней работой по информатике. Нужно в Паскале составить алгоритм реш
- Помогите пожалуйста! Как Разработать алгоритм нахождения суммы и кол-ва четных чисел натурального ряда, кот. >K, но
- очень нужно, помогите пожалуйста. Приведите словесное описание алгоритма сложения двух обыкновенных дробей a/b и c/d
- Помогите пожалуйста. Нужен в программе цикл или можно обойтись оператором if? (прога внутри)
- помогите пожалуйста. случайно фарматнул диск D там были важные документы, какие проги могут восстановить хотябы частично
- Спецы по прогам и вирусам, помогите, пожалуйста! Ноутбуку полный пипец.