14 / 14 / 2
Регистрация: 28.01.2015
Сообщений: 26
1

Сравнение двух строк с выделением динамической памяти - C++

07.08.2015, 17:58. Показов 1363. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите почему не работает код? Ввожу две разные строки и всегда выводит equal. Уже как только не крутил. Подскажите пожалуйтста, что можно добавить или изменить?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
int main()
{
    size_t i = 200;
    char *str1 = new char [i];
    char *str2 = new char [i];
    cin >> str1 >> str2;
 
    while (str1[i]!='\0'&& str2[i]!='\0')
    {
        str1[i]==str2[i];
        ++i;
    }
    if (str1[i]==str2[i])
    {
        cout << "equal";
    } else {
        cout << "not equal";
    }
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.08.2015, 17:58
Ответы с готовыми решениями:

Строки с выделением динамической памяти
Привет всем! Помогите решить вот такую задачу: Ввести две строки. Определить совпадение их слов...

Заполнить рандомно матрицу с выделением динамической памяти
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;cstdlib&gt; #include...

Как обратиться к значениям двухмерного массива созданного с выделением динамической памяти?
Здравствуйте. Есть такой код (не полностью) #include &lt;iostream&gt; #include &lt;windows.h&gt;...

Не могу понять причину ошибки (связано с выделением динамической памяти под двумерный массив и ее удаление)
Я студент 1 курса , и выполняя задание столкнулся с проблемой. Вот само задание: Ввести оценки N...

4
Эксперт PHP
3105 / 2590 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
07.08.2015, 18:05 2
Это
Цитата Сообщение от IpHuman Посмотреть сообщение
C++
1
2
3
4
5
6
while (str1[i]!='\0'&& str2[i]!='\0')
 {
 str1[i]==str2[i];
 ++i;
 }
 if (str1[i]==str2[i])
заменить на
C++
1
if (strcmp(str1, str2) == 0)
1
14 / 14 / 2
Регистрация: 28.01.2015
Сообщений: 26
07.08.2015, 19:05  [ТС] 3
Спасибо! Какие есть ещё способы без использования функции strcmp в данном коде?
0
Эксперт С++
3069 / 1407 / 425
Регистрация: 19.01.2009
Сообщений: 3,854
07.08.2015, 21:12 4
Лучший ответ Сообщение было отмечено IpHuman как решение

Решение

IpHuman,
1) вы начинаете сравинивать строки начиная с 201-го символа, нужно с нуля;
2) в цикле сравнения нужно выходить, если условие str1[i]==str2[i] не выполняется.

C++
1
2
3
4
    size_t i = 0;
    while (str1[i]!='\0' && str2[i]!='\0' && str1[i]==str2[i])
        ++i;
    std::cout << ((str1[i]==str2[i]) ? "equal" : "not equal") << std::endl;
1
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.08.2015, 00:59 5
C++
1
2
3
4
    size_t i = 200;
    char *str1 = new char [i];
    char *str2 = new char [i];
    cin >> str1 >> str2;
Где гарантии что пользователь не введет больше 200 символов?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
 
int main()
{
    std::string str1,str2;
    std::cin >> str1 >> str2;
 
    if (str1==str2)  std::cout << "equal";
    else             std::cout << "not equal";
 
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.08.2015, 00:59
Помогаю со студенческими работами здесь

Проверить корректность двух способов выделения динамической памяти
Решил задачку на динамическое выделение памяти, двумя способами. Так вот сам вопрос: подскажите,...

Конкатенация строк: Зачем строки создаются в динамической памяти?
Есть программа, которая делает конкатенацию строк. #include &lt;iostream&gt; using namespace std;...

Динамической памяти выделить место для сохранения двух массивов действительных чисел
В динамической памяти выделить место для сохранения двух массивов действительных числл заданной...

Функция получает массив указателей на строки и возвращает строку в динамической памяти, содержащую объединенный текст из входных строк
Функция получает массив указателей на строки и возвращает строку в динамической памяти, содержащую...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru