Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 338
#1

String и его приколы. Что и как сравнивается - C++

26.04.2014, 11:00. Просмотров 345. Ответов 4
Метки нет (Все метки)

Цитата из книги: " Если две строки имеют разные длины и каждый символ которткий строки равен соответствующему символу длинной строки то короткая строка меньше длинной."

Что за прикол? А не проше считат символы на строке и опеределит какая из них длинее.
Вот простая программа.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <conio.h>
#include <string>
int main()
{ setlocale (LC_ALL , "Russian");
    std::string s1, s2;
    std::cout << "Введите текст" << std::endl;
    std::getline(std::cin, s1);
    std::cout << "Введите второй текст" << std::endl;
    std::getline(std::cin, s2);
    if(s1 == s2)
        std::cout << s1 << " ровно " << s2 << std::endl;
    if(s1 < s2)
        std::cout << s1 << " меньше " << s2 << std::endl;
    if(s1 > s2)
        std::cout << s1 << " Бльше " << s2 << std::endl;
    
        _getch();
    return 0;
}
Первый текст: "Hello World!"
Второй текст: "Fly around the World!"
Почему это первая строка больше? Каким способом программа опеределяет какая строка больше а какая меньше. Я не как не могу понят.
Этому ест только одно обьяснение. Все символы которые ровны смволам первой строки сбрасываються. Но почему. Вид в этом нет не какой логики. Или я слишком туп чтоб понят логику?

Добавлено через 9 минут
В той же программе ввел числа 1234 и 12345, 1234 и 1235. Второе больше первого. Почему это с числами не произходит того же что и с символами?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2014, 11:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос String и его приколы. Что и как сравнивается (C++):

Необходимо каждый элемент массива сравнить с его 8 соседями и если он больше, чем любой из элементов с которыми сравнивается, его распечатать. - C++
Всем привет, помогите решить следующую задачу, есть массив: 3 4 5 6 7 8 9 4 2 10 44 2 2 3 4 5 6 1 2 9 2 2 42 0 1 4 5 8 7 2 9 1 2...

Есть ли аналог Map <String,String> чтобы передавать его как указатель на данные? - C++
Добрый день, подскажите, есть ли аналог Map &lt;String,String&gt; чтобы передавать его как указатель на данные? Заранее спасибо!

Как проверить есть ли в string что нибудь ? - C++
Как проверить есть ли в string что нибудь ? Например функция для проверки стороки &quot;S&quot;.

Как проверить, что пользователь ввел число в переменную string? - C++
Скажите пожалуйста как проверить что пользователь ввел число в переменную string? И как его потом конвертировать в int ?

Как записать объект с полем типа std::string в бинарном виде в файл и считать его обратно? - C++
Знаю как записывать объекты в файл в бинарном виде, но как быть, когда у них динамические поля? Какой метод использовать? Можете привести...

Долгожитель (возраст не менее 100 лет) обнаружил однажды, что если к сумме квадратов цифр его возраста прибавить число дня его рождения, то как раз п - C++
Часть 1.с.м фото Часть 2. Долгожитель (возраст не менее 100 лет) обнаружил однажды, что если к сумме квадратов цифр его возраста...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
26.04.2014, 11:03 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Сравнение строк происходит по-другому.Вам логичнее считать,что нужно сравнивать их длину.Но сравниваются индексы символов в строках.Каждый символ имеет свой индекс в таблице символов. Допустим есть строка "ab" и "aw".Первые символы строк имеют одинаковые индексы,а вот вторые уже различны, символ 'w' имеет больший индекс,чем 'b',поэтому строка 'aw" будет больше.
1
intern
15 / 15 / 6
Регистрация: 30.03.2014
Сообщений: 74
Завершенные тесты: 2
26.04.2014, 11:04 #3
В той же книге следующее предложение - "Если символы двух строк отличаются, результат сравнения определит первый несовпадающий символ"
1
Байт
Эксперт C
16061 / 10330 / 1540
Регистрация: 24.12.2010
Сообщений: 19,454
26.04.2014, 11:31 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Altair42, А вообще-то, есть такое понятие лексикографическая упорядоченность Чтобы понять, что это за зверь - загляните в любой словарь. Или посмотрите на список файлов. Так вот, сравнение строк подразумевает именно эту упорядоченность
2
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 338
26.04.2014, 12:09  [ТС] #5
Все понятно спасибо.

Добавлено через 11 минут
Можете помочь с одной программой?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <conio.h>
 
int main()
{
    int a, b;
    int up, down; //Вверхная и нижная граница.
std::cout << "Enter two numbers \n";
std::cin >> a >> b;
//Первый символ должен быт меньще чем второй не смотря на ввод по этому...
if(a >= b) 
{
        up = a;
                down = b;
}
else
{ 
    down = a;
        up = b;
}
 
        for(int i = down + 1; i < up; i++)
        {
         std::cout << " " << i;
         
//Добавляем переменную х = 10 после десятого символа конец строки.
        int x;
        x = 10;
 
// Функция if для почета десятог символа в строке.      
         if(i == down + x)  // 
{
          std::cout <<" " << '\n';
          x = x + 10; 
//Имееться введу. После перехда на новую строку х + 10 = 20. 
//След if(i == down +20) Хочу обеспечит переход на след строкуна 20-ом символе и т.д.
}
}
        _getch();
    return 0;
}х
Эта программа не куда не годится. По идее после перехода к работе с функцией if ( когда число символов в строке достигают 10 (пробелы не считаються). Переменная х должен менят свое значение и проверяться следующий раз с новым значением ( По этому новая значение переменной х вычисляеться в нутри функции if чтоб цикл не менял его каждый раз). Но почему то этого не произходит. Не могу понят почему.

Думаю для этого можно использовать string. Но понятие не имею каким образом. Можно заставит программу считат символы в строке но как заставит перейти на след строку в нужном месте. В другой теме мне показали код на С.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2014, 12:09
Привет! Вот еще темы с ответами:

Подскажите как найти слово строке в котором больше 2 букв 'a', а затем вывести его?Без использования string - C++
Подскажите как найти слово строке в котором больше ОДНОЙ буквы 'a', а затем вывести его?Без string.

Объясните пожалуйста как тут работает сортировка и что такое ostream_iterator<string> - C++
вот код. Объясните пожалуйста как тут работает сортировка, сам не могу разобраться. Оссобенно это ostream_iterator&lt;string&gt; не понимаю...

как переделать массив что бы не было его остановки и как добавить индекс - C++
Такая вот задача найти индекс максимального элемента массива , вот мой код что тут не так и что следует добавить ? и почему у меня индекс...

Как узнать что при считывание очередного слова в string был сделан переход на новую строку в файле? - C++
подскажите пожалуйста, как узнать что при считывание очередного слова в string был сделан переход на новую строку в файле?. ПС не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.04.2014, 12:09
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru