


Помогите решить задачу, C++.
Максимальная из трёх
Даны три строки. Выведите лексикографически максимальную из них.
Входные данные
Даны три строки, состоящие из символов с ASСII-кодами от 32
до 126
. Длина каждой строки не превосходит 100
символов.
Выходные данные
Выведите лексикографически максимальную строку.
Примеры
Ввод
MISIS
MIPT
HSE
Вывод
MISIS
Я написал вот такой код, но тестирующая система говорит что программа выдает неверный ответ. Я выяснил, что если программе дать на вход строку с символами, то символы она считывать не будет.
#include <iostream>
#include <string>
using namespace std;
int main() {
string c1, c2, c3;
getline(cin, c1);
getline(cin, c2);
getline(cin, c3);
if(c1>c2)
{
if(c1>c3)
{
cout << c1;
}
}
if(c2>c1)
{
if(c2>c3)
{
cout << c2;
}
}
if(c3>c2)
{
if(c3>c1)
{
cout << c3;
}
}
}
Это сириус курсы, может кто нибудь делал такую задачу.
Что же выведет ваша программа, если две наибольшие или три строки будут одинаковые? )
#include <cstring>
#include <iostream>
using namespace std;
int main() {
constexpr size_t n = 101;
char a[n]{}, b[n]{}, c[n]{};
cin.getline(a, n);
cin.getline(b, n);
cin.getline(c, n);
strncmp(a, b, sizeof(a)) > 0
? puts(strncmp(a, c, sizeof(a)) > 0 ? a : c)
: puts(strncmp(b, c, sizeof(b)) > 0 ? b : c);
}
В вашем коде есть проблема в логике сравнения строк. Вы проверяете каждую пару условий отдельно, но не учитываете случай, когда одна из строк может быть максимальной по отношению к двум другим. Вам нужно использовать `else` для корректной обработки всех возможных случаев. К тому же, ваш код не обрабатывает ситуацию, когда одна из строк максимальна, но не попадает в первое условие из-за порядка сравнения.
Попробуйте использовать следующий подход:
1. Сравните первую строку со второй и третьей. Если она больше обеих, то это ваш ответ.
2. Если первая строка не является максимальной, сравните вторую строку с третьей.
3. Выведите ту строку, которая оказалась максимальной после сравнений.
Приведу исправленный код:
```cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
string c1, c2, c3;
// Считываем три строки
getline(cin, c1);
getline(cin, c2);
getline(cin, c3);
// Сравниваем строки и определяем максимальную
string maxString = c1; // Предполагаем, что c1 - максимальная
if (c2 > maxString) {
maxString = c2; // Если c2 больше, то она становится максимальной
}
if (c3 > maxString) {
maxString = c3; // Если c3 больше, то она становится максимальной
}
// Выводим максимальную строку
cout << maxString;
}
```
Этот код корректно считывает строки и определяет максимальную из них в лексикографическом порядке. Ваша ошибка была связана с логикой сравнения строк: необходимо было использовать `else` или корректно обработать все возможные случаи сравнения для определения максимальной строки.
Ответы на Сириус курсы ищи в тг канале "Сириус курсы ответы"