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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
awards
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 12
#1

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

01.10.2013, 12:36. Просмотров 269. Ответов 7
Метки нет (Все метки)

Расположить предложения в порядке неубывания числа слов в них.

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

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

Строковые типа данных - C++
Дан текст, состоящий не менее чем из пяти слов. Написать программу, которая выполняет следующие преобразования: в первом слове делает за-...

Двумерный массив. Программу написать используя указатели и строковые функции. - C++
#include <iostream.h> int num (int **a, const int n, const int m); void sum (int **b, const int k, const int r); int main () { int...

В массив типа double записываю целые числа (типа int), но ошибка не вылазиет! - C++
Вот программулька: #include <iostream> using namespace std; #include <conio.h> int main() { double arr={1,2,3,4,5}; ...

Читать строку типа string из файла, разбить ее на массив слов типа char - C++
Нужно сделать так что бы строчка вида "<слово1>:<слово2>:<слово3>:<слово4>" , считывалась и каждое слово заносилось в свою переменную....

Сформировать массив типа bool из массива типа char - C++
Доброго времени суток! После ввода элементов массива вылазит ошибка "Необработанное исключение: System.NullReferenceException ... "...

Перевести строку типа char в массив типа int - C++
Задание : В текстовом файле INPUT.TXT записаны целые числа через пробел, возможно, в несколько строк. За один просмотр файла сформировать...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6465 / 3113 / 306
Регистрация: 04.12.2011
Сообщений: 8,587
Записей в блоге: 4
01.10.2013, 13:54 #2
Цитата Сообщение от awards Посмотреть сообщение
Если можно ещё и блок-схему(или только блок-схему), т.к. программировать на Си начала недавно и пока трудно разобраться.
awards, так на С или С++ написать?
0
HedgehogLu
147 / 68 / 1
Регистрация: 04.09.2013
Сообщений: 260
01.10.2013, 14:40 #3
где именно возникают у вас проблемы в алгоритме и программе?
0
awards
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 12
02.10.2013, 23:01  [ТС] #4
Цитата Сообщение от IGPIGP Посмотреть сообщение
awards, так на С или С++ написать?
Написать на С++.

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

Вот вам и алгоритм.
Если же сложно пользоваться динамическими списками можно внести ограничение на максимальное количество слов в предложений и предложений вообще. И после этого использовать массивы.
0
awards
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 12
02.10.2013, 23:18  [ТС] #6
Здесь нужно использовать принцип сортировки массива по неубыванию элементов в строке, я правильно понимаю?
0
HedgehogLu
147 / 68 / 1
Регистрация: 04.09.2013
Сообщений: 260
02.10.2013, 23:25 #7
Цитата Сообщение от awards Посмотреть сообщение
Расположить предложения в порядке неубывания числа слов в них.
проще говоря каждое следующее предложение содержит столько же или больше слов чем предыдущее.
протокол формирования предложения указан ниже в задании
Цитата Сообщение от awards Посмотреть сообщение
(При этом считать, что число предложений и число строк могут не совпадать, каждое слово находится целиком в одной строке, ввод строки завершается нажатием клавиши ENTER, точка – конец предложения).
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6465 / 3113 / 306
Регистрация: 04.12.2011
Сообщений: 8,587
Записей в блоге: 4
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;
}
алгоритм не сложный.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2013, 00:17
Привет! Вот еще темы с ответами:

Передать массив элементов(типа int) объекта, в функцию из массивов(типа int) - C++
Представьте такую ситуацию. Есть у вас массив чисел: Mass И вы хотите передать его в функцию. Я делаю это так: //объявим ф-ю: ...

Добавление в массив типа char * одного элемента типа char - C++
Дан класс Строка, содержащий указатель на char - адрес динамически выделенной для размещения символов строки памяти и длину строки. Нужен...

Работа с памятью: можно ли в массив объектов с полем типа "Родитель", вписать объекты с полем типа "Потомок" - C++
Здравствуйте. Предположим, что у нас есть массив из структур в которых находиться класс Item и число Count. Можно ли на место Item записать...

Возврат объекта шаблонного типа от типа Type из специализации шаблона метода от того же типа - C++
Доброго времени суток, пишу класс содержащий несколько std::set от разных типов, нужно сделать метод возвращающий указатель на нужное...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.10.2013, 00:17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru