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

найти max и min по длине слово - C++

Восстановить пароль Регистрация
 
lilllu
0 / 0 / 0
Регистрация: 16.01.2010
Сообщений: 30
19.03.2010, 22:13     найти max и min по длине слово #1
такая задача. помогите плиз
_______________________________
дана строка символов. найти в ней max и min по длине слово и заменить их на подстроки "max" и "min" соответственно, при необходимости сдвинув символы

___
заранее спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ggmann
 Аватар для ggmann
20 / 20 / 1
Регистрация: 06.10.2008
Сообщений: 173
20.03.2010, 13:00     найти max и min по длине слово #2
а можна использовать библу string.h или все нужно делать через масив чаров вручную?
lilllu
0 / 0 / 0
Регистрация: 16.01.2010
Сообщений: 30
20.03.2010, 13:19  [ТС]     найти max и min по длине слово #3
через массив чаров..
lilllu
0 / 0 / 0
Регистрация: 16.01.2010
Сообщений: 30
22.03.2010, 15:14  [ТС]     найти max и min по длине слово #4
помогите с задачей кто-нибудь..
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
22.03.2010, 16:04     найти max и min по длине слово #5
Цитата Сообщение от lilllu Посмотреть сообщение
через массив чаров
Это нудно... Вот Вам "джедайский" вариант, вдруг пригодится?!
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
#include <iostream>
#include <string>
#include <sstream>
#include <functional>
#include <set>
 
// дана строка символов. найти в ней max и min по длине слово 
// и заменить их на подстроки "max" и "min" соответственно
    
class LenCmp : public std::binary_function<std::string, std::string, bool> {
public:
    bool operator() (const std::string& a, const std::string& b){
        return a.length() > b.length();
    }
};
 
int main(){
    std::string s;
    std::cout << "String: ";
    std::getline(std::cin, s);
    
    std::istringstream ist(s);
    std::string tmp;
    std::set<std::string, LenCmp> words;
    while ( ist >> tmp )
        words.insert(tmp);
 
    std::cout << "Max word: " << *words.begin() << std::endl;
    std::cout << "Min word: " << *words.rbegin() << std::endl;
    
    size_t max_pos = s.find(*words.begin());
    s.replace(max_pos, words.begin()->length(), "max");
    size_t min_pos = s.find(*words.rbegin());
    s.replace(min_pos, words.rbegin()->length(), "min");
    
    std::cout << "Result: " << s << std::endl;
    
    return 0;
}
lilllu
0 / 0 / 0
Регистрация: 16.01.2010
Сообщений: 30
22.03.2010, 21:11  [ТС]     найти max и min по длине слово #6
спасибо огромное))

__________
ток вот как все это преподу сдавать..))мы такого либо не проходили либо это я тупое создание))...
easybudda
22.03.2010, 21:47
  #7

Не по теме:

lilllu, скажите - приснилось, как Менделееву таблица...

lilllu
0 / 0 / 0
Регистрация: 16.01.2010
Сообщений: 30
22.03.2010, 21:52  [ТС]     найти max и min по длине слово #8
что-то подобное уже говорила в прошлом семестре) препод улыбнулся и экз я сдавала все каникулы)))
UKOL
 Аватар для UKOL
112 / 64 / 7
Регистрация: 17.11.2009
Сообщений: 258
23.03.2010, 19:18     найти max и min по длине слово #9
Ну вот собственно сама программа.

+
Программа написана языком новичков(это я! )
Работает, вычисляет размер минимального и макимального слова, заменяет максимальное слово на max и минимальное на min. Может работать и с русским языком, только не в windows, кодировка не подключена.

-

Программа сырая, разработана методом проб и ошибок и метод тыка(без этого ни как убил на нее минут 50).
Заменяет только первые max и min слова, а остальные равные этим размерам нет.


У кого есть желание довести до ума - прошу... Я не жадный

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
#include <iostream>
 
using namespace std;
 
