233 / 215 / 63
Регистрация: 01.09.2012
Сообщений: 2,103
1

цикл for

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

Author24 — интернет-сервис помощи студентам

или я дурак, или лыжи не едут
- Люди добрые спасите, помогите - я не могу написать простой цикл. когда ручками значения указываю - все хорошо, а при попытке автоматизировать процесс какойто ужас творится.
вроде делов то посчитать значение, занести в список, присвоить следующее значение - не получается
вот код
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2013, 03:06
Ответы с готовыми решениями:

Цикл: Посчитать среднее арифметическое всех чисел в заданном диапазоне. Цикл while.
Напишите пожалуйста код для данной задачки с помощью цикла while Вывести числа в пользовательском...

Цикл: Определить, сколько простейших организмов будет через каждый период их деления. Цикл while.
Напишите пожалуйста код к этой задачке, неделю уже ломаю себе голову как ее решить. Одноклеточная...

Почему цикл на при 1 уходит в бесконечный цикл?
#define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; int...

Цикл: Не могу создать цикл для switch
не могу создать цикл для switch

0
09.04.2013, 03:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2013, 03:06
Помогаю со студенческими работами здесь

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

Задание на цикл с параметром и цикл с постусловием
Помогите пожалуйста написать программу с этими циклами. 1. Вычислить и напечатать таблицу...

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

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

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

Цикл с предусловием, цикл с постусловием и цикл с параметром
Объясните пожалуйста как делать эти циклы. У меня не получается. Можете сделать как на фото, или на...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru