1

Тема: Перевантаження функцій

Всім привіт. Почали вивчати нову мову програмування С++ і її особливості. Завдання на першу лабораторну роботу - написати реалізацію перевантаження функції:
bool func(int* arr, int length);
bool func(char* str
Функція func перевіряє чи елементи масиву розташовані по зростанню.
Написав тільки для однієї функції, а далі взагалі не розумію, що робити:

#include <iostream>
using namespace std;
bool func(int* arr, int length);
bool func(char* str);

int main(void)
{
    setlocale(0, "");
    const int size = 10;
    int arr[size] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,};

    
    cout << "Елементи масиву розташованi по порядку зростання(1 = [Tak], 0 = [Hi]): " << func(arr, size) << endl;
}

    bool func(int* arr, int size)
{
bool value;
int i;
for(i = 0; i < size;)
{
    if (arr[i] < arr[i + 1])
        value = true;
        i = i + 1;
    if (arr[i] > arr[i + 1])
        value = false;
        break;
}

return value;
}

Допоможіть, будь ласка, якщо знаєте. Вже який день думаю і нічого. Виручайте! Дякую!

2

Re: Перевантаження функцій

Що конкретно ви не розумієте? Умову, як перегружати функцію, як написати конкретно цю функцію?

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

3

Re: Перевантаження функцій

quez написав:

Що конкретно ви не розумієте? Умову, як перегружати функцію, як написати конкретно цю функцію?

Як написати функцію і частково умову.

4

Re: Перевантаження функцій

ProgNob написав:
quez написав:

Що конкретно ви не розумієте? Умову, як перегружати функцію, як написати конкретно цю функцію?

Як написати функцію і частково умову.

За руку треба вести. Продовжуйте твердження: я написав би функцію, якби знав...

Прихований текст

як це зробити - це неправильна відповідь

5

Re: Перевантаження функцій

Спробую уточнити: у вас є умова і функція для масиву int-ів. В чому проблема із масивом char-ів? Що саме заважає вам написати таку саму функцію для char?

6

Re: Перевантаження функцій

koala написав:

Спробую уточнити: у вас є умова і функція для масиву int-ів. В чому проблема із масивом char-ів? Що саме заважає вам написати таку саму функцію для char?

А як можливо перевірити масив символів на послідовність? Цього я й не розумію.

7

Re: Перевантаження функцій

ProgNob написав:
koala написав:

Спробую уточнити: у вас є умова і функція для масиву int-ів. В чому проблема із масивом char-ів? Що саме заважає вам написати таку саму функцію для char?

А як можливо перевірити масив символів на послідовність? Цього я й не розумію.

Скористайтеся таблицею символів ASCII.

Подякували: koala, ProgNob2

8

Re: Перевантаження функцій

Доповню відповідь LoganRoss: вона вже вбудована в C++. char, насправді - не символ, а однобайтове число - код символа, просто cout виводить відповідний символ. Можете перевірити:

char c = 'x';
c++;
cout<<c;//виведе 'y'.
int x = 1;
x += c;
cout<<x;//виведе код символа 'y'

Так що

str[i] > str[i + 1]

цілком працює.

Подякували: LoganRoss, ProgNob2

9

Re: Перевантаження функцій

І ще оцей ваш цикл не робочий. Дужки вирішують все.

for(i = 0; i < size;)
{
    if (arr[i] < arr[i + 1])
        value = true;
        i = i + 1;
    if (arr[i] > arr[i + 1])
        value = false;
        break;
}
Подякували: ProgNob1

10

Re: Перевантаження функцій

Його цей код влаштовує.

11 Востаннє редагувалося -=ЮрА=- (20.02.2017 21:39:21)

Re: Перевантаження функцій

ProgNob для цього завдання буде розумно первантажити функції по перевірці на зростання массиву та двох окремих його елемнтів, "тулити" сюди якийсь чаровський варіант буде приблизно так саме "як для копання картоплі використати телескоп".

