Основы языка программирования C++ с применением объектно-ориентированного программирования. Чернышов М.К. - 59 стр.

UptoLike

Составители: 

friend-ɮɭɧɤɰɢɹ ɡɚɜɢɫɢɬ ɨɬ ɩɚɪɚɦɟɬɪɚ, ɛɭɞɟɬ ɢɫɩɨɥɶɡɨɜɚɬɶɫɹ ɫɜɨɹ
friend-ɮɭɧɤɰɢɹ ɞɥɹ ɤɚɠɞɨɝɨ ɡɧɚɱɟɧɢɹ ɩɚɪɚɦɟɬɪɚ.
x ȿɫɥɢ ɜ ɩɚɪɚɦɟɬɪɢɡɨɜɚɧɧɨɦ ɤɥɚɫɫɟ ɢɦɟɸɬɫɹ ɫɬɚɬɢɱɟɫɤɢɟ (
static)
ɤɨɦɩɨɧɟɧɬɵ, ɬɨ ɞɥɹ ɤɚɠɞɨɝɨ ɡɧɚɱɟɧɢɹ ɩɚɪɚɦɟɬɪɚ ɛɭɞɟɬ ɢɫɩɨɥɶɡɨ-
ɜɚɬɶɫɹ ɫɜɨɣ ɷɤɡɟɦɩɥɹɪ ɫɬɚɬɢɱɟɫɤɨɣ ɤɨɦɩɨɧɟɧɬɵ.
6. ɉɪɢɥɨɠɟɧɢɹ
6.1. Ɂɚɞɚɱɢ ɩɨ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɸ ɧɚ ɹɡɵɤɟ C++
1. ɋɨɫɬɚɜɢɬɶ ɮɭɧɤɰɢɸ ɞɥɹ ɩɨɞɫɱɟɬɚ ɱɢɫɥɚ ɫɟɪɢɣ ɞɥɢɧɨɣ ɧɟ ɦɟɧɟɟ Ʉ ɩɨɥɨ-
ɠɢɬɟɥɶɧɵɯ, ɨɬɪɢɰɚɬɟɥɶɧɵɯ ɱɢɫɟɥ ɢ ɧɭɥɟɣ ɜ ɨɞɧɨɦɟɪɧɨɦ ɦɚɫɫɢɜɟ ɰɟɥɵɯ
ɱɢɫɟɥ. ɋɟɪɢɟɣ ɧɚɡɵɜɚɟɬɫɹ ɩɨɫɥɟɞɨɜɚɬɟɥɶɧɨɫɬɶ ɷɥɟɦɟɧɬɨɜ ɦɚɫɫɢɜɚ, ɩɪɢɧɚɞ-
ɥɟɠɚɳɢɯ ɨɞɧɨɦɭ ɤɥɚɫɫɭ:
int series(int n, int *mas, int *kzero, int *kplus,
int *kminus, int k);
2. ɋɨɫɬɚɜɢɬɶ ɮɭɧɤɰɢɸ ɞɥɹ ɫɥɢɹɧɢɹ ɞɜɭɯ ɭɩɨɪɹɞɨɱɟɧɧɵɯ ɩɨ ɜɨɡɪɚɫɬɚɧɢɸ
ɦɚɫɫɢɜɨɜ ɰɟɥɵɯ ɱɢɫɟɥ:
int merge(int n, int m, int *mas1, int *mas2, int *res);
3. ɋɨɫɬɚɜɢɬɶ ɮɭɧɤɰɢɸ ɞɥɹ ɩɨɫɬɪɨɟɧɢɹ ɫɩɢɫɤɚ ɢɧɞɟɤɫɨɜ (ɧɨɦɟɪɨɜ), ɫɬɪɨɤ
ɭɩɨɪɹɞɨɱɟɧɧɨɝɨ ɩɨ ɜɨɡɪɚɫɬɚɧɢɸ ɷɥɟɦɟɧɬɨɜ ɡɚɞɚɧɧɨɝɨ (
k-ɝɨ) ɫɬɨɥɛɰɚ ɦɚɬ-
ɪɢɰɵ. ɗɥɟɦɟɧɬɵ ɦɚɬɪɢɰɵ - ɰɟɥɵɟ ɱɢɫɥɚ:
void sort(int n, int *mas, int k, int* index);
4. ɋɨɫɬɚɜɢɬɶ ɮɭɧɤɰɢɸ ɞɥɹ ɨɩɪɟɞɟɥɟɧɢɹ ɷɥɟɦɟɧɬɚ ɦɚɬɪɢɰɵ, ɹɜɥɹɸɳɟɝɨɫɹ
ɫɟɞɥɨɜɨɣ ɬɨɱɤɨɣ. ɋɟɞɥɨɜɨɣ ɬɨɱɤɨɣ ɧɚɡɵɜɚɟɬɫɹ ɷɥɟɦɟɧɬ, ɭɞɨɜɥɟɬɜɨɪɹɸɳɢɣ
ɭɫɥɨɜɢɹɦ:
a[k,l]=max min(a[i,j])=min max(a[i,j])
i<=n,j<=m j<=m,i<=n
ȿɫɥɢ ɫɟɞɥɨɜɨɣ ɬɨɱɤɢ ɧɟɬ, ɭɫɬɚɧɨɜɢɬɶ
k=l=-1.
5. ɋɨɫɬɚɜɢɬɶ ɮɭɧɤɰɢɸ ɞɥɹ ɩɨɞɫɱɟɬɚ ɤɨɥɢɱɟɫɬɜɚ ɪɚɡɥɢɱɧɵɯ ɱɢɫɟɥ ɜ ɦɚɫɫɢ-
ɜɟ, ɫɨɞɟɪɠɚɳɟɦ
n ɰɟɥɵɯ ɱɢɫɟɥ.
int count(int *a, int n);
59
    friend-ɮɭɧɤɰɢɹ ɡɚɜɢɫɢɬ ɨɬ ɩɚɪɚɦɟɬɪɚ, ɛɭɞɟɬ ɢɫɩɨɥɶɡɨɜɚɬɶɫɹ ɫɜɨɹ
    friend-ɮɭɧɤɰɢɹ ɞɥɹ ɤɚɠɞɨɝɨ ɡɧɚɱɟɧɢɹ ɩɚɪɚɦɟɬɪɚ.
  x ȿɫɥɢ ɜ ɩɚɪɚɦɟɬɪɢɡɨɜɚɧɧɨɦ ɤɥɚɫɫɟ ɢɦɟɸɬɫɹ ɫɬɚɬɢɱɟɫɤɢɟ (static)
     ɤɨɦɩɨɧɟɧɬɵ, ɬɨ ɞɥɹ ɤɚɠɞɨɝɨ ɡɧɚɱɟɧɢɹ ɩɚɪɚɦɟɬɪɚ ɛɭɞɟɬ ɢɫɩɨɥɶɡɨ-
     ɜɚɬɶɫɹ ɫɜɨɣ ɷɤɡɟɦɩɥɹɪ ɫɬɚɬɢɱɟɫɤɨɣ ɤɨɦɩɨɧɟɧɬɵ.


6. ɉɪɢɥɨɠɟɧɢɹ
6.1. Ɂɚɞɚɱɢ ɩɨ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɸ ɧɚ ɹɡɵɤɟ C++

1. ɋɨɫɬɚɜɢɬɶ ɮɭɧɤɰɢɸ ɞɥɹ ɩɨɞɫɱɟɬɚ ɱɢɫɥɚ ɫɟɪɢɣ ɞɥɢɧɨɣ ɧɟ ɦɟɧɟɟ Ʉ ɩɨɥɨ-
ɠɢɬɟɥɶɧɵɯ, ɨɬɪɢɰɚɬɟɥɶɧɵɯ ɱɢɫɟɥ ɢ ɧɭɥɟɣ ɜ ɨɞɧɨɦɟɪɧɨɦ ɦɚɫɫɢɜɟ ɰɟɥɵɯ
ɱɢɫɟɥ. ɋɟɪɢɟɣ ɧɚɡɵɜɚɟɬɫɹ ɩɨɫɥɟɞɨɜɚɬɟɥɶɧɨɫɬɶ ɷɥɟɦɟɧɬɨɜ ɦɚɫɫɢɜɚ, ɩɪɢɧɚɞ-
ɥɟɠɚɳɢɯ ɨɞɧɨɦɭ ɤɥɚɫɫɭ:

     int series(int n, int *mas, int *kzero, int *kplus,
                int *kminus, int k);

2. ɋɨɫɬɚɜɢɬɶ ɮɭɧɤɰɢɸ ɞɥɹ ɫɥɢɹɧɢɹ ɞɜɭɯ ɭɩɨɪɹɞɨɱɟɧɧɵɯ ɩɨ ɜɨɡɪɚɫɬɚɧɢɸ
ɦɚɫɫɢɜɨɜ ɰɟɥɵɯ ɱɢɫɟɥ:

     int merge(int n, int m, int *mas1, int *mas2, int *res);

3. ɋɨɫɬɚɜɢɬɶ ɮɭɧɤɰɢɸ ɞɥɹ ɩɨɫɬɪɨɟɧɢɹ ɫɩɢɫɤɚ ɢɧɞɟɤɫɨɜ (ɧɨɦɟɪɨɜ), ɫɬɪɨɤ
ɭɩɨɪɹɞɨɱɟɧɧɨɝɨ ɩɨ ɜɨɡɪɚɫɬɚɧɢɸ ɷɥɟɦɟɧɬɨɜ ɡɚɞɚɧɧɨɝɨ (k-ɝɨ) ɫɬɨɥɛɰɚ ɦɚɬ-
ɪɢɰɵ. ɗɥɟɦɟɧɬɵ ɦɚɬɪɢɰɵ - ɰɟɥɵɟ ɱɢɫɥɚ:

     void sort(int n, int *mas, int k, int* index);

4. ɋɨɫɬɚɜɢɬɶ ɮɭɧɤɰɢɸ ɞɥɹ ɨɩɪɟɞɟɥɟɧɢɹ ɷɥɟɦɟɧɬɚ ɦɚɬɪɢɰɵ, ɹɜɥɹɸɳɟɝɨɫɹ
ɫɟɞɥɨɜɨɣ ɬɨɱɤɨɣ. ɋɟɞɥɨɜɨɣ ɬɨɱɤɨɣ ɧɚɡɵɜɚɟɬɫɹ ɷɥɟɦɟɧɬ, ɭɞɨɜɥɟɬɜɨɪɹɸɳɢɣ
ɭɫɥɨɜɢɹɦ:

     a[k,l]=max min(a[i,j])=min max(a[i,j])
           i<=n,j<=m       j<=m,i<=n

ȿɫɥɢ ɫɟɞɥɨɜɨɣ ɬɨɱɤɢ ɧɟɬ, ɭɫɬɚɧɨɜɢɬɶ k=l=-1.

5. ɋɨɫɬɚɜɢɬɶ ɮɭɧɤɰɢɸ ɞɥɹ ɩɨɞɫɱɟɬɚ ɤɨɥɢɱɟɫɬɜɚ ɪɚɡɥɢɱɧɵɯ ɱɢɫɟɥ ɜ ɦɚɫɫɢ-
ɜɟ, ɫɨɞɟɪɠɚɳɟɦ n ɰɟɥɵɯ ɱɢɫɟɥ.

     int count(int *a, int n);


                                  59