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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Fobys
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 6
#1

Вывести все слова строки в порядке убывания - C++

02.10.2012, 01:26. Просмотров 1445. Ответов 4
Метки нет (Все метки)

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

Я тут начал
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
#include <iostream>
#include <string.h>
#include <stdio.h>
//Дана строка текста, в которой слова разделены пробелами.Необходимо:
// определить количество слов в строке,
// вывести все слова строки в порядке убывания их длинны,
// вывести на экран все слова с чётными номерами.
using namespace std;
 setlocale(LC_ALL,"Russian"); // установка отображения русского шрифта
 
int main()
{const int max=80; // максимальная длинна строки
char str[max];
cout<<"vvedite stroky: ";
cin.getline(str,max);
cout<<"Vvedennaya stroka: "<<str<<endl;
fgets(str, max, stdin);
int l=strlen(str);
int i, a=0;
for(i=0; i<1; i++)
 if(str[i]==' ')
a++;
cout<<"vivod spaes: "<<a;
 
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2012, 01:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести все слова строки в порядке убывания (C++):

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

Вывести слова строки в порядке убывания длины - C++
требуется написать программу которая: -считает количество слов в предложении -выводит слова строки в порядке убывания ее длины ...

Вывести слова строки в порядке убывания числа букв в них - C++
Собственно, имеется готовая на половину программа: #include &quot;stdio.h&quot; #include &quot;conio.h&quot; #include &quot;math.h&quot; #include &quot;string.h&quot; ...

Вывести все четные числа массива в порядке возрастания их индексов, а затем все нечетные в порядке убывания - C++
Дан целочисленный массив размера N.Вывести в начале все содержащиеся в данном массиве четные числа в порядке возрастания их индексов, а...

Вывести слова в порядке убывания их длин - C++
Дано предложение состоящее только из букв латинского алфавита с нижним и (или) верхним регистром букв. Вывести слова в порядке убывания их...

Вывести слова в порядке убывания количества символов - C++
Помогите написать программу на Turbo C: Дано предложение. Вывести слова в порядке убывания количества символов.

4
AnreyKazakov
Заблокирован
02.10.2012, 02:25 #2
Строка в стиле си должна быть?

Добавлено через 36 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cstring>
using namespace std;
int main(){
    const int max=80; // максимальная длинна строки
    char str[max];
    cout<<"vvedite stroky: ";
    cin.getline(str,max);
    cout<<"Redact stroka: ";
    int i=0,sum=1;
    while(str[i]){
        if(str[i]==' ')++sum;
        if(!(sum%2))cout<<str[i];   
        ++i;
        }
    cout<<" : kol-vo slov - "<<sum<<endl;   
    return 0;
    }
выводит слова через одно (зависит от !sum%2, для инверсии можно убрать "!")
считает кол-во слов,
про ограничения ничего не было сказано, поэтому строка не должна начинаться и заканчиваться символами пробел (тогда надо подправлять чтоб обрезала), между словами долж быть один пробел, иначе лишни сосчитает как слово (если будут тоже надо проходить и удалять лишние), ну и не должна быть пустой, если будет пустая выдаст 1 слово. дабы избежать можно проверять на кол-во символов функцией strlen() или еще как , я в строках си не шарю... =(
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.10.2012, 02:49 #3
Код
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
41
42
43
44
45
46
47
48
49
50
51
52
53
//Дана строка текста, в которой слова разделены пробелами. Необходимо:
// определить количество слов в строке,
// вывести все слова строки в порядке убывания их длинны,
// вывести на экран все слова с чётными номерами.
 
#include <string>
#include <vector>
#include <algorithm>
#include <windows.h>
#include <iostream>
using namespace std;
 
bool fcomp(string str1, string str2)
{
    return str1.size() > str2.size();
}
 
int main()
{
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 
 vector <string> vec;
 
 cout << "Введите строку: ";
 
 while (true)
 {
    string str;
    cin >> str;
    vec.push_back(str);
    if (cin.peek() == '\n') break;
 }
 
 cout << "\nВведённая строка: ";
 for (int i = 0; i < vec.size(); i++)
    cout << vec[i] << ' ';
 
 cout << endl << "\nКоличество слов в строке: " << vec.size() << endl;
 
 cout << "\nСлова строки с чётными номерами: \n";
 for (int i = 1; i < vec.size(); i += 2)
    cout << vec[i] << endl;
 
 cout << "\nСлова строки в порядке убывания их длины:\n";
 sort(vec.begin(), vec.end(), fcomp);
 for (int i = 0; i < vec.size(); i++)
    cout << vec[i] << endl;
 
 cout << endl;
 system("pause");
 return 0;
 }
1
AnreyKazakov
Заблокирован
02.10.2012, 03:47 #4
Можно вставить перед return в предыдущем коде. Выводит в порядке убывания слова.... хотел c map решить. Но потом подумал что извращение строку в стиле си в карту пихать =( лучше уж так ->
без указателей, без контейнеров, но опять таки некрасиво =( да и ладно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    str[strlen(str)+1]='\0';//добавить в конец строки пробел
    str[strlen(str)]=' ';
    int j=0,b=0,bmax=0,imax=0;
    for(j=0;j!=sum;++j){//пробегаем от 0 до количества слов
        i=0;imax=0;b=0;
           while(str[i]){ //ище максим элемент в строке и его индекс
           if(bmax<b){bmax=b;imax=i-bmax;}
           if(str[i]==' ')b=-1;
           ++i;++b;
           }
           while(bmax!=0){ //выводим слово и заменяем пробелами в исходной строке
               cout<<str[imax];
               str[imax]=' ';
               ++imax; --bmax;
               }
            cout<<" ";   
        }
    cout<<endl;
1
Fobys
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 6
02.10.2012, 13:43  [ТС] #5
Спасибо все кто помог_)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2012, 13:43
Привет! Вот еще темы с ответами:

Вывести в порядке убывания все целые числа, расположенные между A и B - C++
1.частное от деления нацело,а также остаток от этого деления. Даны целые положительные числа N и K. Используя только операции сложения и...

Вывести в порядке убывания все целые числа заданного интервала - C++
3. Данные два целых числа А и В (А &lt; В). Вывести в порядке убывания все целые числа, расположенные между А и В (не включая числа А и В), а...

Вывести в порядке убывания все целые числа, расположенные между A и B - C++
Даны два целых числа A и B (A &lt; B). Вывести в порядке убывания все це-лые числа, расположенные между A и B (не включая числа A и B), а...

Вывести в порядке убывания все целые числа, расположенные в заданном диапазоне - C++
3. Данные два целых числа А и В (А &lt; В). Вывести в порядке убывания все целые числа, расположенные между А и В (не включая числа А и В), а...


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

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

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