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

Ввести 2 слова через пробел, сравнить их на эквивалентность - C++

Восстановить пароль Регистрация
 
Shokoladnaj
2 / 2 / 1
Регистрация: 11.03.2014
Сообщений: 84
11.03.2014, 22:35     Ввести 2 слова через пробел, сравнить их на эквивалентность #1
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
#include "stdio.h"
#include "iostream"
#include "stdlib.h"
#include "conio.h"
using namespace std;
 
int main()
{
    char res[100];
    char a[100];
    char b[100];
    cout<<"Enter to string please:"<<endl;
    cin.getline(res,100,'\n');
    for(int i=0; i<=strlen(res); i++)
    {
        if(res[i]!=' ') a[i]=res[i];
        else break;
    }
    for(int i=strlen(res); i>0; i--)
    {
        if(res[i]!=' ') b[i]=res[i];
        else break;
    }
    cout<<strcmp(a,b);
    
system("pause");
}
Ввести 2 слова через пробел, сравнить их на эквивалентность. Переписываю до пробела в 1 массива, после во второй, strcmp выдаёт -1 всегда, подскажите пожалуйста в чём проблема, и можно ли сделать это задание как нибудь с 1 исходным массивом, не переписываю слова?

Добавлено через 1 минуту
возможно из-за того что забивает символами мммммммммммммммммммммммммммммммммммммммммммммммммммммм, не работает, но когда делаю a[strlen(a)]='\0', b[strlen(b)]='\0' - вылетает из программы

Добавлено через 19 минут
Попробовала не разделяя на 2 массива, не вышло...
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
42
43
44
45
46
#include "stdio.h"
#include "iostream"
#include "stdlib.h"
#include "conio.h"
using namespace std;
 
int main()
{
    char res[100];
    char a[100];
    char b[100];
    cout<<"Enter to string please:"<<endl;
    cin.getline(res,100,'\n');
    int h=0, ii=0, j=0, k=0;
    for(int i=0; i<strlen(res); i++)
    {
        if(res[i]==' ') break;
        h++;
        for(int j=0; j<=strlen(res); j++)
        {
 
        }
        for(int k=strlen(res); k>=0; k--)
        {
 
        }
        if(res[j]==res[k]) ii++;
    }
    int c=0;
    if(ii==h) c=1;
    cout<<c;
    //// сверху попробовала не разделяя на 2 массива
    for(int i=0; i<=strlen(res); i++)
    {
        if(res[i]!=' ') a[i]=res[i];
        else break;
    }
    for(int i=strlen(res); i>0; i--)
    {
        if(res[i]!=' ') b[i]=res[i];
        else break;
    }
    cout<<strcmp(a,b);
    
system("pause");
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2014, 22:35     Ввести 2 слова через пробел, сравнить их на эквивалентность
Посмотрите здесь:

C++ Builder Как прописать слова через пробел в одну строку?
C++ В строку через пробел вводятся слова. Отсортировать введенные слова по алфавиту. Результат вывести в виде столбца.
C++ Считать 2 слова из файла через пробел и сравнить их со словом No или Yes
Ввести с клавиатуры целое положительное число. Напечатать его цифры через пробел в прямом порядке C++
C++ В исходной строке, содержащей перечисленные через пробел слова, найти целые положительные числа и составить из них новую строку
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
saden
 Аватар для saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
11.03.2014, 22:43     Ввести 2 слова через пробел, сравнить их на эквивалентность #2
кажется, первое слово не заканчивается \0.
цикл прерывается по "пробелу", а \0 не дописывается
Shokoladnaj
2 / 2 / 1
Регистрация: 11.03.2014
Сообщений: 84
11.03.2014, 23:59  [ТС]     Ввести 2 слова через пробел, сравнить их на эквивалентность #3
так а надо как сделать, чтобы программа корректно работала?
saden
 Аватар для saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
12.03.2014, 08:46     Ввести 2 слова через пробел, сравнить их на эквивалентность #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
i=j=k=0;
L=strlen(res);
while(res[i]!=' ' && i<L) {a[i]=res[i];i++;}
a[i]='\0';i++;
if(i>L/2) cout<<"first word longer";
else
{
  while(res[i]!=' ' && i<L) {b[k]=res[i];i++;k++;}
  b[k]='\0';
 
  cout<<strcmp(a,b);
}
Shokoladnaj
2 / 2 / 1
Регистрация: 11.03.2014
Сообщений: 84
12.03.2014, 11:55  [ТС]     Ввести 2 слова через пробел, сравнить их на эквивалентность #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
не работает это, ввожу qwer qwer пишет first world longer.

Добавлено через 4 минуты
saden, работает только с двумя пробелами

Добавлено через 2 минуты
Не, не работает всё-таки, ввожу qwer zxcv-выводит 1

Добавлено через 32 минуты
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
42
43
44
45
46
#include "stdio.h"
#include "iostream"
#include "stdlib.h"
#include "conio.h"
using namespace std;
 
int main()
{
    char res[100];
    char a[100];
    char b[100];
    cout<<"Enter to string please:"<<endl;
    cin.getline(res,100,'\n');
    int i=0; int l=strlen(res);
    for(; i<=strlen(res); i++)
    {
        if(res[i]!=' ') a[i]=res[i];
        else break;
    }
    a[i]='\0';
    i++;
    int k=0;
    for(; i<l; i++)
    {
        if(res[i]!=' ') {b[k]=res[i]; k++;}
        else  break;
    }
    b[k]='\0';
    int t=0, h=0;
    cout<<a<<endl<<b;
    int r=strlen(a);
    int rr=strlen(b);
    int rrr=0;
    if(r/rr==0) cout<<"Two word longer";
    if(rr/r==0) cout<<"First longer";
    if(r/rr!=0 && rr/r!=0)
    {
    for(int i=0; i<=strlen(a); i++)
    {
        h++;
        if(a[i]==b[i]) t++;
    }
    if(t==h) cout<<"True";
    }   
system("pause");
}
Сделала, тему можно закрывать )
Yandex
Объявления
12.03.2014, 11:55     Ввести 2 слова через пробел, сравнить их на эквивалентность
Ответ Создать тему
Опции темы

Текущее время: 05:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru