2013-12-03 2 views
1

Напишите программу, которая читает текст и отображает число однобуквенных, двухбуквенных и т. Д. Слов. Слова делятся на символы: '', ',', ',' и '.'. Вход: текст в одной строке, не более 1000 символов. Вывод: n строк целых чисел, указывающих числа слов с соответствующими длинами, n - длина самого длинного слова в тексте.Как отобразить число n-буквенных слов в тексте? C++

Я думаю, что у меня есть небольшое представление о том, как считать все слова, но strlen еще не знаком мне и не знает, как действовать дальше. Любая помощь будет оценена, спасибо.

#include <iostream> 
using namespace std; 

int main() 

{ 
    char a[1000]; 
    short count[1000]; 
    int wc = 0; 
    int max = 0; 
    for (int i = 0; i < 1000; i++) 
     count[i] = 0; 
    for (int i = 0; i < 1000; i++) 
    { 
     cin >> a[i]; 
     if ('\n') 
      break; 
    } 
    for (int i = 0; i < 1000; i++) 
    { 
     if (a[i] != ' ' && a[i] != ',' && a[i] != ';' && a[i] != '.') 
      wc++; 
     else 
     { 
      if (wc != 0) 
      { 
       count[wc]++; 
       if (wc > max) 
        max = wc; 
      } 
      wc = 0; 
     } 
    } 
    for (int i = 0; i < max; i++) 
     cout << count[i] << endl; 
    return 0; 
}  

Может кто-нибудь исправить это для меня, пожалуйста?

+1

Утомляюсь задавать этот вопрос .. ЧТО ТЫ ПРОИГРАЛ? –

+0

узнать, как использовать std :: map –

+0

http://pubs.opengroup.org/onlinepubs/000095399/functions/strlen.html – Abhineet

ответ

0

В данных обстоятельствах вам даже не нужно читать строки. Вы не заботитесь о содержании каждого слова, а только о его длине. Таким образом, вы можете просто читать и обрабатывать одного персонажа за раз. Когда вы читаете символ без разделителя, увеличьте текущий размер слова. Когда вы читаете символ разделителя, проверьте, не отличается ли текущий размер слова. Если это так, увеличивайте счетчик на этот размер слова. Также проверьте, больше ли текущий счетчик, чем любой счет, который вы записали ранее. Если это так, установите наибольший счетчик на текущий счетчик.

Начните с массива из 1000 шорт, все установлены в 0, так как вы считаете, что для разных размеров слова.

После обработки всего вашего ввода у вас есть запись самого длинного слова, поэтому распечатайте подсчеты из массива для всех элементов от одного до этого максимума.

+0

Я загрузил код, который я придумал. Может ли кто-нибудь исправить это для меня. У меня есть только 20 минут в моем распоряжении! – user3060096

Смежные вопросы