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

Строковые типа массив - C++

Восстановить пароль Регистрация
 
awards
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 12
01.10.2013, 12:36     Строковые типа массив #1
Расположить предложения в порядке неубывания числа слов в них.

(При этом считать, что число предложений и число строк могут не совпадать, каждое слово находится целиком в одной строке, ввод строки завершается нажатием клавиши ENTER, точка – конец предложения).

Если можно ещё и блок-схему(или только блок-схему), т.к. программировать на Си начала недавно и пока трудно разобраться.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2013, 12:36     Строковые типа массив
Посмотрите здесь:

C++ массив типа char
Функция типа массив C++
Массив типа Char C++
C++ Двумерный массив типа:
Двумерный массив. Программу написать используя указатели и строковые функции. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6167 / 2896 / 282
Регистрация: 04.12.2011
Сообщений: 7,702
Записей в блоге: 3
01.10.2013, 13:54     Строковые типа массив #2
Цитата Сообщение от awards Посмотреть сообщение
Если можно ещё и блок-схему(или только блок-схему), т.к. программировать на Си начала недавно и пока трудно разобраться.
awards, так на С или С++ написать?
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
01.10.2013, 14:40     Строковые типа массив #3
где именно возникают у вас проблемы в алгоритме и программе?
awards
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 12
02.10.2013, 23:01  [ТС]     Строковые типа массив #4
Цитата Сообщение от IGPIGP Посмотреть сообщение
awards, так на С или С++ написать?
Написать на С++.

Добавлено через 1 минуту
Проблемы возникают в алгоритме.
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
02.10.2013, 23:11     Строковые типа массив #5
Если в алгоритме, то тут все очень просто.
В идеале предложение у нас получается динамический список слов.
Т.о. предложение получается путем добавления элементов в список через построчный ввод строк.
Концом предложения правда не понятно считать только точку или же слово с точкой в конце. Но то не суть важно. и то и другое можно сделать одинаковой проверкой (последний символ слова равен точке).
Получив предложение мы знаем количество слов в нем.
Т.к количество предложений нам так-же не известно, то предложения добавляются так же в динамический список.
При этом мы добавляем предложение а список таким образом, чтобы у предыдущего предложения количество слов было меньше чем у текущего а у следующего предложения количество слов было не меньше текущего.
Вуаля. Задача готова. При этом она получается готовой в любой момент как только было введено очередное предложение.

Вот вам и алгоритм.
Если же сложно пользоваться динамическими списками можно внести ограничение на максимальное количество слов в предложений и предложений вообще. И после этого использовать массивы.
awards
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 12
02.10.2013, 23:18  [ТС]     Строковые типа массив #6
Здесь нужно использовать принцип сортировки массива по неубыванию элементов в строке, я правильно понимаю?
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
02.10.2013, 23:25     Строковые типа массив #7
Цитата Сообщение от awards Посмотреть сообщение
Расположить предложения в порядке неубывания числа слов в них.
проще говоря каждое следующее предложение содержит столько же или больше слов чем предыдущее.
протокол формирования предложения указан ниже в задании
Цитата Сообщение от awards Посмотреть сообщение
(При этом считать, что число предложений и число строк могут не совпадать, каждое слово находится целиком в одной строке, ввод строки завершается нажатием клавиши ENTER, точка – конец предложения).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2013, 00:17     Строковые типа массив
Еще ссылки по теме:

C++ Передать массив элементов(типа int) объекта, в функцию из массивов(типа int)
C++ В массив типа double записываю целые числа (типа int), но ошибка не вылазиет!
Массив типа set (контейнер) C++

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

Или воспользуйтесь поиском по форуму:
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6167 / 2896 / 282
Регистрация: 04.12.2011
Сообщений: 7,702
Записей в блоге: 3
03.10.2013, 00:17     Строковые типа массив #8
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
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <strstream>
#include <string>
#include <vector>
#include <algorithm>
#include <windows.h>
using namespace std;
int word_count( string sorcStr){
strstream strSream;
strSream << sorcStr;
string word;
int cnt=0;
while( strSream >> word ) cnt++;
return cnt;
}
 
bool compire_str(string a, string b){
    int a_i = word_count( a );
    int b_i = word_count( b );
    if( a_i > b_i ) return true;
    return false;
}
int main(){
SetConsoleCP (1251); SetConsoleOutputCP (1251);
vector<string> arr_str;
cout << "Введите строки\nконец ввода - последовательное нажатие Enter (конец последней строки), \nа за тем Cntrl+Z и снова Enter..." <<endl;
const size_t max_strlen = 512;
char inp_str[max_strlen+1];
while(cin.getline(inp_str, max_strlen, '\n')) arr_str.push_back(inp_str);
vector<string>::iterator strt = arr_str.begin();
vector<string>::iterator fnsh = arr_str.end();
cout << "Введено:" << endl;
for(vector<string>::iterator it = strt; it != fnsh; ++it) cout << *it << endl;
sort( strt, fnsh, compire_str );
cout << "Получено:" << endl;
for(vector<string>::iterator it = strt; it != fnsh; ++it)cout << *it << " " << word_count( *it ) << endl;
cout << endl;
system("pause");   
return 0;
}
алгоритм не сложный.
Yandex
Объявления
03.10.2013, 00:17     Строковые типа массив
Ответ Создать тему
Опции темы

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