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

Работа со строками - C++

Восстановить пароль Регистрация
 
IRELAND
5 / 5 / 0
Регистрация: 12.11.2010
Сообщений: 56
01.05.2014, 14:44     Работа со строками #1
Доброго времени суток! Помогите исправить программу: Дан текст, слова которого отделяются друг от друга пробелами. Если первое слово является максимальным по длине, то все слова, которые заканчиваются той же буквой, что и первое слово, поместить в конец текста.
Программку я написал, но выводит лишь максимальное слово и одно слово слово заканчивающиеся на ту же букву, а должно было переместить все слова заканчивающиеся той же буквой что и максимальное в конец текста.. Помогите исправить...
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
 
int main()
{
 
    char st[255];
    int b = 0;
      clrscr();
    printf("vvedite stroky: ");
    gets(st);
      clrscr();
    printf("isxodnaya: %s \n", st);
    int n = strlen(st);
    int i= 0;
    while((st[i] != ' ') && (i < n))
    {
        i++;
    }
    int firstWordLendth =  i;
    char *firstword, fWord[70];
    firstword = fWord;
    strncpy(firstword, st, i);
    *(firstword + i) = '\0';
    printf("pervoe slovo: %s\n", firstword);
    for (int j=i+1; j<n;j++)
    {
        int i_max = j;
 
        do {
            i_max++;
        } while((st[i_max] != ' ') && (st[i_max] != '\0'));
 
        if (firstWordLendth <= i_max - j)   
        {
            b = 1;
            break;
        }
        else
        {
            j = i_max;
        }
    }
    if (b==1)
    {
        printf("pervoe slovo ne max!\n");
 
    }
    else
    {
        char stOut[255], st2[255];
        stOut[0] = '\0';
        st2[0] = '\0';
        for (int j = i+1; j < n; j++ )
        {
            int i_max = j;
            char c_firstWord = *(firstword+ firstWordLendth-1);
            do {
                i_max++;
            } while((st[i_max] != ' ') && (st[i_max] != '\0'));
            char word[255];
            strncpy(word, st + j, i_max-j);
            word[i_max-j] = '\0';
            if (st[i_max-1] == c_firstWord)
            {
 
                sprintf(st2, "%s%s \0",st2, word);
            }
            else
            {
                sprintf(stOut, "%s%s \0",stOut, word);
 
            }
            j = i_max;
        }
        sprintf(stOut, "%s%s", stOut, st2);
 
 
        printf("resyltat:%s %s\n", firstword, stOut);
          printf("quit: %s \n",st2);
    }
    getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2014, 14:44     Работа со строками
Посмотрите здесь:

работа со строками C++
Работа со строками C++
Работа со строками C++
РАБОТА СО СТРОКАМИ. C++
Работа со строками C++
C++ Работа со строками
Работа со строками C++
C++ Работа со строками

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

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

Текущее время: 01:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru