Köməyinizə görə çox sağ olun. mənə də belə bir nümunə lazım idi. üzərində işləməyim üçün, bir fikir formalaşdı. minnətdaram :)
Salam. Maraqlı kusr işi mövzunuz var. Kömək olaraq aşağıdakı kodu təklif edə bilərəm.
Bu kod verilmiş ədədlər ardıcıllığı içərisində monton artan bütün alt ardıcıllıqları və onların uzunluğunu çap edir. Amma onların içərisindən ən uzununu seçmək üçün proqram kodunda dəyişiliyi etmək öz üzərinizə düşür.
[code]#include <iostream>
#define MAX_EL 100
int ard[MAX_EL] = {0};
int say=0;
int yoxla(int *, int, int);
void daxil_et(int *);
void cap_et(int *, int, int);
int main(){
int i,j,k;
daxil_et(ard);
for(i=0; i<say; ++i ){
k=yoxla(ard,i,say);
if (k!=i) cap_et(ard,i,k);
i=k;
}
}
// ard cergesinde monotonlugun pozuldugu movqeni
// qaytar, eger n qaytarilirsa onda cegenin
// k-dan n-e kimi elementleri monotondur
int yoxla(int ard[], int k, int n){
int i;
for(i=k; i<n; ++i)
if (ard[i]>ard[i+1]) break;
return i;
}
void daxil_et(int ard[]){
int i;
std::cout<<"Ededler ardicilligini daxil edin\n"
<<"Sonu bildirmek ucun -500 daxil edin\n";
i=0;
do{
std::cin>>ard[i];
}while(ard[i++]!=-500);
say = i-1; //sonuncu ededi (-500) nezere almiriq
}
void cap_et(int *ard, int k, int n){
int i;
for(i=k; i<=n; ++i)
std::cout<<ard[i]<<" ";
std::cout<<" uzunluq = "<<(n-k+1)<<"\n";
}
[/code]
Test eliyək:
[user@unix tmp]$
[user@unix tmp]$ g++ mon.cpp -o mon
[user@unix tmp]$ ./mon
Ededler ardicilligini daxil edin
Sonu bildirmek ucun -500 daxil edin
1 2 4 3 67 3 67 34 5 6 34 6 8 7 9 0 34 2 45 3 4 5 6 7 8 9 0 34 -500
1 2 4 uzunluq = 3
3 67 uzunluq = 2
3 67 uzunluq = 2
5 6 34 uzunluq = 3
6 8 uzunluq = 2
7 9 uzunluq = 2
0 34 uzunluq = 2
2 45 uzunluq = 2
3 4 5 6 7 8 9 uzunluq = 7
0 34 uzunluq = 2
[user@unix tmp]$
[user@unix tmp]$