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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Icu итератор http://www.cyberforum.ru/cpp-beginners/thread1775959.html
Здравствуйте. Подскажите как с помощью icu проитерировать посимвольно UnicodeString и на выходе получить то, что сразу можно в обычный string запихнуть. Нагуглил такой вариант: #include <unicode/unistr.h> #include <unicode/uchriter.h> /******/ icu::UnicodeString ustr("Привет Мир! Hello World! 世界,你好!"); const UChar *testText = ustr.getTerminatedBuffer(); ...
C (СИ) Как оптимальнее прочитать текст из файла - целиком или поблочно? #include "stdafx.h" #include <conio.h> #include <locale.h> #include <string> char buf={}; int _tmain(int argc, _TCHAR* argv) { setlocale(LC_ALL,"RUS"); char filename={}; printf("Введите название файла:"); http://www.cyberforum.ru/cpp-beginners/thread1775912.html
C++ Получить таблицу температур используя список
Данную программу я написал работает верно, но как её можно реализовать с помощью списка, помогите пожалуйста #include <stdio.h> #include <conio.h> void main () { float c,f; float t1,t2,dt; printf("t1->"); scanf("%f", &t1);
C++ Найти максимальный элемент среди элементов кратных 2
Найти максимальный элемент среди элементов кратных 2.
C++ Сформировать предложение из слов заданной длины, в которых нет перевернутой заданной подстроки, но есть сама http://www.cyberforum.ru/cpp-beginners/thread1775831.html
Дан массив слов и подстрока. Сформировать предложение из слов заданной длины, в которых нет перевернутой заданной подстроки, но есть сама заданная подстрока. Перед включением в предложение удалить из слов первое вхождение заданной подстроки.
C++ Заменить в слове все маленькие латинские буквы от ‘a’ до ‘y’ на следующие по алфавиту Дано слово. Заменить в слове все маленькие латинские буквы от ‘a’ до ‘y’ на следующие по алфавиту (для слова “abc2=zx0” получаем “bcd2=zy0”). подробнее

Показать сообщение отдельно
Sloot
0 / 0 / 0
Регистрация: 04.07.2016
Сообщений: 3
05.07.2016, 11:03     Напечатать слова последовательности, которые отличны от последнего слова
Здравствуйте! Мне нужна помощь с заданием. Я не могу вывести на экран слово отличное от последнего, а так же при максимальной последовательности учитывается точка. А так же иногда не учитывается первое слово. Если вводить его без повторений, то оно не отображается.

Тема: Строки

Дана последовательность, содержащая до 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru