Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2018, 15:49   #1
Александр121
Форумчанин
 
Регистрация: 17.09.2017
Сообщений: 265
По умолчанию как сравнить строки? - C++

я сравниваю строки
если ввожу допустим
11111111
222222222
9
то программа выводит 9 как исправить?

Код:
#include <iostream>
#include <cstring>>
 
 
using namespace std;
 
int main()
{
    string s1,s2,s3;
cin>>s1>>s2>>s3;
 
if(s1>s2&s1>s3)
{
    cout<<s1;
}
 
    if (s2>s1&s2>s3)
    {
 
    cout<<s2;
    }
 
        if (s3>s1&s3>s2)
        {
 
 
            cout<<s3;
        }
 
 
}
Александр121 вне форума Ответить с цитированием
Старый 18.04.2018, 15:53   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

не знаю, что такое C++, но поиск говорит про std::string::compare
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.04.2018, 15:58   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так все ж правильно.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 18.04.2018, 16:00   #4
Александр121
Форумчанин
 
Регистрация: 17.09.2017
Сообщений: 265
По умолчанию

я в комбиляторе в ввожу вот эти три строки и он пишет 9 то есть вообще фиг пойми как он высчитал что 9 самая большая.
11111111
222222222
9
Александр121 вне форума Ответить с цитированием
Старый 18.04.2018, 16:02   #5
Александр121
Форумчанин
 
Регистрация: 17.09.2017
Сообщений: 265
По умолчанию

мне нужно вывести самую большую из них
Александр121 вне форума Ответить с цитированием
Старый 18.04.2018, 16:04   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну так вы ее и вывели.

Если ваше определение "самой большой" строки не совпадает с поведением С++ по умолчанию, то надо было описать его.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 18.04.2018, 16:04   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А что такое самая большая строка? '9' точно больше '222222222'
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.04.2018, 16:18   #8
Александр121
Форумчанин
 
Регистрация: 17.09.2017
Сообщений: 265
По умолчанию

самое большое число .строки взял для длинной арефметики;

я добавил length() вроде она правильно должна считать но вообще ничего не выводит

Код:
#include <iostream>
#include <cstring>>
 
 
using namespace std;
 
int main()
{
    string s1,s2,s3;
 
cin>>s1>>s2>>s3;
 
if(s1.length()>s2.length()&s1.length()>s3.length())
{
    cout<<s1;
}
 
    if (s2.length()>s1.length()&s2.length()>s3.length())
    {
 
    cout<<s2;
    }
 
        if (s3.length()>s1.length()&s3.length()>s2.length())
        {
 
 
            cout<<s3;
        }
 
 
}
Александр121 вне форума Ответить с цитированием
Старый 18.04.2018, 16:21   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Александр121 Посмотреть сообщение
я добавил length() вроде она правильно должна считать
То есть 123 == 923?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 18.04.2018, 16:35   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Александр121 Посмотреть сообщение
самое большое число .строки взял для длинной арефметики;
вот с этого и надо было начинать!


Цитата:
Сообщение от Александр121 Посмотреть сообщение
я добавил length() вроде она правильно должна считать
подход верный. НО!

во-первых, смотрите замечание от Alex11223
если, длина строк одинакова - тогда нужно вызывать обычное сравнение строк (через compare)

во-вторых, строки нужно обязательно обрезать (делать trim())
(попробуйте ввести строку: "..................0" - вместо точек введите пробелы)

А в идеале нужна проверка="защита от дурака" - нужно проверять, что в строке введены только цифры.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сравнить символ из строки с множеством Caeles-Lupus Общие вопросы Delphi 8 09.11.2015 15:30
сравнить две строки horpenst Microsoft Office Excel 4 29.03.2012 17:53
сравнить строки Dimarik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 01.08.2011 08:56
сравнить две строки maxs7 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 01.10.2010 05:27
сравнить разные строки Katovski Общие вопросы Delphi 8 02.05.2008 21:10