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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ded_Vasilij
231 / 213 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
#1

цикл for - C++

09.04.2013, 03:06. Просмотров 236. Ответов 0
Метки нет (Все метки)


или я дурак, или лыжи не едут
- Люди добрые спасите, помогите - я не могу написать простой цикл. когда ручками значения указываю - все хорошо, а при попытке автоматизировать процесс какойто ужас творится.
вроде делов то посчитать значение, занести в список, присвоить следующее значение - не получается
вот код
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
int polinom::analiz( char * str)
{
    unsigned int sgn = 1;
    for (unsigned int i = 0; i < strlen(str); i++)
    {
        if (str[i] == '+' || str[i] == '-')
            sgn++;
    }  
    cout << "\nsgn = "<<sgn;
    int count = 0;
    int p = 0;
    int pp = 0;
    monom m,mm;
    for (int i = 0; i < sgn && p < strlen(str); i++)
    {
        p = m.getmonom(str,p);
        cout << "\npp = "<<pp;
        List.pushTail(m);
        
        //p = m.getmonom(str,pp);
        cout << "\np = "<<p;
        //List.pushTail(mm);
    }
    
    
    List.print();
    return 0;
}
ручками вводим строку "x^5y^6-xz" - получаем два раза добавление первого монома в список
а если позицию указывать ручками получаем все хорошо
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main()
{
char* s = new char[255];
        cin>>s;
        cout << "\n strlen = " << strlen(s) << endl;
        cout << s << endl;
        monom m,mm;
        //m.scan(s,0,5);
        m.getmonom(s,0);
        cout << "\n";
        m.p();
        //mm.scan(s,6,5);
        m.getmonom(s,6);
        cout << "\n";
        m.p();
        polinom p;
        p.analiz(s);
return 0;
}
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
int monom::getmonom(char*s,int p)
{
    const int maxlen = 5;
    const int maxpow = 3;       
    p=scan(s,p,maxlen); 
    int w[3] = {0,0,0};
    while (s[p] == 'x' || s[p] == 'y' || s[p] == 'z')
    {
        int c;
        if (s[p] == 'x')
        {
            c = 0;
            p++;            
            if (s[p] == '^')
            {
                p++;
                int count = 0;
                int pp = p;
                while(s[pp]>= '1' && s[pp] <= '9')
                {
                    count++;
                    pp++;
                }
                if (count >= maxpow)
                {
                    cout << "\nмного цифер\n";
                    throw ListError();
                }
                else
                {
                    char* temp = new char[count];
                    int i = 0;
                    while(s[p]>= '1' && s[p] <= '9')
                    {
                        temp[i] = s[p];
                        i++;
                        p++;
                    }
                    w[c] += atoi(temp);
                }
            }           
            else
            {
                w[c] +=1;
            }
        }
        else
            if (s[p] == 'y')
            {
                c = 1;
                p++;
                if (s[p] == '^')
                {
                    p++;
                    int count = 0;
                    int pp = p;
                    while(s[pp]>= '1' && s[pp] <= '9')
                    {
                        count++;
                        pp++;
                    }
                    if (count >= maxpow)
                    {
                        cout << "\nмного цифер\n";
                        throw ListError();
                    }
                    else
                    {
                        char* temp = new char[count];
                        int i = 0;
                        while(s[p]>= '1' && s[p] <= '9')
                        {
                            temp[i] = s[p];
                            i++;
                            p++;
                        }
                        w[c] += atoi(temp);
                    }
 
                }
                else
                {
                    w[c] +=1;
                }
            }
            else
                if (s[p] == 'z')
                {
                    c = 2;
                    p++;
                    if (s[p] == '^')
                    {
                        p++;
                        int count = 0;
                        int pp = p;
                        while(s[pp]>= '1' && s[pp] <= '9')
                        {
                            count++;
                            pp++;
                        }
                        if (count >= maxpow)
                        {
                            cout << "\nмного цифер\n";
                            throw ListError();
                        }
                        else
                        {
                            char* temp = new char[count];
                            int i = 0;
                            while(s[p]>= '1' && s[p] <= '9')
                            {
                                temp[i] = s[p];
                                i++;
                                p++;
                            }
                            w[c] += atoi(temp);
                        }
                    }
                    else
                    {
                        w[c]+=1;
                    }
                }
                else
                {
                    cout << "плохо\n";
                }
 
    }
    X = w[0];
    Y = w[1];
    Z = w[2];  
    return p;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2013, 03:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос цикл for (C++):

Почему цикл на при 1 уходит в бесконечный цикл? - C++
#define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; int main() { int x=0, y=0,...

Цикл: цикл for вообще никак не воспринимается транслятором - C++
Пишу программу, которая производит различные действия с одномерным массивом. Возникла следующая проблема: цикл for вообще никак не...

Задание на цикл с параметром и цикл с постусловием - C++
Помогите пожалуйста написать программу с этими циклами. 1. Вычислить и напечатать таблицу значений функции Z= (e^-x)sinx для 0&lt;=x&lt;=П,...

Цикл for/Цикл while Помогите срочно пожалуйста... - C++
1.Вычислить и вывести на экран в виде таблицы значения функции F от x1 до x2 с шагом dx. где a, b и c - действительные числа. 2.Цикл...

Цикл с параметром и цикл с условием - C++
1. Составить программу вычисления суммы первых 10 непарных чисел 2. Дано числовой ряд и некоторое число &quot;епсила&quot;. Найти сумму...

Изменить цикл for на цикл do-while - C++
помогите передать программу с цикла FOR в цикл DO-WHILE #include &lt;math.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2013, 03:06
Привет! Вот еще темы с ответами:

заменить цикл for на цикл while - C++
#include &lt;iostream&gt; using namespace std; int main() { int N, M, sum; cout &lt;&lt; &quot;Введите число N:&quot; &lt;&lt; endl; ...

Создать программу по всем 3 видам циклов...цикл с параметром,цикл с условием,цикл,и цикл с предусловием... - Turbo Pascal
Найти сумму чисел 1 в квадрате до 10 c квадрате...операцию возведению в степень не использовать учесть особенности получения квадратного...

Написать в турбо паскале, Цикл с параметром, Цикл, с постусловием, и с предусловием пожалуйста - Turbo Pascal

Как реализовать бесконечный цикл While, но чтобы этот цикл не грузил процессор? - Visual C++
Допустим есть цикл: while (1) { ... } Как сделать так, чтобы бесконечный цикл не грузил процессор. Избавиться от...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru