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

Ввести строку, вывести слова - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 5.00
ginpachi-sensei
Сообщений: n/a
31.03.2011, 18:56     Ввести строку, вывести слова #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
#include <iostream.h>
#include <string.h>
void main() {
char str[256];
int i=0,a,word[100][2],n=0;
cout<<endl<<"Vvedite stroku:"<<endl;
cin.getline(str,255);
for (i;str[i]!=0;)
  if (((str[i]>='a')&&(str[i]<='z'))||((str[i]>='A')&&(str[i]<='Z')))
   {word[n][1]=i;
    for (i;((str[i]>='a')&&(str[i]<='z'))||((str[i]>='A')&&(str[i]<='Z'));i++)
      ;
    word[n][2]=i;
    n++;}
  else
    for (i;!((str[i]>='a')&&(str[i]<='z'))||!((str[i]>='A')&&(str[i]<='Z'));i++);
for (i;i<=n;i++)
 {for (int j=word[n][1];j<=word[n][2];j++)
    cout<<str[j];
  cout<<endl;}
cout<<"Slov v stroke: "<<n<<endl;
cin>>a;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2011, 18:56     Ввести строку, вывести слова
Посмотрите здесь:

Ввести строку, вывести слова по алфавиту. C++
C++ Ввести строку и слово, удалить все вхождения слова и вывести строку
Ввести строку , вывести только слова, заканчивающиеся на гласную букву. C++
C++ Ввести строку. Вывести пословно вместе со счетчиком повторений этого слова.
Ввести строку и слово. Вывести количество слов в строке, имеющих длину, равную длине введенного слова. C++
C++ Ввести строку. Вывести пословно вместе со счетчиком повторений этого слова.
C++ Ввести строку. Вывести строку так, чтобы за каждым словом следовало количество пробелов, равное длине слова.
Ввести строку s, найти и вывести слова заканчивающиеся подстрокой s2 C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
31.03.2011, 22:53     Ввести строку, вывести слова #2
ginpachi-sensei, Для этих целей в Си есть strtok а в С++ stringstream.
IrineK
Заблокирован
01.04.2011, 02:35     Ввести строку, вывести слова #3
Слова - последовательность букв или цифр.
Разделители - все остальное
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
#include <iostream>
using namespace std;
 
bool isLetter(char c)
{   if((c>='a' && c<='z') ||(c>='A' && c<='Z') ||(c>='0' && c<='9'))
        return true;
    return false;
}
 
int main()
{   char str[80];
    cout<<"Your line:\n";
    cin.getline(str,80);
 
    bool start=false;
    int i=0, words = 0;
    if (isLetter(str[0])) start=true;
    for(i=1;i<strlen(str);i++)
    {   if(!isLetter(str[i-1]) && isLetter(str[i]))
            start=true;
        else if(isLetter(str[i-1]) && !isLetter(str[i]))
        {   words++;
            start = false; 
        }
    }
    if(isLetter(str[strlen(str)-1])) words++;
    cout<<words<<" words in your line\n";
 
       cin.get();
        return 0;
}
Добавлено через 2 часа 13 минут
Вот еще вариация на тему:

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
#include <iostream>
#include <sstream>
using namespace std;
 
int main()
{      setlocale(LC_ALL,"Rus");
        char sentence[256];
        string word;
        int i;
 
while(1)
       {
        cout<<"Введите текст:\n";
        cin.getline(sentence,256);
        string row(sentence);
 
        for(i=0;i<row.length();i++)
                if(row[i]=='.' || row[i]==',' || row[i]=='?' || row[i]=='!')//"исключения" - здесь
                        row[i]=' ';
        i=0;
        istringstream ist(row);
        while(ist>>word)
                i++;
 
        cout<<" Слов найдено : "<<i<< endl<<endl;
        }
        cin.get();
        return 0;
}
Yandex
Объявления
01.04.2011, 02:35     Ввести строку, вывести слова
Ответ Создать тему
Опции темы

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