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

Операции над строкой. Подсчитать количество слов, которое начинается с той буквы, которой заканчивается предыдущее слово - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как переделать на консоль? http://www.cyberforum.ru/cpp-beginners/thread854048.html
данная задача сделано в форме, нужно чтоб все тодже самое, считалось в консоли //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init)
C++ Вычисление дискриминанта Вроди простая программа но почему то работает некоректно не пойму в чем причина С++ #include "stdafx.h" #include <iostream> #include <string> #include <windows.h> #include <fstream> #include <math.h> using namespace std; bool Discrim () { http://www.cyberforum.ru/cpp-beginners/thread854043.html
Error: jump to case label C++
Здравствуйте. Не один раз встречался с такой ошибкой. Сам не знаю, что она означает, но выправлял я ее с помощью if вместо switch - case. Так вот: здесь уже так у меня не получиться так исправить. Поясните пожалуйста, что эта ошибка означает и как ее исправить. #include <iostream> #include <conio.h> #include <vector> #include <cstdlib> enum KEYS { SPACE = 32, ENTER = 13, BACKSPACE = 8 };...
Дерево результатов футбольных соревнований C++
Нужно сделать дерево результатов футбольных соревнований. В моем случае это футбол. Турнир должен выглядеть как Лига Чемпионов. Групповой этап, плей-офф и финал. Голы, которые забили команды, должны задаваться рандомно. Сделал плей-офф, но он не работает так как надо. Подскажите, каким образом лутше всего это реализовать? #include <iostream> using namespace std; class championleague {...
C++ Построить класс для управления базой данных колекции марок. Используйте следующие поля класса: http://www.cyberforum.ru/cpp-beginners/thread854025.html
Построить класс для управления базой данных колекции марок. Используйте следующие поля класса: char stamp_title; //название коллекции char country; // название страны марки int count_of_stamps; // количество марок этой страны int total_format; // формат(1-квадрат,2-треугольник,3-овал) Определите методы для ввода данных с клавиатуры, для вывода их на экран. Создайте несколько...
C++ Создайет класс служащие объектом которого будет Создайет класс Employee(служащие) объектом которого будет Age (возраст) и Salary(зарплата). Создайте объекты Ivanov и Petrov.Задайте значения членов-данных этих объектов и выведите их на печать подробнее

Показать сообщение отдельно
FMihail
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 33
02.05.2013, 12:46     Операции над строкой. Подсчитать количество слов, которое начинается с той буквы, которой заканчивается предыдущее слово
Дано предложение, слова в нем разделены пробелами. Подсчитать количество слов, которое начинается с той буквы, которой заканчивается предыдущее слово. Если таких слов больше половины, то их необходимо перенести в конец предложения. Если я ввожу строку : okno opera stryna argentina akter программа выводит: okno stryna opera argentina akter. Но если пробую: okno teatr rabota africa akter то программа выводит исходную строку не изменяя ее. В чем проблема?
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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
 
// Schitaet chislo slov v stroke i skladivaet slova v massiv
size_t WordsNumber(char* const pstring, char const** const parrayp)
{
    char const* pdelimeters = " ";
    size_t wn = 0;
    for(char* p = strtok(pstring, pdelimeters); p; p = strtok(0, pdelimeters))
    {
        parrayp[wn] = p;
        ++wn;
    }
    return wn;
}
 
// Schitaet chislo slov nachinaushihsya s poslednei bukvi predidushego slova
size_t SpecWordsNumber(char const* const* parrayp)
{
    size_t swn = 0;
    while(*++parrayp)
        if(isalpha(**parrayp) && (**parrayp == *(parrayp[-1] + strlen(parrayp[-1]) - 1)))
            ++swn;
    return swn;
}
 
int main()
{
    char str[300], strresult[sizeof(str)] = {0}, strtemp[sizeof(str)] = {0};
    char const* arrayp[100] = {0};
    puts("Vvedite stroku:");
    gets(str);
    strcpy(strresult, str);
    size_t wn = WordsNumber(str, arrayp);
    printf("\nChislo slov v stroke: %u\n", wn);
    size_t swn = SpecWordsNumber(arrayp);
    printf("\nChislo slov nachinaushihsya s poslednei bukvi predidushego slova: %u\n", swn);
 
    // Esli takih slov bol'she polovini, to perenosim ih v konec stroki
    if(double(swn) > double(wn) / 2)
    {
        char const* const* parrayp = arrayp;
        char const* const delimeter = " ";
        strcat(strcpy(strresult, *parrayp), delimeter);
        while(*++parrayp)
        {
            if(!(isalpha(**parrayp) && (**parrayp == *(parrayp[-1] + strlen(parrayp[-1]) - 1))))
                strcat(strcpy(strresult + strlen(strresult), *parrayp), delimeter);
            else
                strcat(strcpy(strtemp + strlen(strtemp), *parrayp), delimeter);
        }
        strcat(strresult, strtemp);
    }
    printf("\nRezul'tat:\n%s\n\n", strresult);
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru