1 / 0 / 2
Регистрация: 27.04.2017
Сообщений: 57

На основе исходной сформировать новую строку, в которой самое длинное слово поставить в начало

19.10.2017, 08:15. Показов 1512. Ответов 6

Студворк — интернет-сервис помощи студентам
Приветствую всех пользователей форума) Собственно вот сама задача:
Дана строка. На основе исходной сформировать новую строку, в которой самое длинное слово поставить в начало. Посчитать количество прописных и строчных букв. Удалить из слов все цифры.
Опишу проблему. Не получается удалить из слов все цифры. Задания нужно делать именно в порядке указанном задании (( тавтология )). Посчитать количество прописных и строчных букв, не так сложно. Сложность у меня вызвало задание с удалением цифр. ----- Сразу объясню. Нет, использовать стринг и вектора нельзя, т.к. суть задания сделать именно через массивы. (( Не я придумал )).
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
#include <iostream>
#include <windows.h>
#include <string>
 
#include <stdio.h>
using namespace std;
 
int main()
{
 
    setlocale(LC_ALL,"RUSSIAN");
    char string[] = "this is string -  "; // объявление и инициализация строки
    cout << "Enter the string: ";
    char game[500]; // строковый массив для ввода
    cin.getline(game, 500); // функция gets() считывеает вс введённые символы с пробелами до тех пор, пока не будет нажата клавиша Enter
 //   cout << string << game << endl;
    int k = strlen(game);
    cout << k << endl;
    char stroka[100][100]={};
    int h = 1;
    int j = 0;
    int e = 0;
    int key[100];
char character;
    for(int i =0; i< k; i++)
    {
            if(game[i]!= ' ')
            {
                stroka[h][j] = game[i];
                j++;
                key[e] = j;
            }
            else
            {
                stroka[h][j] = '\0';
                h++;
                e++;
                j=0;
            }
    }
    stroka[h][j] = '\0';
    for(int i=0; i<j; i++)
    {
        cout << stroka[i] << endl;
    }
    for(int i=0; i<=e; i++)
    {
        cout << "Размер " << i+1 << " слова: " << key[i] << endl;
    }
    int max = key[0];
    int t;
    int lock;
    for (t = 1; t <= e; t++) {
        if (key[t] > max) {
            max = key[t];
            lock = t;
        }
    }
    int lok;
    if(lock != 0)
    {
        cout <<"длина: " << max << " " << lock << endl << stroka[lock+1] << " ";
        lok = lock+1;
    }
    if(lock == 0)
    {
        cout <<"длина: " << max << " " << lock << endl << stroka[lock+1] << " ";
        lok = lock+1;
    }
j =0;
for(int i = 0; i<=k; i++)
{
    character = stroka[i][j];
    if(isdigit(character)==false)
    {
 
        if(stroka[i][j]!='\0')
        {
            if(stroka[i]!= stroka[lok])
            {
                cout << stroka[i] << " ";
            }
            else
            {
            cout << stroka[i+1] << " ";
            }
        }
    }
        if(isdigit(character)==true)
        {
            j++;
        }
}
cout << endl;
 
cout << endl;
system("pause");
return 0;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.10.2017, 08:15
Ответы с готовыми решениями:

Строка: На основе исходной сформировать новую строку, в которой самое длинное слово поставить в начало.
Дана строка. На основе исходной сформировать новую строку, в которой самое длинное слово поставить в начало. Посчитать количество прописных...

Сформировать новую строку, расположив в ее начале самое короткое слово, затем самое длинное, и все остальные
Задание такое: В строке символов найти самое длинное и самое короткое слово. Сфор-мировать новую строку, расположив в ее начале самое...

Сформировать новую строку на основе исходной, в которой после каждого слова в скобках указать номер слова
Всем доброго времени суток, нужно вот такое на С# Ввести с клавиатуры текст предложения, завершить точкой. Сформировать новую строку...

6
 Аватар для Геомеханик
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
19.10.2017, 10:15
Цитата Сообщение от Luis_Barton Посмотреть сообщение
самое длинное слово поставить в начало
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
#include <iostream>
#include <cctype>
 
char* move_maxword(char* s){
    int   n = 0,  i = 0, k = 0;
    char* t = s, *w = NULL;
    //поиск самого длинного слова
    do {
        if(isalnum(*s))
            ++i;
        else if(i > 0){
            if(i > n){
                n = i;
                w = s - i;
            }
            i = 0;
            ++k;
        }
    } while(*s++ != '\0');
 
    if(k <= 1)
        return t;
 
    //переместить слово в начало
    for(s = t; isalnum(*w); ++s){
        for(char* p = w++; p > s; --p)
            std::swap(*p, *(p - 1));
    }
 
    //переместить разделитель
    for(char* p = (!*w) ? w - 1 : w; p > s; --p)
        std::swap(*p, *(p - 1));
    return t;
}
 
int main(void){
    char s[] = "C99 PHP5 ALGOL ADA";
    std::cout << move_maxword(s) << std::endl;
    std::cin.get();
    return 0;
}
0
1 / 0 / 2
Регистрация: 27.04.2017
Сообщений: 57
19.10.2017, 15:09  [ТС]
Я уже сделал вывод самого длинного слова первым (( писал на CodeBlocks )) Я указал конкретную задачу по которой мне нужна помощь.
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
19.10.2017, 16:21
Лучший ответ Сообщение было отмечено Luis_Barton как решение

Решение

Цитата Сообщение от Luis_Barton Посмотреть сообщение
Удалить из слов все цифры
C++
1
2
3
4
5
6
7
char str[] = "1a2b3c4 def4r45gh6i 4j2k1l0 mno34pqr88 s6t777uvw x4y 1z2";
int last_index=0;
for(int i=0; i<strlen(str); i++)
    if(!isdigit(str[i]))
        str[last_index++]=str[i];
str[last_index] = '\0';
cout << str << endl;
1
1 / 0 / 2
Регистрация: 27.04.2017
Сообщений: 57
20.10.2017, 06:40  [ТС]
Если вы не заметили, то подведу напрямую. Во первых, все мои слова задаются с клавиатуры. И удаление цифр должно производится практически в конце программы. Но спасибо за ответ.
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
20.10.2017, 10:37
Цитата Сообщение от Luis_Barton Посмотреть сообщение
Если вы не заметили, то подведу напрямую. Во первых, все мои слова задаются с клавиатуры.
На ответ Геомеханик, вы заявили
Цитата Сообщение от Luis_Barton Посмотреть сообщение
Я указал конкретную задачу по которой мне нужна помощь
Это помощь по конкретной задаче.
Поэтому, откуда задаются все ваши слова: с клавиатуры, рандомно или заносятся в компьютер усилием мысли, никакой разницы нет.
Цитата Сообщение от Luis_Barton Посмотреть сообщение
И удаление цифр должно производится практически в конце программы.
Ну так используйте этот код практически в конце программы.
Цитата Сообщение от Luis_Barton Посмотреть сообщение
Но спасибо за ответ
Всегда пожалуйста!
1
1 / 0 / 2
Регистрация: 27.04.2017
Сообщений: 57
20.10.2017, 14:56  [ТС]
Проблема решена. Тема закрыта.

Готовая программа. Оптимизация хромает, если кому потребуется можете брать на вооружение и доработаете.
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
#include <iostream>
#include <windows.h>
#include <string>
#include <ctype.h>
#include <stdio.h>
using namespace std;
 
int main()
{
 
    setlocale(LC_ALL,"RUSSIAN");
    char string[] = "this is string -  "; // объявление и инициализация строки
    cout << "Enter the string: ";
    char game[500]; // строковый массив для ввода
    cin.getline(game, 500); // функция gets() считывеает вс введённые символы с пробелами до тех пор, пока не будет нажата клавиша Enter
 //   cout << string << game << endl;
    int k = strlen(game);
    cout << k << endl;
    char stroka[100][100]={};
    int h = 1;
    int j = 0;
    int e = 0;
    int key[100];
    int lower;
    lower = 0;
    int hige;
    hige = 0;
char character;
    for(int i =0; i< k; i++)
    {
            if(game[i]!= ' ')
            {
                stroka[h][j] = game[i];
                j++;
                key[e] = j;
                if(islower(game[i]) && isalpha(game[i]))
                {
                   lower++;
                }
                if(isupper(game[i]) && isalpha(game[i])) hige ++;
 
            }
            else
            {
                stroka[h][j] = '\0';
                h++;
                e++;
                j=0;
            }
    }
    stroka[h][j] = '\0';
    for(int i=0; i<j; i++)
    {
        cout << stroka[i] << endl;
    }
    for(int i=0; i<=e; i++)
    {
        cout << "Размер " << i+1 << " слова: " << key[i] << endl;
    }
    int max = key[0];
    int t;
    int lock;
    for (t = 1; t <= e; t++) {
        if (key[t] > max) {
            max = key[t];
            lock = t;
        }
    }
    int lok;
    if(lock != 0)
    {
        cout <<"длина: " << max << " " << lock << endl << stroka[lock+1] << " ";
        lok = lock+1;
    }
    if(lock == 0)
    {
        cout <<"длина: " << max << " " << lock << endl << stroka[lock+1] << " ";
        lok = lock+1;
    }
j =0;
for(int i = 0; i<=e; i++)
    {
        for(j=0; j<key[i];j++)
        {
 
        character = stroka[i][j];
        if(isdigit(character)==false)
        {
 
            if(stroka[i][j]!='\0')
            {
                if(i!= lok)
                {
                    cout << stroka[i][j];
                }
            }
        }
        //cout << " ";
    }
            cout << " ";
}
cout << endl;
 
cout << endl;
cout << "Мелкие - " << lower << endl;
cout << "Большие - " << hige << endl;
system("pause");
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.10.2017, 14:56
Помогаю со студенческими работами здесь

Текстовые файлы. Найти самое длинное слово и строку в которой оно находится
Найти самое длинное слово текстового файла Test и рядок, в котором оно находиться. Спасибо)

Сформировать новую строку, в которой слова исходной будут следовать в обратном порядке
Нужна срочно ваша помощь...Не могу написать код для следующей задачи: &quot;Задан текст, состоящий из слов, записанных через запятые и/или...

Сформировать новую строку на основе исходной, взяв из нее каждый третий символ (SWI Prolog)
подскажите пожалуйста: 1).как сформировать новую строку на основе исходной, взяв из нее каждый 3й символ. 2).Сказочник В базе знаний...

