Функция length() неправильно работает

92
01 сентября 2021, 07:50

Почему функция length() определяет длину строки правильно,только 1 раз?

Answer 1

У вас в коде функция max5 требует на вход массив строк. Вы в нее передаете указатель на отдельностящую строку a и делаете вид, что это начало массива строк. Указатель на строку a не является началом никакого массива. Это просто указатель на самостоятельную строку a. Любые попытки доступа к элементам такого массива arr внутри max5 (кроме arr[0]) попадают "в никуда". Потому вы и получаете чушь из arr[1] и arr[2].

Определитесь, что же должна получать ваша функция max5 - массив строк или массив указателей на строки и далее действуйте соответствующим образом. Сейчас она требует массив строк. Вот и заводите и передавайте массив строк. К чему вы заводили этот массив указателей mas в функции main - не ясно.

Answer 2

Спасибо за помощь,вод измененный код,который выводит все правильно. Я используют Visual Studia 2019.Довольно странно,что он скомпилировался без ошибки.

#include <iostream>
using namespace std;
#include <string>

int max5(string* arr[],int);
int main()
{
    string a, b, c;
    getline(cin,a);
    getline(cin, b);
    getline(cin, c);
    string *mas[3] = { &a,&b,&c };
    int kk=max5(mas, 3);
    cout << kk;
    return 0;
}

int max5(string *arr[],int lol) {
    int z = 0;
    for (int i = 0; i < lol; i++) {
        if (z<arr[i]->length()) z=arr[i]->length();
        cout << "arr" << i << "=" << arr[i]->length() << endl;
    }
    return z;
}
READ ALSO
Найти количество нулевых елементов и сумму елементов меньших 1 и больших 0

Найти количество нулевых елементов и сумму елементов меньших 1 и больших 0

Дано файл действительных чисел atxt Найти количество нулевых элементов и сумму элементов меньших 1 и больших 0

93
2 метода сотировки через свитч с++

2 метода сотировки через свитч с++

При переходе на свитч, выполнение сортировки не происходитБуду признателен, если подскажите, что я сделал не так

133
Передача значения переменной класса в структуру в этом же классе С++

Передача значения переменной класса в структуру в этом же классе С++

Помогите, пожалуйста, решить проблемуНе знаю, как записать и в сети найти не получается

110
Тонкости работы с функцией strdup

Тонкости работы с функцией strdup

Создаст ли strdup() '\0' в конце динамического массива?

73