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

Программа не выводит результат...??? - C++

Восстановить пароль Регистрация
 
Альма
 Аватар для Альма
12 / 9 / 1
Регистрация: 25.11.2010
Сообщений: 353
Записей в блоге: 1
20.12.2011, 00:59     Программа не выводит результат...??? #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
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
 
class stroki
{ 
private:
    string str; 
    string max_word;        
    int max_length;
public:
    stroki():str()  
    {}  
    stroki(string h):str(h)   
    {}
    stroki(const stroki &st):str(st.str)  
    {}
    ~stroki()                  
    {}
 
    void maxs(stroki &a, stroki &b)
    {
        int max_length=0;
 
        istringstream iss(str);
        while (iss>>str)
        {
            if (max_length<str.length())
            {
                max_length=str.length();
                max_word=str;
            }
        }
        cout<<"slovo "<<max_word<<"  imeet naibolshuyu dlinu="<<max_length<<endl;//slovo v max_word
       
        if (max_word>a.max_word)
        {
            string temp=max_word;
            max_word=b.max_word;
        }
    }
 
    void vvod()
    {   
        getline(cin,str);
    }
 
    void print()
    {
        cout<<str<<endl;
    }
};
 
void main()
{
    stroki a(""); 
    stroki b(""); 
    
    cout<<"Vvedite dve stroki(posle kajdogo vvoda Enter): "<<endl;
    a.vvod();
    b.vvod();
 
    cout<<"Ishodnye dannye: "<<endl;
    a.print();
    b.print();
 
    a.maxs(a,b);
    b.maxs(b,a);
 
    cout<<"Result: "<<endl;
    a.print();
    b.print();
}
Нужно поменять максимальные слова в двух строках местами...а она не выводит результат...так я даже не знаю, правильно или нет....Что не таак??
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LostCoast
82 / 82 / 5
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
20.12.2011, 01:19     Программа не выводит результат...??? #2
поясните поподробней, с примером.
если что замена делается так
C++
1
2
3
temp = a;
a = b;
b = temp;
Альма
 Аватар для Альма
12 / 9 / 1
Регистрация: 25.11.2010
Сообщений: 353
Записей в блоге: 1
20.12.2011, 01:24  [ТС]     Программа не выводит результат...??? #3
Вот задание:
Разработать класс содержащий:
- компоненты данные
- методы:
а) конструктор по умолчанию;
б) конструктор с параметрами;
в) конструктор копирования;
г) деструктор;
д) методы класса для работы с данными.
Данные класса должны иметь атрибут private.
Задача 1. Создать 2 объекта разработанного класса. Одной из компонент класса является символьная строка. В результате выполнения программы в строке первого объекта слово максимальной длины заменить на слово максимальной длины второго объекта. Содержимое объектов до и после вывести на экран.

Так вот слов он находит, но результат не выводит...Убирала выполнение метода maxs, вывел результат, а после его выполнения строки "съедаются"
case
7 / 7 / 2
Регистрация: 29.09.2010
Сообщений: 32
20.12.2011, 01:35     Программа не выводит результат...??? #4
попробуй клавиши Ctrl + F5
Альма
 Аватар для Альма
12 / 9 / 1
Регистрация: 25.11.2010
Сообщений: 353
Записей в блоге: 1
20.12.2011, 01:36  [ТС]     Программа не выводит результат...??? #5
Очень смешно, типа я не так запускаю
LostCoast
82 / 82 / 5
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
20.12.2011, 01:39     Программа не выводит результат...??? #6
вот можешь посмотреть, пока что так готово, осталось сделать чтобы max_word поменялись не только между друг другом, но и в строках
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
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
 
class stroki
{ 
private:           
    int max_length;
    string str; 
    string max_word;
public:
        stroki():str()  
        {}  
        stroki(string h):str(h)   
        {}
        stroki(const stroki &st):str(st.str)  
        {}
        ~stroki()                  
        {}
 
        void maxs(stroki &a, stroki &b)
        {
                int max_length=0;
                string temp = str;
                istringstream iss(temp);
                while (iss>>temp)
                {
                        if (max_length < temp.length())
                        {
                                max_length = temp.length();
                                max_word  = temp;
                        }
                }
                cout << "slovo " << max_word << "  imeet naibolshuyu dlinu=" << max_length << endl;//slovo v max_word
        }
 
        void vvod()
        {       
            getline(cin,str);
        }
 
        void print()
        {
            cout << "stroka = " << str << endl;
        }
        void print_res()
        {
            cout << max_word << endl;
            cout << "ishodnaya stroka = " << str << endl;
        }
 
        void swap(stroki &b)
        {
            string temp;
            temp = max_word;
            max_word = b.max_word;
            b.max_word = temp;
        }
};
 
void main()
{
        stroki a(""); 
        stroki b(""); 
        
        cout<<"Vvedite dve stroki(posle kajdogo vvoda Enter): "<<endl;
        a.vvod();
        b.vvod();
 
        cout<<"Ishodnye dannye: "<<endl;
        a.print();
        b.print();
 
        a.maxs(a,b);
        b.maxs(b,a);
 
        a.swap(b);
 
        cout<<"Result: "<<endl;
 
        a.print_res();
        b.print_res();
}
подредактировал код,чтобы переменные остались приватными
Альма
 Аватар для Альма