На основе исходной матрицы сформировать новую, в которой строка матрицы с номером n, умноженная на число z, прибавлена к строке
помогите пожалуйста срочно надо . На основе исходной матрицы сформировать новую, в которой строка матрицы с номером n, умноженная на число...

Сформировать новую строку следующим образом: каждое слово исходной строки записать слева направо
Дана строка. Сформировать новую строку следующим образом: каждое слово исходной строки записать слева направо. Помогите пожалуйста


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
Изучаем новый шаблон ИИ-чата .NET AI Chat Web App
stackOverflow 10.07.2025
В . NET появилось интересное обновление - новый шаблон ИИ-чата под названием . NET AI Chat Web App. Когда я впервые наткнулся на анонс этого шаблона, то сразу понял, что Microsoft наконец-то. . .
Результаты исследования от команды ARP (июль 2025 г.)
Programma_Boinc 10.07.2025
Результаты исследования от команды ARP (июль 2025 г. ) Африканский проект по дождям (ARP) World Community Grid снова запущен! Мы рады поделиться обновленной информацией о нашем прогрессе с осени. . .
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
Code First и Database First в Entity Framework
UnmanagedCoder 09.07.2025
Entity Framework дает нам свободу выбора, предлагая как Code First, так и Database First подходы. Но эта свобода порождает вечный вопрос — какой подход выбрать? Entity Framework — это. . .
Как использовать Bluetooth-модуль HC-05 с Arduino
Wired 08.07.2025
Bluetooth - это технология, созданная чтобы заменить кабельные соединения. Обычно ее используют для связи небольших устройств: мобильных телефонов, ноутбуков, наушников и т. д. Работает она на частоте. . .
Руководство по структурам данных Python
AI_Generated 08.07.2025
Я отчетливо помню свои первые серьезные проекты на Python - я писал код, он работал, заказчики были относительно довольны. Но однажды мой наставник, взглянув на мою реализацию поиска по огромному. . .
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах
Programma_Boinc 08.07.2025
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах Опубликовано: 07. 07. 2025 Рубрика: Uncategorized Автор: AlexA Статья размещается на сайте с разрешения. . .
Раскрываем внутренние механики Android с помощью контекста и манифеста
mobDevWorks 07.07.2025
Каждый Android-разработчик сталкивается с Context и манифестом буквально в первый день работы. Но много ли мы задумываемся о том, что скрывается за этими обыденными элементами? Я, честно говоря,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru