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

Добить-Отполировать Задачу на Строки - C++

Восстановить пароль Регистрация
 
Red_Sonya
0 / 0 / 0
Регистрация: 15.01.2012
Сообщений: 10
15.01.2012, 13:29     Добить-Отполировать Задачу на Строки #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
#include<iostream>  
#include<cstdio>
#include <string>
using namespace std;
 
int main(){
    char *s= new char[256];
    char *outs = new char[256];
    outs[0]=0;
    char c;
    cout<<"Vvedite svoy text: \n";
        gets(s);
        cout<<"Vvedite zadannuyu bukvu: \n";
        cin>>c;
 
//сперва будем удалять слова, содержащие заданную букву:
 
        int start=0;
        bool b=true;
        for (size_t i=0; i<strlen(s);i++)
        {
            if (s[i]==c)
                b=false;
            if(s[i]==' ')
            {
                if(b)
                    strncat(outs, s+start, i-start+1);
                b=true;
                start=i+1;
            }
        }
        if(b)
            strcat(outs, s+start);
 
        
// тепрь outs - массив со словами без заданной буквы
 
//поиск самого длинного слова в массиве outs: 
 
int curlen=0; // текущая длина слова
int maxlen=0; // максимальная длина слова
int index= 0; // позиция конца самого длинного слова
 
for (int i=0; i < strlen(outs); i++){
    if (outs[i]==' ' || outs[i]=='\0'){
        if (curlen>maxlen){
            maxlen = curlen;
            index=i;
        }
        if (outs[i] == '\0') break;
        curlen = 0;
    }
    else curlen++;
}
cout<<"\n";
//вывод слова:
 
for(int i = index-maxlen; i<=index; i++){
    cout<<outs[i];
}
cout<<"\n";
return(0);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2012, 13:29     Добить-Отполировать Задачу на Строки
Посмотрите здесь:

C++ нуна добить тупую прогу
C++ Нужно добить программу в С++
C++ Посоветуйте задачу
C++ Задачу закончить
C++ Товарисчи объясните пожалуйста как сделать данную задачу! (Найти наибольший элемент каждой строки А(4,6) и записать их в массив Y)
C++ Посмотрите задачу
C++ Не могу добить прогу

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

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

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