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

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

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

right-hand operand - C++

26.12.2012, 18:02. Просмотров 449. Ответов 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];Хелп что не так сделал:
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2012, 18:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос right-hand operand (C++):

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()

11
David Sylva
1291 / 953 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
26.12.2012, 18:05 #2
У тебя m1 и m2 массивы указателей, измени на обычные массивы и всё будет работать.
1
ra4ok
0 / 0 / 0
Регистрация: 12.10.2011
Сообщений: 37
26.12.2012, 18:16  [ТС] #3
Цитата Сообщение от David Sylva Посмотреть сообщение
У тебя m1 и m2 массивы указателей, измени на обычные массивы и всё будет работать.
но мне то нужно чтобы программа работа по отдельности с int float double... а если я напишу cin>>m[i] то это инт полуится
0
David Sylva
1291 / 953 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
26.12.2012, 18:18 #4
Цитата Сообщение от ra4ok Посмотреть сообщение
но мне то нужно чтобы программа работа по отдельности с int float double... а если я напишу cin>>m[i] то это инт полуится
Ну думай как поменять, ты хочешь записать целое число в массив указателей, так нельзя.
1
ra4ok
0 / 0 / 0
Регистрация: 12.10.2011
Сообщений: 37
26.12.2012, 18:19  [ТС] #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;
     }
}
чутка другая программа смысл тот же...
0
David Sylva
1291 / 953 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
26.12.2012, 18:20 #6
Цитата Сообщение от ra4ok Посмотреть сообщение
чутка другая программа смысл тот же..
Ну да.
1
ra4ok
0 / 0 / 0
Регистрация: 12.10.2011
Сообщений: 37
26.12.2012, 18:22  [ТС] #7
Цитата Сообщение от David Sylva Посмотреть сообщение
Ну да.
а почему тогда не хочет с одномерными работать??
0
David Sylva
1291 / 953 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
26.12.2012, 18:23 #8
Цитата Сообщение от ra4ok Посмотреть сообщение
а почему тогда не хочет с одномерными работать??
Не понял, вопрос.
1
ra4ok
0 / 0 / 0
Регистрация: 12.10.2011
Сообщений: 37
26.12.2012, 18:24  [ТС] #9
Цитата Сообщение от David Sylva Посмотреть сообщение
Не понял, вопрос.
1ый код, это одномерный массив, 2ой код это двумерный, и 2ой работает.

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

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

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, так как он...


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

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

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