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

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

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

right-hand operand - C++

26.12.2012, 18:02. Просмотров 403. Ответов 11
Метки нет (Все метки)

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
#include <iostream>
#include <cmath>
#include <ctime>
 
using namespace std;
const int n=3;
template<class T>T after_C(T *m,int n)
{int C,i;int jMax=0;
int counter=0;
    cout<<"vvedite C : ";cin>>C;cout<<endl;
    for(i=0;i<n;i++)
    {
        if(m[i]>C)
            counter++;
    }
    cout<<"kol-vo elementov bol'we C: "<<counter<<endl;
    cout<<endl;
return 0;}
template<class T>T pr(T *m, int n )
{float pr=1;int i; float jMax=0;
    int counter = 0;
for(i = 0; i < n; i++)
        if(abs(m[i]) > jMax){
                counter = i;
                jMax = abs(m[i]);
        }
float mult = 1;
for(i = counter+1; i < n; i++)
        mult *= m[i];
if(counter == n-1)
    mult = 0;
cout << "Pr. elementov posle max po modulyu : " << mult;
cout<<endl;
 
return 0;}
template<class T>T sort(T *m, int n)
{int i;
        cout<<"Otsortirovanii massiv :";
            for(i=0;i<n;i++)
            { if(m[i]<0)
            cout<<m[i]<<'\t';}
            for(i=0;i<n;i++)
            {
                if(m[i]>=0)
                    cout<<m[i]<<'\t';
            }
return 0;}
int main ()
{
    int i; int m[n];float *m1[n]; double *m2[n];
    for(i=0;i<n;i++){
    cout<<"vvedite massiv: ";
    cin>>m[i];}
    cout<<endl;
    for(i=0;i<n;i++){
        cout<<m[i]<<'\t';}
    cout<<endl;
 
    after_C(m,n);
    pr(m,n);
    sort(m,n);
        for(i=0;i<n;i++){
    cout<<"vvedite massiv: ";
    cin>>m1[i];}
    cout<<endl;
    for(i=0;i<n;i++){
        cout<<m1[i]<<'\t';}
    cout<<endl;
 
    after_C(m1,n);
    pr(m1,n);
    sort(m1,n);
        for(i=0;i<n;i++){
    cout<<"vvedite massiv: ";
    cin>>m2[i];}
    cout<<endl;
    for(i=0;i<n;i++){
        cout<<m2[i]<<'\t';}
    cout<<endl;
 
    after_C(m2,n);
    pr(m2,n);
    sort(m2,n);
    return 0;
    }
Хай всем. Народ выдает следующие ошибки программа:
binary '>>' : no operator defined which takes a right-hand operand of type 'float *' (or there is no acceptable conversion)
binary '>>' : no operator defined which takes a right-hand operand of type 'double *' (or there is no acceptable conversion)
в строках cin>>m1[i] cin>>m2[i];Хелп что не так сделал:
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2012, 18:02     right-hand operand
Посмотрите здесь:

No operator found which takes a right-hand operand - C++
Кто подскажет в чем ошибка? #include &lt;iostream&gt; #include &lt;vector&gt; class LongNumber { public:

Error C2679: binary '>>': no operator found which takes a right-hand operand of type - C++
нужно написать программу обработки структур. в программе использовать структуру, содержащую поля с информацией об учащихся: - фамилия и...

Ошибка: error C2679: binary '<<' : no operator found which takes a right-hand operand of type - C++
Нужно создать класс List для представления простого списка. Подскажите, почему появляется такая ошибка: error C2679: binary '&lt;&lt;' : no...

no operator found which takes a right/left-hand operand of type "AR" - C++
Нашел на форуме исходник программы, собрал, но выдает ошибку описанную выше #include &lt;iostream&gt; #include &lt;conio.h&gt; #include...