#include <iostream>
using namespace std;

bool is_bigger(int * arr, size_t size);
bool is_bigger(int vleft, int vright);

int main(){
    int arr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    size_t size = sizeof(arr) / sizeof(arr[0]);
    cout<< (is_bigger(arr, size) ? "yes" : "no") << endl;
    return 0;
}

bool is_bigger(int * arr, size_t size){
    bool flag = true;
    for( size_t i = 1; i < size && flag; i++ ){
        flag = is_bigger(arr[i - 1], arr[i]);
    }
    return flag;
}

bool is_bigger(int vleft, int vright){
    return vleft < vright;
}

http://replace.org.ua/topic/7779/

12

Re: Перевантаження функцій

годі сперечатися

http://ideone.com/i93xoZ

template<typename T>
bool is_bigger(T* arr, size_t size) {
    return all_of(arr+1,arr+size,[](T& elem){return *(&elem-1)<elem;});
}

bool is_bigger(char *str) {
    return is_bigger(str,strlen(str));
}

13

Re: Перевантаження функцій

koala,

перевіряє чи елементи масиву розташовані по зростанню.

, до чого тут чари?
http://codepad.org/odCNiMmV

14 Востаннє редагувалося -=ЮрА=- (20.02.2017 22:40:57)

Re: Перевантаження функцій

До речі, у Вас щось пішло не так навіть при маленькій зміні

15

Re: Перевантаження функцій

-=ЮрА=- написав:

koala,

перевіряє чи елементи масиву розташовані по зростанню.

, до чого тут чари?
http://codepad.org/odCNiMmV

А ви умову уважніше читайте. Там сигнатура задана, ви її не дотримуєтеся.

16

Re: Перевантаження функцій

А ви умову уважніше читайте. Там сигнатура задана, ви її не дотримуєтеся.

тобто все ж таки відіслали на картоплю з телескопами, ну добре

#include <iostream>
using namespace std;
 
bool is_bigger(int * arr, size_t size);
bool is_bigger(char* str, size_t size);
bool is_bigger(int vleft, int vright);
 
int main(){
    int arr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    size_t size = sizeof(arr) / sizeof(arr[0]);
    cout<< (is_bigger(arr, size) ? "yes" : "no") << endl;

    char str[] = "abcdefghijkl";
    size = strlen(str);
    cout<< (is_bigger(str, size) ? "yes" : "no") << endl;
    return 0;
}
 
bool is_bigger(int * arr, size_t size){
    bool flag = true;
    for( size_t i = 1; i < size && flag; i++ ){
        flag = is_bigger(arr[i - 1], arr[i]);
    }
    return flag;
}

bool is_bigger(char* str, size_t size){
    bool flag = true;
    for( size_t i = 1; i < size && flag; i++ ){
        flag = is_bigger(str[i - 1], str[i]);
    }
    return flag;
}
 
bool is_bigger(int vleft, int vright){
    return vleft < vright;
}

http://codepad.org/66syFUyZ

17

Re: Перевантаження функцій

Ви будете читати умову чи ні?

bool func(char* str);
Подякували: quez1

18

Re: Перевантаження функцій

koala написав:

Його цей код влаштовує.

Ні, я знаю, що там помилка, писати про це я вже не став, так як не про це йде мова.

19

Re: Перевантаження функцій

-=ЮрА=- написав:

ProgNob для цього завдання буде розумно первантажити функції по перевірці на зростання массиву та двох окремих його елемнтів, "тулити" сюди якийсь чаровський варіант буде приблизно так саме "як для копання картоплі використати телескоп".

Але ж друга функція не відповідає завданню, робота буде забракована

20

Re: Перевантаження функцій

LoganRoss написав:

І ще оцей ваш цикл не робочий. Дужки вирішують все.

Вибачте, забув про фігурні дужки.