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

Почему не работает - C++

Восстановить пароль Регистрация
 
ViT(Vet@l)
27 / 26 / 2
Регистрация: 13.12.2010
Сообщений: 333
27.10.2011, 16:18     Почему не работает #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 <string.h>
 
using namespace std;
 
int main()
{
    string sentence;
    getline(cin, sentence);
 
    string a, b, c;
 
    int pos1 = 0, pos2;
 
    while((sentence.find(" "))  != string::npos){
        pos1 = sentence.find(" ");
        sentence.replace(pos1, , "1");
        pos2 = sentence.find(" ");
        sentence.replace(pos2, 1, "1");
    }
 
    for(int i = 0; i < pos1; i++){
        a[i] = sentence[i];
    }
 
        cout << a;
    return 0;
}
Разве нельзя так просто вывести строку? Или эта строка "не строка"?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
27.10.2011, 16:29     Почему не работает #2
Думаю нужно добавить(хотя это уже от компилятора зависит), после
using namespace std;
вот это
using std::string;
Ну и хедеры
Цитата Сообщение от ViT(Vet@l) Посмотреть сообщение
#include <string.h>
вот так записать
C++
1
2
#include <iostream>
#include <cstring>
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
27.10.2011, 16:30     Почему не работает #3
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
неправельный синтаксис cin.getline надо
Поправлю.
C++
1
2
istream& getline ( istream& is, string& str, char delim );
istream& getline ( istream& is, string& str );
-=ЮрА=-
Заблокирован
Автор FAQ
27.10.2011, 16:40     Почему не работает #4
Вот код, он запускается, в то что делает алгоритм я не вникал, так что правильность while это уже за Вами
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
#include <iostream>
#include <string>
using namespace std;
using std::string;
 
int main()
{
    cout<<"Enter sentence\n");
    string sentence;
    getline(cin, sentence);
    string a, b, c;
 
    int pos1 = 0, pos2;
    while((sentence.find(" "))  != string::npos)
    {
        pos1 = sentence.find(" ");
        sentence.replace(pos1, 1, "1");
        pos2 = sentence.find(" ");
        sentence.replace(pos2, 1, "1");
    }
 
    for(int i = 0; i < pos1; i++)
        a[i] = sentence[i];
 
    cout << a.c_str();
    system("pause");
    return 0;
}
Добавлено через 59 секунд
Chelioss, я уже всё без Вас поправил..!
Предпочитаю использовать char строки, поетому с getline думал ошибка для чаров именно cin.getline надо...
ViT(Vet@l)
27 / 26 / 2
Регистрация: 13.12.2010
Сообщений: 333
27.10.2011, 17:10  [ТС]     Почему не работает #5
Спасибо!
Выводит все ок, если использовать c_str
Но мне надо сравнить каждое слово с массивом.

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
string subject[5]={"I","he","she","it","they"};
    string predicate[5]={"go","stand","fly","say","run"};
    string attribute[5]={"quick", "nice", "slow", "ugly", "normal"};
 
    string str1, str2, str3;
    string str_1, str_2, str_3;
    int pos1 = 0, pos2;
 
    string sentence;
    getline(cin, sentence);
 
    while((sentence.find(" "))  != string::npos){
        pos1 = sentence.find(" ");
        sentence.replace(pos1, 1, "1");
        pos2 = sentence.find(" ");
        sentence.replace(pos2, 1, "1");
    }
 
    for(int i = 0; i < pos1; i++){
        str1[i] = sentence[i];
 
    }
    for(int i = 0; i < 5; i++){
        if(str1.c_str() == subject[i])
              cout << "a"; //не работает (не сравнивает (и без c_str тоже)
    }
 
    for(int i = 0, pos1; pos1 < pos2, i < (pos2 - pos1); pos1++, i++){
        str2[i] = sentence[pos1];
    }  
 
 
    cout << str2.c_str(); //тоже ничего не выводить
    return 0;
}
Суть программы - вводим три слова - первым должно идти слово из subject[5], вторым из predicate[5],третьим - attribute[5]. Если порядок не соблюбали - вывести как надо.
Вот теперь возникла проблема со сравнением
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
27.10.2011, 17:20     Почему не работает #6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Chelioss, я уже всё без Вас поправил..!
это претензия на доминирование?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2011, 17:40     Почему не работает
Еще ссылки по теме:

C++ Почему не работает if-else
C++ Почему не работает?
C++ Не работает. Почему?

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

Или воспользуйтесь поиском по форуму:
ViT(Vet@l)
27 / 26 / 2
Регистрация: 13.12.2010
Сообщений: 333
27.10.2011, 17:40  [ТС]     Почему не работает #7
Ребята, давайте жить дружно

Добавлено через 14 минут
А если серьезно, то как можно сравнить? Или то, что мы получили
C++
1
2
    for(int i = 0; i < pos1; i++){
        str1[i] = sentence[i];
сравнивать как простую строку нельзя?
C++
1
2
 for(int i = 0; i < 5; i++){
        if(str1.c_str() == subject[i])//или без с_str
Yandex
Объявления
27.10.2011, 17:40     Почему не работает
Ответ Создать тему
Опции темы

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