Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
2 / 2 / 0
Регистрация: 30.09.2011
Сообщений: 10

Переставить слова заданного предложения в соответствии с ростом согласных в этих словах.

25.12.2011, 14:08. Показов 1670. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. В универе дали задачку "Переставить слова заданного предложения в соответствии с ростом согласных в этих словах." Ломал голову 2 недели, но ничего путного не придумал. Запрогать надо на VC++. Буду рад, если кто-нибудь подаст идеи.
Вот мой бред, но это я даже до самой сортировки слов не дошел.
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 "stdafx.h"
#include <iostream>
#include <windows.h> //Перевод на русский язык. Не забываем переключить шрифт в консоли на Lucia
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    SetConsoleCP(1251); 
    SetConsoleOutputCP(1251); //Перевод на русский язык.
    int space[500], omg=0, lol=-1, qwerty[500], dlina;
    /*const int MAX_LINE_LENGTH = 4096;*/
    char string[300]/*, words[MAX_LINE_LENGTH]*/;
    char soglasnye[] = {'Б', 'В', 'Г', 'Д', 'Ж', 'З', 'К', 'Л', 'М', 'Н', 
                        'П', 'Р', 'С', 'Т', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', '\0' };
    cout << "Введите строку: ";
    gets_s(string);
    dlina = strlen(string);
    for(int n=0;n<=dlina;n++){
        for(int k=0, p=0;k<=20;k++){
//Если находит в слове согласную, то +1 к счетчику.
            if(string[n]==soglasnye[k]) omg++;
//Если же находит пробел, то присваиваем кол-во согласных в ячейку массива qwerty, а в другой
//массив записываем место, на котором этот пробел находится. Обнуляем счетчик согласных.
//Все что ниже это лишь мои домыслы, к чему-то нормальному я так и не пришел.
            if(string[n]==' ') {
                lol++;
                qwerty[lol]=omg;
                space[lol]=n;
                omg=0;
            }
        }
    }
    /*for(lol=0;qwerty[lol]!='\0';lol++){*/
        printf("%i\t%i, %i, %i", qwerty[0], space[0], qwerty[1], space[1]);
    //}
    cout << endl;
    system( "pause" ); //Остановка программы перед закрытием.
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.12.2011, 14:08
Ответы с готовыми решениями:

Вывести слова заданного текста в соответствии с ростом доли гласных в этих словах
Никогда не работал с C++, 2 курс университета, надо написать программу по заданию на тему &quot;Обработка текста&quot; Задание: ...

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

Переставить слова заданного предложения в соответствии с ростом согласных в этих словах. Исправить программу
Переставить слова заданного предложения в соответствии с ростом согласных в этих словах. uses crt; const...

5
 Аватар для darkknight2008
62 / 62 / 11
Регистрация: 16.10.2011
Сообщений: 200
25.12.2011, 14:30
Как относиться к знакам препинания? Считать их частью слова или как?
0
2 / 2 / 0
Регистрация: 30.09.2011
Сообщений: 10
25.12.2011, 14:46  [ТС]
Про это ничего не сказано в задании, поэтому, думаю надо считать частью слова.
0
 Аватар для darkknight2008
62 / 62 / 11
Регистрация: 16.10.2011
Сообщений: 200
25.12.2011, 17:16
Почти дописал, но сдох при вводе русских символов. В консоли видны норм, при выводе видны норм, но при обработке не норм. По тогда нужно иметь по 2 байта на символ... короче запарно. Если разберусь, то отпишусь.

Добавлено через 35 минут
Вроде сделал, вот что получилось.
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <iostream>
#include <stdlib.h>
#include <Windows.h>
 
using namespace std;
 
template <class TYPE>
void swap( TYPE *a, TYPE *b )
{
  TYPE tmp = *a;
  *a = *b;
  *b = tmp;
}
 
void main( void )
{
  wcout.imbue(locale("rus_rus.866"));
  wcin.imbue(locale("rus_rus.866"));
  
  const int MAX_STR = 100;
  wchar_t str[MAX_STR + 1];
  const int NUM_OF_SOGL = 20;
  wchar_t sogl_dig[NUM_OF_SOGL] = {L'Б', L'В', L'Г', L'Д', L'Ж', L'З', L'К', L'Л', L'М', L'Н', 
                                   L'П', L'Р', L'С', L'Т', L'Ф', L'Х', L'Ц', L'Ч', L'Ш', L'Щ'};
  wcout << L"Insert string: ";
  wcin.getline(str, MAX_STR);
 
  wchar_t *p = str;
  wchar_t prev = L' ';
  int numOfWords = 0;
  // Ищем кол-во слов
  while (*p != 0)
  {
    // Если наткнулись на начало нового слова
    if (prev == L' ' && *p != L' ')
      numOfWords++;
    prev = *p;
    p++;
  }
 
  // Массив указателей на начало слов
  wchar_t **word = new wchar_t *[numOfWords];
  // Массив кол-в согласных в словах
  int *sogl = new int[numOfWords];
  wchar_t *p2;
  prev = L' ';
  int i = 0, j;
  p = str;
  while (prev != 0)
  {
    // Если наткнулись на начало нового слова
    if (prev == L' ' && *p != L' ')
      word[i] = p;
    else if (prev != L' ' && (*p == L' ' || *p == 0)) // Нашли конец слова
    {
      // Считаем ко-во слагаемых
      sogl[i] = 0;
      p2 = word[i];
      while (*p2 != L' ' && *p2 != 0)
      {
        for (j = 0; j < NUM_OF_SOGL; j++)
        {
          if (*p2 == sogl_dig[j] || *p2 == L'а' + sogl_dig[j] - L'А') // Тута русские буквы
          {
            sogl[i]++;
            break;
          }
        }
        p2++;
      }
      i++;
    }
    prev = *p;
    p++;
  }
  // Заменим все пробелы на 0 для удобства вывода
  p = str;
  while (*p != 0)
  {
    if (*p == L' ')
      *p = 0;
    p++;
  }
 
  // Проверка
  for (i = 0; i < numOfWords; i++)
    wcout << word[i] << L": " << sogl[i] << L"\n";
 
  // Сортируем слова по убыванию согласных
  int max;
  for (i = 0; i < numOfWords - 1; i++)
  {
    max = i;
    for (j = i + 1; j < numOfWords; j++)
      if (sogl[j] > sogl[max])
        max = j;
    if (max != i)
    {
      swap(&sogl[max], &sogl[i]);
      swap(&word[max], &word[i]);
    }
  }
 
  // Выводим слова
  wcout << L"Result: ";
  for (i = 0; i < numOfWords; i++)
    wcout << word[i] << L" ";
  wcout << L"\n";
  system("pause");
}
1
2 / 2 / 0
Регистрация: 30.09.2011
Сообщений: 10
25.12.2011, 21:37  [ТС]
Спасибо большое! Буду разбираться с прогой.
0
 Аватар для darkknight2008
62 / 62 / 11
Регистрация: 16.10.2011
Сообщений: 200
25.12.2011, 21:50
Будут вопросы - пиши.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.12.2011, 21:50
Помогаю со студенческими работами здесь

Упорядочить слова заданного предложения в соответствии с ростом их характеристик
Задание: Характеристикой слова назовем длину содержащейся в нем максимальной серии. Упорядочить слова заданного предложения в...

Упорядочить слова заданного предложения в соответствии с ростом их длины
Помогите решить данную задачку: Упорядочить слова заданного предложения в соответствии с ростом их длины. А еще другое: Описать...

Упорядочить слова заданного предложения в соответствии с ростом их характеристик
Характеристикой слова назовем длину содержащейся в нем мак- симальной серии. Упорядочить слова заданного предложения в соответствии с...

Для каждого слова заданного предложения укажите долю согласных. Определите слово, в котором доля согласных максимальна
Разработайте программу решения задачи с использованием процедур и функций над строками и операций над множествами. 1. Для каждого...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru