Почему функция length()
определяет длину строки правильно,только 1 раз?
У вас в коде функция max5
требует на вход массив строк. Вы в нее передаете указатель на отдельностящую строку a
и делаете вид, что это начало массива строк. Указатель на строку a
не является началом никакого массива. Это просто указатель на самостоятельную строку a
. Любые попытки доступа к элементам такого массива arr
внутри max5
(кроме arr[0]
) попадают "в никуда". Потому вы и получаете чушь из arr[1]
и arr[2]
.
Определитесь, что же должна получать ваша функция max5
- массив строк или массив указателей на строки и далее действуйте соответствующим образом. Сейчас она требует массив строк. Вот и заводите и передавайте массив строк. К чему вы заводили этот массив указателей mas
в функции main
- не ясно.
Спасибо за помощь,вод измененный код,который выводит все правильно. Я используют 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;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Дано файл действительных чисел atxt Найти количество нулевых элементов и сумму элементов меньших 1 и больших 0
При переходе на свитч, выполнение сортировки не происходитБуду признателен, если подскажите, что я сделал не так
Помогите, пожалуйста, решить проблемуНе знаю, как записать и в сети найти не получается