Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2008, 11:38   #1
Memfis_nya
Пользователь
 
Аватар для Memfis_nya
 
Регистрация: 04.11.2008
Сообщений: 29
Восклицание Работа со строками. Задача

Пожалуйста, нужна помощь. Есть программа, которая позволяет:
– ввести строку с клавиатуры
– выделить из строки слова (символ разделения строк – пробел)
– подсчитать количество слов
– вывести слова в столбик
Код:
#pragma argsused
#include <iostream>
#include <cstdio>
using namespace std;
int main(int argc, char* argv[])
{char str[81], word[81];
 int n=0, k=0, i;
 cout<<"vvedite stroku"<<endl;
 fgets(str , 80, stdin);
 for (i = 0; i < strlen(str)+1; i++)
	{ if(((str[i]==' ')||(str[i]=='\0'))&&(str[i+1]!=' '))
		{word[k]=0;
		 cout<<word<<endl;
		 n++;
		 k=0;
		}
	  else {word[k]=str[i];
			k++;}
	}
	cout << n<<endl;
	system ("pause");
	return 0;
}
Вопрос: что и где нужно добавить, чтобы программа еще и считала количество слов, содержащих "pr" и выводила эти слова в столбик?

Последний раз редактировалось rpy3uH; 16.11.2008 в 15:59.
Memfis_nya вне форума Ответить с цитированием
Старый 16.11.2008, 14:02   #2
como
Форумчанин
 
Регистрация: 26.07.2008
Сообщений: 116
По умолчанию

Код:
#include <iostream>
#include <string>
#include <algorithm>
#include <functional>
#include <vector>

using namespace std;

struct is_space : unary_function<char, bool>
{
    bool operator()(char c) const
    {
        return isspace(c, loc_);
    }

    locale loc_;
};

struct print
{
    void operator()(string const & s)
    {
        cout << s << endl;
    }
};

int main()
{
    cout << "vvedite stroku" << endl;

    string s;
    getline(cin, s);

    int word_count = 0;
    vector<string> selected;
    char const * sub_word = "pr";

    for ( string::iterator pos = find_if(s.begin(), s.end(), not1(is_space()))
                         , word_end
        ; pos != s.end()
        ; pos = find_if(word_end, s.end(), not1(is_space())))
    {
        word_end = find_if(pos, s.end(), is_space());
        string word(pos, word_end);

        cout << word << endl;
        ++word_count;

        if (word.find(sub_word) != string::npos)
        {
            selected.push_back(word);
        }
    }

    cout << "slov: " << word_count << endl;
    cout << "slov s '" << sub_word << "': " << selected.size() << endl;
    for_each(selected.begin(), selected.end(), print());
}
como вне форума Ответить с цитированием
Старый 16.11.2008, 15:02   #3
ivan89
Пользователь
 
Аватар для ivan89
 
Регистрация: 22.09.2008
Сообщений: 59
По умолчанию

программа, которая позволяет:
– ввести строку с клавиатуры
– выделить из строки слова (символ разделения строк – пробел)
– подсчитать количество слов
– вывести слова в столбик
Код:
#include <iostream>
#include <cctype>
int main()
{
	using namespace std;
	char st[80];
	cout<<"vvedi stroku\n";
	  cin.get(st,80);
	  int t=0,t1=0;
	  cout<<"spicok slow\n";
	  for(int i=0; i<strlen(st); i++)
	  {
	     if(isalpha(st[i]))//проверка на буквы
		  cout<< st[i];
                if(st[i]==' '|| st[i]=='.')
	     {
                  cout<<endl;
	       t1++;
	     }
	  }
	  cout<<"kolihestvo slov:="<< t1 <<endl;
	  system("pause");
	  return 0;
}
ivan89 вне форума Ответить с цитированием
Старый 16.11.2008, 15:40   #4
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

Вариант N3:
Код:
#include <iostream>
#include <cstring>

int main()
{
	char str[80];
	std::cout << "Input string:" << std::endl;
	std::cin.getline(str, 80);

	unsigned int count = 0;
	char* pstr = strtok(str, " ");
	while (pstr != NULL) {
		++count;
		std::cout << pstr << std::endl;
		pstr = strtok(NULL, " ");
	}
	std::cout << "Count of words: " << count;

	return 0;
}
still_alive вне форума Ответить с цитированием
Старый 16.11.2008, 18:42   #5
Memfis_nya
Пользователь
 
Аватар для Memfis_nya
 
Регистрация: 04.11.2008
Сообщений: 29
По умолчанию

Спасибо, но желательно было бы изменить данную программу...
Memfis_nya вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача со строками Panda Помощь студентам 8 02.07.2008 09:10
задача на работу с файлами и строками MiH@N Помощь студентам 8 24.06.2008 00:44
задача на сложные действия со строками Converse Паскаль, Turbo Pascal, PascalABC.NET 5 03.01.2008 07:34
[С++]работа со строками Федор Помощь студентам 6 23.12.2007 12:35
Задача со строками Klyan Общие вопросы C/C++ 6 21.09.2007 22:22