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

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

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

Напечатать слова последовательности, которые отличны от последнего слова - C++

05.07.2016, 11:03. Просмотров 101. Ответов 0
Метки нет (Все метки)

Здравствуйте! Мне нужна помощь с заданием. Я не могу вывести на экран слово отличное от последнего, а так же при максимальной последовательности учитывается точка. А так же иногда не учитывается первое слово. Если вводить его без повторений, то оно не отображается.

Тема: Строки

Дана последовательность, содержащая до 5 слов, в каждом из которых до 5 строчных латинских букв; между соседними словами — не менее одного пробела, за последним словом — точка. Напечатать те слова последовательности, которые отличны от последнего слова и удовлетворяют следующему свойству:
1) длина слова максимальна;
2) в слове нет повторяющихся букв.
Мой код:
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
#include "stdafx.h"
#include <iostream>
#include <cstring>
#include <string>
#define _CRT_SECURE_NO_WARNINGS
 
using namespace std;
enum check { NO, YES };
 
 
void strComparsion(const char *str1, const char *str2, const int beginStr2, const int endStr2);
void f(char str[]);
 
int main()
{
    setlocale(LC_ALL, "rus");
    char arrWord[255];
    int counterSpace = 0; //Счетчик пробелов
    char strOneBuffer[9]; //Массив для первого слова
 
    cout << "Последовательность: ";
    gets_s(arrWord);
    cout << "Слова без повторения: ";
 
    //Копируем первое слов  в отдельный массив
    for (int i = 0; arrWord[i - 2] != ' '; i++)
    {
        strOneBuffer[i] = arrWord[i];
        if (arrWord[i] == ' ')
        {
            strOneBuffer[i] = '\0';
            counterSpace = i;
        }
    }
 
    for (int i = counterSpace + 1, j = counterSpace + 1; arrWord[i] != '\0'; i++)
    if (arrWord[i] == ' ' || arrWord[i] == '.')
    {
        strComparsion(strOneBuffer, arrWord, j, i);
        j = i + 1;
    }
    f(arrWord);
    cout << endl;
    system("pause");
}
void strComparsion(const char *str1, const char *str2, const int beginStr2, const int endStr2)
{
    //Флаги
    int countSymbol = 0;
    int repeatSymbol = 0;
 
    //Сравниваем слова с первым словом
    if (strlen(str1) == endStr2 - beginStr2)
    for (int i = 0, j = beginStr2; j < endStr2; i++, j++)
    if (str2[j] == str1[i])
        countSymbol++;
 
    //Ищем повторяющийся буквы в слове
    for (int i = beginStr2; i < endStr2; i++)
    for (int j = beginStr2; j < endStr2; j++)
    {
        if (i == j)
            continue;
        if (str2[i] == str2[j])
            repeatSymbol++;
    }
 
    //Выводим слово по требуеиым критериям
    if (countSymbol < strlen(str1) && repeatSymbol == 0)
    for (int i = beginStr2; i < endStr2; i++)
    {
        cout << str2[i];
        if (i == endStr2 - 1)
            cout << " ";
    }
}
 
void f(char str[])
{
    char smax[100];
    int max = 0, a;
    char s[100];
    for (int i = 0; i < strlen(str); i++)
    {
        a = 0;
        strcpy(s, "");
        for (int j = i, k = 0; str[j] != ' ' && str[j] != '\0'; j++, k++)
        {
            a++;
            s[k] = str[j];
        }
        s[a] = '\0';
        if (a > max)
        {
            max = a;
            strcpy(smax, s);
        }
    }
    cout << "\nСамое длинное слово: " << smax << endl;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2016, 11:03     Напечатать слова последовательности, которые отличны от последнего слова
Посмотрите здесь:

C++ Вывести все слова текста, которые отличны от последнего слова, предварительно преобразовав их
C++ Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по заданному правилу
C++ Вывести слова данного предложения, которые отличны от последнего слова
Напечатать все слова, отличающиеся от последнего слова C++
Напечатать все слова, отличные от последнего слова. C++
Задан текст, напечатать слова этого текста отличные от последнего слова C++
ООП. Напечатать слова, отличные от последнего слова, предварительно преобразовав каждое из них по правилу C++
Напечатать слова последовательности, которые отличны от первого и без повторяющихся букв C++
Напечатать те слова данной строки, которые отличны от последнего слова, и в слове нет повторяющихся букв C++
C++ Напечатать те слова последовательности, которые отличны от первого слова и удовлетворяют следующему свойству
С++ Задан текст напечатать слова отличные от последнего слова Visual Studio C++
Напечатать все слова, отличающиеся от последнего слова, в которых буквы упорядочены по алфавиту C++

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

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

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