1

Тема: c++ class +перевантаження

Доброго дня підкажіть як реалізувати код в класі

#include <iostream>
#include <cstring>
using namespace std;
class  aray {
    int func(int* arr, int length);
    int func(char* str);
    int func(int* arr, int length)
    {
        for (int i = 0; i < length - 1; i++)
        {
            if (arr[i] > arr[i + 1])
            {
                return false;
            }
        }

        return true;
    }
    int func(char* str)
    {
        for (int i = 0; i < (strlen(str) - 1); i++)
        {
            if (str[i] > str[i + 1])
            {
                return false;
            }
        }
        return true;
    }
};
int main()
{
    while (true)
    {
        int g;
        cout << "Maintain data[1]    Close[2]"<<endl;cin>>g;
        if (g == 2) { break; }
        else if ( g == 1) {
           
            const int length = 10;
            char str[256];
            int arr[length] ;
            cout << "Array of numbers: ";
            for (int i = 0; i < length; ++i)
            {
                cout << "Enter the array" << "[" << i << "]" << " "; cin >>arr[i];
             
            }
            cout << "\nEnter characters: ";
            cin >> str;
            cout << "Array Elements" << (func(arr, length) ? "" : " not ") << " arranged in ascending order." << endl;
            cout << "Ribbon Elements" << (func(str) ? "" : " not") << " arranged in ascending order." << endl;
            
        }
    }
    return 0;
}

2

Re: c++ class +перевантаження

Не той код вибачаюсь

#include <iostream>
#include <cstring>
#include <iomanip>
#include <cstdlib>

using namespace std;
class  aray {
    int func(int* arr, int length);
    int func(char* str);
    int func(int* arr, int length)
    {
        for (int i = 0; i < length - 1; i++)
        {
            if (arr[i] > arr[i + 1])
            {
                return false;
            }
        }

        return true;
    }
    int func(char* str)
    {
        for (int i = 0; i < (strlen(str) - 1); i++)
        {
            if (str[i] > str[i + 1])
            {
                return false;
            }
        }
        return true;
    }
};
int main()
{
    aray A;
    while (true)
    {
        int g;
        cout << "Maintain data[1]    Close[2]"<<endl;cin>>g;
        if (g == 2) { break; }
        else if ( g == 1) {
            
            const int length = 10;
            char str[256];
            int arr[length] ;
            cout << "Array of numbers: ";
            for (int i = 0; i < length; ++i)
            {
                cout << "Enter the array" << "[" << i << "]" << " "; cin >>arr[i];
             
            }
            cout << "\nEnter characters: ";
            cin >> str;
            
            cout << "Array Elements" << (A.func(arr, length) ? "" : " not ") << " arranged in ascending order." << endl;
            cout << "Ribbon Elements" << (A.func(str) ? "" : " not") << " arranged in ascending order." << endl;
            
        }
    }
    return 0;
}

3

Re: c++ class +перевантаження

А чим вас цей код не влаштовує?

4

Re: c++ class +перевантаження

Підкреслює

cout << "Array Elements" << (A.func(arr, length) ? "" : " not ") << " arranged in ascending order." << endl;
            cout << "Ribbon Elements" << (A.func(str) ? "" : " not") << " arranged in ascending order." << endl;

а саме(A.func( та   (A.func(str)
Не знаю вчом проблема вроді все добре написав
функцию "aray::func(int *arr, int length)" (объявлено в строке 9) недоступно
функцию "aray::func(char *str)" (объявлено в строке 21) недоступно

5

Re: c++ class +перевантаження

Підкреслює - це до вашого IDE. IDE - зручний, але не обов'язковий інструмент для розробки, і те, що щось там в IDE підкреслюється, ні про що не говорить.
До речі, наполегливо раджу встановити українську або англійську версію IDE, бо повідомлення про помилки екзотичними мовами далеко не всі можуть прочитати.
А от "при компіляції видає повідомлення про помилку" - це вже суттєво. Якщо видає - то ТАК І ПИШІТЬ.
Якщо я правильно зрозумів, то вам видає оці два рядки болгарською, щось про два методи func. Ці методи оголошені в класі без модифікатора доступу, тобто є private. А ви їх викликаєте з функції main, яка не має до них доступу. Зробіть їх public.

Подякували: kasia1

6

Re: c++ class +перевантаження

Боже я вам дуже вдячний.
Моя халатність до добра не доведе.
Буду вчитись над помилками.

Подякували: Tarpan871

7

Re: c++ class +перевантаження

Робити помилки - це нормально. Особливо коли навчаєтеся. Головне - робити з них висновки.