int main()
{   
    int max(0), min(1000);
    int dmax=0;
    int dmin=0;
    int count=0;//счетчик
    const int arraySize=89;//размер строки в символах(елси изменять строку то и изменять значение arraySize
    //строка
    char stroka[arraySize]="Sign up for Facebook to connect with When We Were Little We Wanted To Grow Up.\n";
    //вывод на экран строки
    for(int i=0;i<arraySize;i++)
        cout << stroka[i]; 
    //поиск
    for(int i=0;i<arraySize;i++)//пробегаем по всей строке
    {
        // если строка текста достигает разделителей слов включаем счетчик
        if((stroka[i]!='\n')&&(stroka[i]!=' ')&&(stroka[i]!=',')&&(stroka[i]!=':')&&(stroka[i]!='.')&&(stroka[i]!='!')&&(stroka[i]!='?'))
        {
            count++;
        }
        //если нет, то проверка
        else
        {
                if(count==0)
                    continue;
                if(count>max)
                {
                    max=count;
                    dmax=i-count;
                }
                if(count<min)
                {
                    min=count;
                    dmin=i-count;
                }
                
                count=0;//сброс счетчика обязательно
        }
    }
    cout << endl;
    //вывод на экран строки и min и max
 
    for(int i=0;i<arraySize;i++)
    {
        if((i!=dmin)&&(i!=dmax))
        {
            cout << stroka[i];
        }
        else
        {
            if(i==dmin)
            {
                i=i+min;
                cout << " min ";
            }
            else
            {
                if(i==dmax)
                {
                    i=i+max;
                    cout << " max ";
                }
            }
        }
    }
    cout << endl;
    cout << "Max slovo = " << max << endl;
    cout << "Min slovo = " << min << endl;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2010, 23:40     найти max и min по длине слово
Еще ссылки по теме:

найти max и min в стеке C++
C++ Найти ошибку (max и min последовательности)
В матрице 3 х 3 найти max и min значения C++

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
13.07.2010, 23:40     найти max и min по длине слово #10
пока отвечал, пост удалили ну на всякий случай для гражданина, которому то же самое но на С понадобилось:
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
char ** min_word(char ** words, size_t size){
    char ** minWord;
    int curLen, minLen;
 
    minWord = words;
    minLen = strlen(*minWord);
    while ( --size ){
        if ( ( curLen = strlen(*(++words)) ) < minLen ){
            minWord = words;
            minLen = curLen;
        }
    }
    return minWord;
}
 
char ** max_word(char ** words, size_t size){
    char ** maxWord;
    int curLen, maxLen;
 
    maxWord = words;
    maxLen = strlen(*maxWord);
    while ( --size ){
        if ( ( curLen = strlen(*(++words)) ) > maxLen ){
            maxWord = words;
            maxLen = curLen;
        }
    }
    return maxWord;
}
 
#define DELIM " \t\n"
 
int main(void){
    char buf[BUFSIZ], ** words, * pWord, ** foundWord;
    size_t size, i;
 
    words = NULL;
    size = 0;
 
    printf("String: ");
    if ( ! fgets(buf, BUFSIZ, stdin) ){
        fprintf(stderr, "Can't get some string!\n");
        exit(EXIT_FAILURE);
    }
 
    for ( pWord = strtok(buf, DELIM); pWord; pWord = strtok(NULL, DELIM) ){
        if ( ( words = (char**)realloc(words, sizeof(char*) * (size + 1)) ) == NULL ){
            fprintf(stderr, "Memory error!\n");
            exit(EXIT_FAILURE);
        }
        if ( ( words[size++] = strdup(pWord) ) == NULL ){
            fprintf(stderr, "Memory error!\n");
            exit(EXIT_FAILURE);
        }
    }
 
    if ( ! words ){
        fprintf(stderr, "No words in array!\n");
        exit(EXIT_FAILURE);
    }
 
    foundWord = min_word(words, size);
    free(*foundWord);
    *foundWord = strdup("min");
 
    foundWord = max_word(words, size);
    free(*foundWord);
    *foundWord = strdup("max");
 
    *buf = 0;
    for ( i = 0; i < size; ++i ){
        strcat(buf, words[i]);
        strcat(buf, " ");
    }
 
    printf("Result: %s\n", buf);
 
    for ( i = 0; i < size; ++i )
        free(words[i]);
    free(words);
 
    exit(EXIT_SUCCESS);
}
PS в задании про язык программирования ни слова не было...
Yandex
Объявления
13.07.2010, 23:40     найти max и min по длине слово
Ответ Создать тему
Опции темы

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