С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/34: Рейтинг темы: голосов - 34, средняя оценка - 4.85
1 / 1 / 3
Регистрация: 09.11.2009
Сообщений: 51

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

11.11.2009, 01:03. Показов 6578. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана строка текста, в которой слова разделены пробелами. Необходимо:
- определить количество слов в строке;
- вывести все слова строки в порядке убывания их длин;
- Вывести на экран все слова с четными номерами.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.11.2009, 01:03
Ответы с готовыми решениями:

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

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

Вывести на экран слова в порядке невозрастания (убывания) их длин
Из произвольного текста, содержащего не более 10 строк, в каждой строке не более 80 символов, вывести на экран слова в порядке убывания их...

15
 Аватар для patriot2008
73 / 73 / 10
Регистрация: 04.12.2008
Сообщений: 458
11.11.2009, 01:15
Алгоритм такой:
1. проход по строке до конца, и если попадается пробел, что счетчик ++. А также идет паралельно массив счетчиков для каждого слова и посчитывает длину.
2. сортировка массива счетчиков по убыванию
3. если длина слова %2 == 0, то вывод этого слова на экран

Цитата Сообщение от toni90 Посмотреть сообщение
- Вывести на экран все слова с четными номерами.
Хотя здесь непонятно: с четными номерами как они стоят в предложении или с четными номерами их длин... ??
1
1 / 1 / 3
Регистрация: 09.11.2009
Сообщений: 51
11.11.2009, 01:20  [ТС]
Цитата Сообщение от patriot2008 Посмотреть сообщение
Хотя здесь непонятно: с четными номерами как они стоят в предложении или с четными номерами их длин... ??
Здесь имелось ввиду с четными номерами как они стоят в предложении...
0
 Аватар для patriot2008
73 / 73 / 10
Регистрация: 04.12.2008
Сообщений: 458
11.11.2009, 01:24
Цитата Сообщение от toni90 Посмотреть сообщение
Здесь имелось ввиду с четными номерами как они стоят в предложении
Ну это еще проще...
Тогда пункт 3 такой: проход по той же строке, и если счетчик%2==0, то выводим это слово...
1
1 / 1 / 3
Регистрация: 09.11.2009
Сообщений: 51
11.11.2009, 01:26  [ТС]
Количество слов я посчитал, а вот сортировать не получается... с сортировками у меня всегда было плохо... если не трудно помоги пожалуйста...

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
//---------------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <iostream.h>
#include <vcl.h>
#pragma hdrstop
#include <tchar.h>
//---------------------------------------------------------------------------
 
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
char s[255];
cout<<"Vvedite stroku: ";
gets(s);
unsigned int a,i;
a=0;
for (i=0;i<strlen(s)-1;i++)
  if ((s[i]==' ') && (s[i+1]!=' '))
   a=a+1;
if (s[0]!=' ')
 a=a+1;
cout<<"V vedenoj stroke slov: "<<a;
getch();
}
 
//---------------------------------------------------------------------------
0
 Аватар для patriot2008
73 / 73 / 10
Регистрация: 04.12.2008
Сообщений: 458
11.11.2009, 01:42
Вот немного коректности:
C++
1
2
3
4
5
6
7
8
9
10
11
int arrCount[255];
for (i=0;i<255;i++)
      arrCount[i]=0; //обнуление счетчиков букв в словах
for (i=0;i<strlen(s)-1;i++)
{
      if ((s[i]==' ') || (s[i+1]!='\0'))
          a++;  //подсчет слов
      else
          arrCount[a]++; //подсчет букв в слове
          
}
Ну а дальше самая простая сортировка массива arrCount...
Прогу эту не тестил, но думаю все правильно...
1
1 / 1 / 3
Регистрация: 09.11.2009
Сообщений: 51
11.11.2009, 02:18  [ТС]
неа... не пашет.... помоги пожалуйста.... очень надо..
0
 Аватар для patriot2008