Ошибка "binary '==': no operator found which takes a left-hand operand of type" - C++
while (currentNode != endNode) { nextNode = path; nextNode1 = path; takeRoute.x = nextNode; ...

Исправить ошибку "error C2679: binary '*' : no operator found which takes a right-hand operand of type" - C++
matiza.h #pragma once template &lt;typename N&gt; class matriza { protected: int stroka; N *mas; public: matriza()

операторы hand made - C++
Можно ли создавать свои операторы для встроенных типов. Например сделать оператор который работал бы как функция abs.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
26.12.2012, 18:05     right-hand operand #2
У тебя m1 и m2 массивы указателей, измени на обычные массивы и всё будет работать.
ra4ok
0 / 0 / 0
Регистрация: 12.10.2011
Сообщений: 37
26.12.2012, 18:16  [ТС]     right-hand operand #3
Цитата Сообщение от David Sylva Посмотреть сообщение
У тебя m1 и m2 массивы указателей, измени на обычные массивы и всё будет работать.
но мне то нужно чтобы программа работа по отдельности с int float double... а если я напишу cin>>m[i] то это инт полуится
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
26.12.2012, 18:18     right-hand operand #4
Цитата Сообщение от ra4ok Посмотреть сообщение
но мне то нужно чтобы программа работа по отдельности с int float double... а если я напишу cin>>m[i] то это инт полуится
Ну думай как поменять, ты хочешь записать целое число в массив указателей, так нельзя.
ra4ok
0 / 0 / 0
Регистрация: 12.10.2011
Сообщений: 37
26.12.2012, 18:19  [ТС]     right-hand operand #5
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
135
136
137
138
139
140
141
142
143
144
145
146
147
#include<iostream>
#include<iomanip>
#include <ctime> 
using namespace std;
 
 
template<class T>
void function(T** a);
 
int main()
{
 
     setlocale(.1251,"");
     int tmp;
     cout << "Меню\n1-int\n2-double\n3-float\n";
     cin >> tmp;
     switch(tmp)
     {
     case 1:
         {
         int** a1 = NULL;
         function<int>(a1);
         break;
         }
     case 2:
         {
         double** a2 = NULL;
         function<double>(a2);
         break;
         }
     case 3:
         {
            float** a3 = NULL;
            function<float>(a3);
            break;
         }
     default:
         {
             cout << "Ошибка!" << endl;
         }
     }
     return 0;
 }
 
template<class T>
void function(T** a)
{
    int stb,str;
    bool fl = false;
    cout << "Введите количество строк : "; cin >> str;
    cout << "Введите количество столбцов : "; cin >> stb;
 
    a = new T* [stb];
 
    for(int i = 0; i < stb; i++)
        a[i] = new T[str];
         
    int stolb = 0;
 
cout << "Введите массив :"<< endl;
 
    for(int i = 0; i < stb; i ++)
    {
        for(int j = 0; j < str; j++)
        {
            cin>>a[i][j]; 
        }
    }
 
    cout << "Ваш массив "<< endl;
    for(int i = 0; i < stb; i ++)
    {
        for(int j = 0; j < str; j++)
        {
            cout <<setw(4)<<  a[i][j];
        }
        cout << endl;
    }
 
    for(int i = 0; i < stb; i ++)
    {
        for(int j = 0; j < str; j++)
        {
            if(a[i][j] == 0)
            {
                stolb = j;
                fl = true;
                break;
            }
 
        }
         
    }
 
 
    if(fl)
        cout <<"Столбец : " << stolb +1 << endl;
    else 
        cout << "Нет нулевых элементов!" << endl;
 
T* sum = new T[str];
 
for(int i  = 0; i < str; i++)
{
    sum[i] = 0;
    for(int j = 0; j  < stb; j++)
    {
        if((a[i][j] < 0)&&(int(a[i][j])%2 == 0))
            sum[i] += a[i][j];
 
    }
    cout<<"Характеристика "<<i+1<<" столбца равна"<<sum[i]<<endl;
}
 
 
 
cout << endl;
 
T buf_sum;
 
int nmin; T buf_a;
 
for(int i = 0; i < stb - 1; i++)
{
    nmin = i;
    for(int j = i+1; j < stb; j++)
        if(sum[j] > sum[nmin]) nmin = j;
 
    buf_sum = sum[i]; sum[i] = sum[nmin]; sum[nmin] = buf_sum;
 
    for(int j = 0; j < stb; j++)
    {
        buf_a = a[i][j]; a[i][j] = a[nmin][j]; a[nmin][j] =buf_a;
    }
 
}
 
cout << "Упорядоченный масссив :" << endl;
    for(int i = 0; i < stb; i ++)
     {
         for(int j = 0; j < str; j++)
         {
             cout <<setw(4) <<  a[i][j];
         }
         cout << endl;
     }
}
чутка другая программа смысл тот же...
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
26.12.2012, 18:20     right-hand operand #6
Цитата Сообщение от ra4ok Посмотреть сообщение
чутка другая программа смысл тот же..
Ну да.
ra4ok
0 / 0 / 0
Регистрация: 12.10.2011
Сообщений: 37
26.12.2012, 18:22  [ТС]     right-hand operand #7
Цитата Сообщение от David Sylva Посмотреть сообщение
Ну да.
а почему тогда не хочет с одномерными работать??
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
26.12.2012, 18:23     right-hand operand #8
Цитата Сообщение от ra4ok Посмотреть сообщение
а почему тогда не хочет с одномерными работать??
Не понял, вопрос.
ra4ok
0 / 0 / 0
Регистрация: 12.10.2011
Сообщений: 37
26.12.2012, 18:24  [ТС]     right-hand operand #9
Цитата Сообщение от David Sylva Посмотреть сообщение
Не понял, вопрос.
1ый код, это одномерный массив, 2ой код это двумерный, и 2ой работает.

Добавлено через 27 секунд
или я что то не так написал?
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
26.12.2012, 18:25     right-hand operand #10
Честно не смотрел, ни первый код, ни второй, просто показал тебе в чём ошибка.
ra4ok
0 / 0 / 0
Регистрация: 12.10.2011
Сообщений: 37
26.12.2012, 18:27  [ТС]     right-hand operand #11
Цитата Сообщение от David Sylva Посмотреть сообщение
Честно не смотрел, ни первый код, ни второй, просто показал тебе в чём ошибка.
посмотрите код пожалуйста, и что именно мне исправить?? если напишу вместо m1 m2 просто m, работать массив начнет же только с int?
В кратце задание, программа рабочая полностью, за исключением того, что нужно сделать так чтобы, программа отдельно работала с int float double
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2012, 18:30     right-hand operand
Еще ссылки по теме:

Error C2106: '=' : left operand must be l-value - C++
Всем привет. Вот у меня есть такой хедер: #ifndef MATRIXX_H #define MATRIXX_H #include &lt;iostream&gt; #include &lt;conio.h&gt; #include...

Error C2106: '=' : left operand must be l-value - C++
Добрый день! Пишу программу управления колледжом. И столкнулась с этой ошибкой. У меня есть класс Department который имеет массив...

Lvalue required as left operand of assignment - C++
Подскажите, пожалуйста. Можно ли так (точнее что-то подобное) сделать? template &lt;class T&gt; union help{ //для mmap, так как он...

Ошибка: lvalue required as left operand of assignment - C++
b += l * b; выдает ошибку в этой строке: lvalue required as left operand of assignment

[Error] lvalue required as left operand of assignment - C++
Задание Ошибка при компиляции. 28 14 lvalue required as left operand of assignment #include &lt;iostream&gt; #include...


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

Или воспользуйтесь поиском по форуму:
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
26.12.2012, 18:30     right-hand operand #12
Я тебе объясняю, сделай просто массивы float m1[n], double m2[n] и всё будет работать.
Yandex
Объявления
26.12.2012, 18:30     right-hand operand
Ответ Создать тему
Опции темы

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