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

Где ошибка? - C++

Восстановить пароль Регистрация
 
kalenikov
0 / 0 / 1
Регистрация: 25.01.2013
Сообщений: 22
24.11.2013, 00:45     Где ошибка? #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
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "russian");
    int kol;
    cout<<"Введите количество елементов массива ";
    cin>>kol;
    int m1[1000];
    cout<<"Заполните массив\n";
    for(int m=0; m<kol; m++)
    {
        cin>>m1[m];
    }
    system("cls");
    cout<<"Таблица вашего массива"<<endl;
    for(int m=1; m<=kol; m++){
        
        cout<<m<<"     ";
    }
    cout<<"\n";
    for (int m=0; m<kol; m++)
    {
    if((m1[m]>=0) && (m1[m]<10))
        cout<<m1[m]<<"     ";
    if((m1[m]>=10) && (m1[m]<100))
        cout<<m1[m]<<"    ";
    if((m1[m]>=100) && (m1[m]<1000))
        cout<<m1[m]<<"   ";
    if((m1[m]>=1000) && (m1[m]<10000))
        cout<<m1[m]<<"  ";
    }
    cout<<"\n";
    char x;
    int l;
    int rez;
    int n;
    int h;
    char g='=';
    
        cout<<"Вводите ячейки масива последовательно и выставляйте нужный вам знак(+ - / *). \nЧтобы завершить расчёт введите '='(без кавычок)."<<endl;
        cin>>l;
            cin>>x;
            cin>>n;
            if(x='+') {rez=m1[l]+m1[n];cout<<rez;} else
            if(x='-') {rez=m1[l]-m1[n];cout<<rez;} else
            if(x='*') {rez=m1[l]*m1[n];cout<<rez;} else
            if(x='/') {rez=m1[l]/m1[n];cout<<rez;} 
        
        while(x!=g){
            cin>>x;
            cin>>h;
            if(x='+') {rez+=m1[h];}else
            if(x='-') {rez-=m1[h];}else
            if(x='*') {rez*=m1[h];}else
            if(x='/') {rez/=m1[h];}
            
 
        }
        
        cout<<"="<<rez;
    
    
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2013, 00:45     Где ошибка?
Посмотрите здесь:

Где ошибка? C++
C++ где ошибка
Где ошибка? C++
C++ Где ошибка?
C++ Где ошибка? С++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HenryDukart
 Аватар для HenryDukart
100 / 100 / 28
Регистрация: 05.10.2013
Сообщений: 400
Завершенные тесты: 2
24.11.2013, 00:50     Где ошибка? #2
Упс, не так понял. Просто не очень удачный выбор имени массива и переменной. Сейчас найду
kalenikov
0 / 0 / 1
Регистрация: 25.01.2013
Сообщений: 22
24.11.2013, 00:55  [ТС]     Где ошибка? #3
Там с while что то не то.... Только не могу понять ЧТО?
HenryDukart
 Аватар для HenryDukart
100 / 100 / 28
Регистрация: 05.10.2013
Сообщений: 400
Завершенные тесты: 2
24.11.2013, 01:09     Где ошибка? #4
kalenikov,
Как я понял, одно действие всегда должно быть выполнено. В цикле после
C++
1
cin>>x
добавте
C++
1
2
if (x=='=')
break;
.
По коду: в вашем случае удобно использовать switch и хорошо бы было при делении на какой-нибудь элемент проверять не нулевой ли он.
caiman
 Аватар для caiman
11 / 11 / 1
Регистрация: 17.11.2013
Сообщений: 39
24.11.2013, 01:11     Где ошибка? #5
1. Русский язык в листингах - это моветон. Не мучься с локалью (пока учишься азам).
2. Содержи код в читабельном виде.
3. Почитай листинг.
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
#include <iostream>
 
using namespace std;
 
