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

right-hand operand - C++

Восстановить пароль Регистрация
 
ra4ok
0 / 0 / 0
Регистрация: 12.10.2011
Сообщений: 37
26.12.2012, 18:02     right-hand operand #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
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];Хелп что не так сделал:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
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
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
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
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
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
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
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
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
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
Еще ссылки по теме:

C++ Error C2106: '=' : left operand must be l-value
Lvalue required as left operand of assignment C++
C++ [Error] lvalue required as left operand of assignment

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

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

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