73 / 73 / 10
Регистрация: 04.12.2008
Сообщений: 458
11.11.2009, 17:01
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Вот тебе рабочая прога, думаю, что есть решение попроще моего... Но все же
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
#include <iostream>
using namespace std;
void SortHoar(char **a, int n);
void main()
{
 
    char s[255];
    char s2[255][255];
    cout<<"Enter string: ";
    gets(s);
    unsigned int a,i;
    a=0;
    int arrCount[255];
    int ind=0;
    for (i=0;i<255;i++)
                  arrCount[i]=0; //обнуление счетчиков букв в словах
    for (i=0;i<strlen(s);i++)
    {
                     if (s[i]==' ')
            {
                   s2[a][ind] = ' ';
           ind=0;
                            a++;  //подсчет слов
            }
                     else
            {
                              arrCount[a]++; //подсчет букв в слове
                              s2[a][ind++]=s[i];
             }
    }
    cout << "All words  " <<a+1 << endl << endl;
    for (i=0;i<=a;i++)
    {
        for(int j=0;j<arrCount[i]; j++)
        {
            cout << s2[i][j];
        }
        cout << endl;
}
 
 
}
Остается только отвортировать массив слов s2. Условие сортировки: сравнивание strlen(s2[i]). Думаю, что сортировок на этом форуме предостаточно....
1
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
11.11.2009, 17:43
C++
1
2
3
4
5
6
int i, c;
c=i=0;
while((c=getchar())!=EOF){
if(c='\n')
if(c=' ')++i;
}
вот это подсчет слов
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
11.11.2009, 17:55
Цитата Сообщение от МедведЪ Посмотреть сообщение
C++
1
2
3
4
5
6
int i, c;
c=i=0;
while((c=getchar())!=EOF){
if(c='\n')
if(c=' ')++i;
}
вот это подсчет слов
косяк это, а не подсчёт слов!
if(c='\n')
if(c=' ')++i;
во-первых if ( c== '\n') - сравнение, а не присваивание
во-вторых при таком подходе i будет всегда увеличиваться потому, что выражение if ( с = ' ' ) всегда будет истинным, а с будет равно ' '. Если же = заменить на ==, всё равно ерунда получится:
if ( c == '\n' )
if ( c == ' ' ) /* всегда ложно, с содержит '\n' */
переменной i увеличиться не судьба...
1
425 / 229 / 87
Регистрация: 25.03.2009
Сообщений: 744
11.11.2009, 18:22
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
bool compare(const string &a, const string &b)
{
    return a.length() > b.length() ;
}
int main()
{
    setlocale(LC_ALL, "RUSSIAN") ;
    string temp ; 
    vector < string > a ; 
    cout << "введите слово" << endl ;
    cin >> temp ;
    while (temp!="0")
    {
        a.push_back(temp) ;
        cout << "введите очередное слово" << endl ;
        cin >> temp ; 
    }
    cout << "всего слов в строке - " << ' ' << a.size() << endl ;
    cout << "слова с чётными индексами" << endl ; 
    for (size_t i = 0 ; i < a.size() ; i+=2)
        cout << a[i] << endl ;
    sort(a.begin(),a.end(),compare) ;
    cout << "слова в порядке убывания длин:" << endl ;
    copy(a.begin(),a.end(),ostream_iterator<string>(cout," ")) ;
    cout << endl ; 
    return 0;
}
1
 Аватар для patriot2008
73 / 73 / 10
Регистрация: 04.12.2008
Сообщений: 458
11.11.2009, 19:06
Эх, STL... Все намного проще...
0
425 / 229 / 87
Регистрация: 25.03.2009
Сообщений: 744
11.11.2009, 19:09
patriot2008, можно и на СИ чистом конечно но зачем?)
0
 Аватар для patriot2008
73 / 73 / 10
Регистрация: 04.12.2008
Сообщений: 458
11.11.2009, 19:36
Это зависит от того кто будет принимать задачу. Подойдет STL или нет.
0
425 / 229 / 87
Регистрация: 25.03.2009
Сообщений: 744
11.11.2009, 19:37
patriot2008, ну это ясно я пишу просто чтобы он видел один из вариантов а там отфильтрует какой ему подойдёт из предложенных )
0
1 / 1 / 3
Регистрация: 09.11.2009
Сообщений: 51
11.11.2009, 23:21  [ТС]
Всем спасибо!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.11.2009, 23:21
Помогаю со студенческими работами здесь

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

Даны три строки. Вывести строки на экран в порядке убывания их длин
Даны три строки. Вывести строки на экран в порядке убывания их длин. Вот что я написал #include &lt;string.h&gt; #include...

Строки. Напечатать все слова предложения в порядке неубывания их длин
дано предложение.слова разделены пробелами.в конце точка.напечатать все его слова в порядке неубывания их длин. Добавлено через 15...

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

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


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru