1 Востаннє редагувалося Chuck Norris (02.06.2013 11:33:56)

Тема: Рядки

Я вводжу рядок(речення, через пробіли без розділових знаків) і потрібно:

Визначити,  скільки  слів  тексту  мають  довжину  1,  2,  3,...,10  і  більше  символів.  Вивести  ці   слова в послідовності  зростання їх довжин. Слова чергової довжини вивести з нового рядка. Працюю на С++ в середовищі VS.
Допоможіть будь ласка, задача вроді проста але я не знаю як зробити.

2

Re: Рядки

А як ви читаєте рядок в якій він у вас формі. Покажіть, що ви вже спробували.

Використайте цикл для проходження по рядку, виберіть умову закінчення слова і кожен раз при виконанні такої умови збільшуйте відповідний лічильник. Лічильники можуть бути в масиві.

3 Востаннє редагувалося Chuck Norris (02.06.2013 12:00:35)

Re: Рядки

Yola написав:

А як ви читаєте рядок в якій він у вас формі. Покажіть, що ви вже спробували.

Використайте цикл для проходження по рядку, виберіть умову закінчення слова і кожен раз при виконанні такої умови збільшуйте відповідний лічильник. Лічильники можуть бути в масиві.

Зробив я небагато, я не знаю як треба шукати і сортувати  слова. І тому прошу допомоги

#include <iostream>
#include <string>
#include <string.h>
using namespace std;

int main()
{setlocale(LC_ALL,"Ukrainian");
    char rad[256];
    cout<<"Введіть рядок: ";
    gets(rad);

    puts(rad);
    

return 0;
}

4 Востаннє редагувалося Yola (02.06.2013 13:00:11)

Re: Рядки

Наче від вас не вимагають сортування слів, ви просто в циклі по літері, проходите рядок і кожен раз коли закінчується слово, збільшуєте відповідний лічильник.

Припустимо ви знаєте, що максимальна довжина слова 10, тоді

int counters[10];

також ви зберігаєте довжину поточного слова

int currentWordLen = 0;

в циклі ви читаєте символи по одному і збільшуєте currentWordLen з кожним символом, якщо символи належать до таких, що не можуть бути в слові і currentWordLen не нуль - робите counters[currentWordLen - 1]++;

---
звісно, можлива ситуація, що довжина слова перевищить 10, але ви спочатку зробіть цю версію, а потім подумаємо далі.

---
Перечитав умову, дійсно вимагають, недогледів:(

5

Re: Рядки

Chuck Norris, доцільно розпарсити рядок за розділовим символом " " (пробіл) і виокремлені слова кудись поскладати (масив, вектор). Ліпше за все - розбити введений рядок на слова і кожне слово вставити до vector<string>. А далі просто сортуєте і виводите. :)

Парсити у циклі (пошуком пробілів вручну, або ж функцією strtok()).