12 / 9 / 1
Регистрация: 25.11.2010
Сообщений: 353
Записей в блоге: 1
20.12.2011, 01:42  [ТС]     Программа не выводит результат...??? #7
Цитата Сообщение от LostCoast Посмотреть сообщение
не только между друг другом, но и в строках
да....вот в этом вся и проблема..
LostCoast
82 / 82 / 5
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
20.12.2011, 02:13     Программа не выводит результат...??? #8
готово, все работает. Единственное что нужно будет учесть - это что оба максимальных слова равны, но мне некогда уже сегодня этим заниматься, завтра вечером если ток.

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
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
 
class stroki
{ 
private:           
    int max_length;
    string str; 
    string max_word;
public:
        stroki():str()  
        {}  
        stroki(string h):str(h)   
        {}
        stroki(const stroki &st):str(st.str)  
        {}
        ~stroki()                  
        {}
 
        void maxs()
        {
                int max_length = 0;
                string temp = str;
                istringstream iss(temp);
                while (iss >> temp)
                {
                        if (max_length < temp.length())
                        {
                                max_length = temp.length();
                                max_word  = temp;
                        }
                }
                cout << "slovo " << max_word << "  imeet naibolshuyu dlinu=" << max_length << endl;//slovo v max_word
        }
 
        void vvod()
        {       
            getline(cin,str);
        }
 
        void print()
        {
            cout << "stroka = " << str << endl;
        }
 
        void swap(stroki &b)
        {
            int i = str.find(max_word);
            int s = max_word.length();
            str.replace(i, s, b.max_word);
        }
};
 
void main()
{
        stroki a(""); 
        stroki b(""); 
        
        cout<<"Vvedite dve stroki(posle kajdogo vvoda Enter): "<<endl;
        a.vvod();
        b.vvod();
 
        cout<<"Ishodnye dannye: "<<endl;
        a.print();
        b.print();
 
        a.maxs();
        b.maxs();
 
        a.swap(b);
        b.swap(a);
        cout<<"Result: "<<endl;
 
        a.print();
        b.print();
}
Альма
 Аватар для Альма
12 / 9 / 1
Регистрация: 25.11.2010
Сообщений: 353
Записей в блоге: 1
20.12.2011, 02:19  [ТС]     Программа не выводит результат...??? #9
Спасибо огромнейшее!!!!!!

Добавлено через 3 минуты
Цитата Сообщение от LostCoast Посмотреть сообщение
Единственное что нужно будет учесть - это что оба максимальных слова равны
Этого вполне достаточно, ничего дополнять не нужно!!!
LostCoast
82 / 82 / 5
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
20.12.2011, 02:34     Программа не выводит результат...??? #10
Альма, прост когда 2 слова одинаковы по длине, то все норм)
а вот если они разные по длине то там немного не правильно меняется)))

Добавлено через 35 секунд
З.Ы. не за что)

Добавлено через 8 минут
ееее я смог доделать, вот теперь все работает как по надо))теперь на твердую пять))

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 <iostream>
#include <string>
#include <sstream>
using namespace std;
 
class stroki
{ 
private:           
    int max_length;
    string str; 
    string max_word;
public:
        stroki():str()  
        {}  
        stroki(string h):str(h)   
        {}
        stroki(const stroki &st):str(st.str)  
        {}
        ~stroki()                  
        {}
 
        void maxs()
        {
                int max_length = 0;
                string temp = str;
                istringstream iss(temp);
                while (iss >> temp)
                {
                        if (max_length < temp.length())
                        {
                                max_length = temp.length();
                                max_word  = temp;
                        }
                }
                cout << "slovo " << max_word << "  imeet naibolshuyu dlinu=" << max_length << endl;//slovo v max_word
        }
 
        void vvod()
        {       
            getline(cin,str);
        }
 
        void print()
        {
            cout << "stroka = " << str << endl;
        }
 
        void swap(stroki &b)
        {
            int i = str.find(max_word);
            int w = max_word.length();
            int wb = b.max_word.length();
            int s = 0;
            if (w > wb) {
                s = wb;
                str.replace(i, s +  (w - wb), b.max_word);
            }
            else {
                s = w;
                str.replace(i, s , b.max_word);
            }
        }
};
 
void main()
{
        stroki a(""); 
        stroki b(""); 
        
        cout<<"Vvedite dve stroki(posle kajdogo vvoda Enter): "<<endl;
        a.vvod();
        b.vvod();
 
        cout<<"Ishodnye dannye: "<<endl;
        a.print();
        b.print();
 
        a.maxs();
        b.maxs();
 
        a.swap(b);
        b.swap(a);
        cout<<"Result: "<<endl;
 
        a.print();
        b.print();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2011, 02:35     Программа не выводит результат...???
Еще ссылки по теме:

C++ Программа не выводит результат
Программа подсчета строк, слов и символов не выводит результат C++
Программа выводит один результат C++

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

Или воспользуйтесь поиском по форуму:
Альма
 Аватар для Альма
12 / 9 / 1
Регистрация: 25.11.2010
Сообщений: 353
Записей в блоге: 1
20.12.2011, 02:35  [ТС]     Программа не выводит результат...??? #11
Спасибо еще раз!!!
Yandex
Объявления
20.12.2011, 02:35     Программа не выводит результат...???
Ответ Создать тему
Опции темы

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