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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2009, 18:45   #1
djon_limit
 
Регистрация: 29.10.2009
Сообщений: 5
Сообщение

Кароче у меня такая проблема. У меня задача: "Введите текст, введите число, подсчитайте кол-во слов которые меньше заданного числа."
Мой код:

Код:
#include <iostream>
#include <string>
using namespace std;

int main ()	
{
  char s[81];		//объявляем текстовые переменные
  int n, k;			//целочисленные переменные
  char *p;			//указатели на строки
  char *dlm = ".,!?; "; //указатель на строку, содержащую символы-разделители строк в предложении
 
  
  cout << "Vvedite text i nagmite ENTER: ";	
  cin>> s;					
  cout << "Vvedite chislo i nagmite ENTER: ";  	
  cin>> n;					

  k = 0;			//счетчик слов, удовлетворяющих условию (изначально таких слов нет)
  p = strtok (s, dlm);	//находим первое вхождение в строку s любого символа из строки dlm 

  while (p!='\0') //цикл: пока переменная p, содержащая слово из s не пуста
  {
    if (strlen(p) < n) { 	//если длина слова меньше заданного числа, то
      cout << "slovo: " << p << endl;	//выведем его на экран
      k++;						//увеличим счетчик найденных слов на 1
    }
    p = strtok (NULL, dlm);	//поиск следующего слова в том же предложении
  }
  cout << "kol-vo slov: " << k;  //вывод количества найденных слов
  cout << "\n";
 
  return 0;					
}
При работе программы она не может распознавать пробелы, просто при первом прохождении пробела выводит "бред". Если все слова текста писать через символы ".,!?;" то прога работает нормально.
Мне нужно сделать чтобы прога работала и с пробелами, я пробовал в строчку (char *dlm = ".,!?; " вводить пробел (char *dlm = ".,!?;' '" но все равно тот же результат.
Кто знает как разобраться с этой проблемой помогите.

Последний раз редактировалось Sazary; 06.11.2009 в 03:27.
djon_limit вне форума Ответить с цитированием
Старый 06.11.2009, 00:18   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

используйте gets(s) или cin.getline(s,80);
counter вне форума Ответить с цитированием
Старый 07.11.2009, 23:07   #3
djon_limit
 
Регистрация: 29.10.2009
Сообщений: 5
По умолчанию

Спасибо, все работает!
djon_limit вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите в чем тут дело!!! Aigul1 Общие вопросы C/C++ 1 03.10.2009 21:17
В чем дело ? не понимает бейсик код бедный_студент Помощь студентам 3 08.05.2009 21:09
Integer and Extended,в чем дело? Ciberal Общие вопросы Delphi 3 31.10.2008 19:06
Резидентно подглядываем за st(0) и виснем. В чем дело? Jolyk Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 05.06.2008 17:14