int main()
{
    int kol;
    int array[1000];
 
    cout << "Array len: ";
    cin >> kol;
    cout << "Fill an array:\n";
 
    for( int m = 0; m < kol; m++ ) {
        cin >> array[m];
    }
    cout<<"Your array table:"<<endl;
    for (int m = 1; m <= kol; m++) {
        cout << m << "     ";
    }
    cout << "\n";
 
    for ( int m = 0; m < kol; m++) {
        if ( (array[m]>=0) && (array[m]<10) ) {
            cout << array[m] << "     ";
        }
        if ( (array[m]>=10) && (array[m]<100) ) {
            cout << array[m] << "    ";
        }
        if ( (array[m]>=100) && (array[m]<1000) ) {
            cout << array[m] << "   ";
        }
        if ( (array[m]>=1000) && (array[m]<10000) ) {
            cout << array[m] << "  ";
        }
    }
 
    cout<<"\n";
 
    char x;
    int l, rez, n, h;
    char g = '=';
 
    cout << "Enter elems in right order. Use symbols: (+ - / *).\n Exit => '='(without quotes)." << endl;
    cin >> l;
    cin >> x;
    cin >> n;
 
    if ( x == '+' ) {
        rez =array[l] + array[n];
        cout<<rez;
    } else if ( x == '-' ) {
        rez =array[l] - array[n];
        cout<<rez;
    } else if ( x == '*' ) {
        rez =array[l] * array[n];
        cout<<rez;
    } else if ( x == '/' ) {
        rez =array[l] / array[n];
        cout<<rez;
    } 
 
    while( x !=g ) {
        cin >> x;
        cin >> h;
 
        if ( x == '+' ) {
            rez += array[h];
        } else if ( x == '-' ) {
            rez -= array[h];
        } else if ( x == '*' ) {
            rez *= array[h];
        } else if ( x == '/' ) {
            rez /= array[h];
        } 
    }   
    cout << "=" << rez;
 
    return 0;
}
Alex566
 Аватар для Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
24.11.2013, 01:57     Где ошибка? #6
Ну если я правильно понял ход мысли.
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>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "russian");
    int kol;
    cout<<"Введите количество елементов массива - ";
    cin>>kol;
    int *m1=(int*)malloc(sizeof(int)*kol);
    for(int i=0; i<kol; i++)
    {
        cout<<"Введите "<<i+1<<"-й элемент массива - ";
        cin>>m1[i];
    }
    system("cls");
    cout<<"Таблица вашего массива"<<endl;
    for(int i=1; i<=kol; i++){
        
        cout<<i<<"     ";
    }
    cout<<"\n";
    for (int m=0; m<kol; m++)
    {
    if((m1[m]>=0) && (m1[m]<10))
        cout<<m1[m]<<"     ";
    if((m1[m]>=10) && (m1[m]<100))
        cout<<m1[m]<<"    ";
    if((m1[m]>=100) && (m1[m]<1000))
        cout<<m1[m]<<"   ";
    if((m1[m]>=1000) && (m1[m]<10000))
        cout<<m1[m]<<"  ";
    }
    cout<<endl;
    char x;
    int l;
    int rez;
    int n;
    int h;
    char g='=';
    cout<<"Вводите ячейки масива последовательно и выставляйте нужный вам знак(+ - / *). \nЧтобы завершить расчёт введите '='(без кавычок)."<<endl;
    cin>>l;
    cin>>x;
    cin>>n;
    if(x=='+') rez=m1[l-1]+m1[n-1]; 
    if(x=='-') rez=m1[l-1]-m1[n-1];
    if(x=='*') rez=m1[l-1]*m1[n-1];
    if(x=='/') rez=m1[l-1]/m1[n-1];
    while(x!=g)
        {
            cin>>x;
            if(x=='=') break;
            cin>>h;
            if(x=='+') rez+=m1[h-1];
            if(x=='-') rez-=m1[h-1];
            if(x=='*') rez*=m1[h-1];
            if(x=='/') rez/=m1[h-1];
        } 
    cout<<rez<<endl;
    free (m1);
    system("pause");
    return 0;
}
caiman
 Аватар для caiman
11 / 11 / 1
Регистрация: 17.11.2013
Сообщений: 39
24.11.2013, 02:15     Где ошибка? #7
C++
1
int *m1=(int*)malloc(sizeof(int)*kol);
А зачем в куче?
Если подразумевается, что массив будут ручками заполнять, вряд ли он будет огромен.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2013, 02:42     Где ошибка?
Еще ссылки по теме:

C++ где ошибка
C++ Где ошибка?
C++ Где ошибка?

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

Или воспользуйтесь поиском по форуму:
kalenikov
0 / 0 / 1
Регистрация: 25.01.2013
Сообщений: 22
24.11.2013, 02:42  [ТС]     Где ошибка? #8
Всем большое спасибо!!! Понял свою ошибку. Надо ведь, первый раз сделал какой-то "большой" алгоритм и попался на такой фигне. Но как говорят-на ошибках учатся!
Yandex
Объявления
24.11.2013, 02:42     Где ошибка?
Ответ Создать тему
Опции темы

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