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

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

Войти
Регистрация
Восстановить пароль
 
kalenikov
0 / 0 / 1
Регистрация: 25.01.2013
Сообщений: 22
#1

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

24.11.2013, 00:45. Просмотров 221. Ответов 7
Метки нет (Все метки)

Программа должна считать массивы с клавиатуры и выполнять над ими действия, пока мы не поставим знак равенства. В результате должна вывести результат на экран. За код строго не судите(я только учусь).
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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2013, 00:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Где ошибка? (C++):

Вывести на экран количество слов где первая и последняя буквы одинаковы (не понимаю где ошибка) - C++
задан текст нужно вывести на экран количество слов где первая и последняя буквы одинаковы #include &lt;iostream&gt; #include &lt;conio.h&gt; ...

Подскажите, где может быть ошибка (структуры)? (скорее всего где-то амперсенд нужен, все вроде проверил) - C++
написать универсальный тип, который представляет точку на плоскости в координатах (х, у) и в полярных координатах. Написать функцию для...

Ошибка при компиляции. Где ошибка? (Работа с классом) - C++
Уважаемые форумчане! При компиляции проекта возникает ошибка &quot; undefined reference to `MeterNZiF::MeterNZiF()' &quot; на 7 строку приложения. ...

Укажите где ошибка (ошибка во время выполнения программы) - C++
Здравствуйте, помогите пожалуйста найти ошибки в коде которые возникаю при выполнении программы Картинка с ошибкой внизу поста. Код: ...

В чём ошибка.В коде там где коментарий там ошибка поучается. - C++
#include &lt;iostream&gt; #include &lt;Windows.h&gt; using namespace std; class CMyString{ char *pStr; public: ...

Где ошибка? - C++
Почему не вводятся имя, фамилия и возраст? Первые 3 пользователя вводятся. Четвертый не вводится Enter first name, last name and age...

7
HenryDukart
123 / 123 / 35
Регистрация: 05.10.2013
Сообщений: 457
Завершенные тесты: 2
24.11.2013, 00:50 #2
Упс, не так понял. Просто не очень удачный выбор имени массива и переменной. Сейчас найду
0
kalenikov
0 / 0 / 1
Регистрация: 25.01.2013
Сообщений: 22
24.11.2013, 00:55  [ТС] #3
Там с while что то не то.... Только не могу понять ЧТО?
0
HenryDukart
123 / 123 / 35
Регистрация: 05.10.2013
Сообщений: 457
Завершенные тесты: 2
24.11.2013, 01:09 #4
kalenikov,
Как я понял, одно действие всегда должно быть выполнено. В цикле после
C++
1
cin>>x
добавте
C++
1
2
if (x=='=')
break;
.
По коду: в вашем случае удобно использовать switch и хорошо бы было при делении на какой-нибудь элемент проверять не нулевой ли он.
1
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;
}
0
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;
}
1
caiman
11 / 11 / 1
Регистрация: 17.11.2013
Сообщений: 39
24.11.2013, 02:15 #7
C++
1
int *m1=(int*)malloc(sizeof(int)*kol);
А зачем в куче?
Если подразумевается, что массив будут ручками заполнять, вряд ли он будет огромен.
0
kalenikov
0 / 0 / 1
Регистрация: 25.01.2013
Сообщений: 22
24.11.2013, 02:42  [ТС] #8
Всем большое спасибо!!! Понял свою ошибку. Надо ведь, первый раз сделал какой-то "большой" алгоритм и попался на такой фигне. Но как говорят-на ошибках учатся!
0
24.11.2013, 02:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2013, 02:42
Привет! Вот еще темы с ответами:

Где ошибка? - C++
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #pragma hdrstop ...

Где ошибка?? - C++
нужна такая прога которая при введении чисел a и b а также введение операции с выдавала результат.. вот написал на виж.студ. пишет что не...

Где ошибка? - C++
Добрый день! Подскажите пожалуйста как риолизовать Функцию ln x (x+1)–1 в программе : #include &lt;iostream&gt; #include &lt;math.h&gt; using...

Где ошибка? - C++
Пишу всё по книге Джесса Либерти &quot;Освой самостоятельно C++ за 21 день&quot; В книге указана следующая програмка. int #include...


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

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

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