没有运算符“>>”匹配这些操作数操作数类型是:std::istream>>int
No Operator ">>" matches these operands operand types are: std::istream>>int
我是计算机专业的学生,刚开始编程。我的代码有问题。我已经寻找了所有可用的类似解决方案,但 none 解决了我的问题。
这是我的二维数组程序代码
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(void)
{
int arr[4][5];//A 2D array is taken with 4 fields and 5 tests
int i, j = 0, p, test_value, test_no, max, max_occ, max_occ2, pos1, pos2, temp, flag, total;
float avg;
for (i = 0; i<4; i++)
for (j = 0; j<5; j++)
arr[i][j] = -1; //Values of each element is initialized to -1;
while (1) {
cout << "\nPress 1 to enter a new testvalue."
<< "\nPress 2 to count the total number of occurance on the table."
<< "\nPress 3 to Delete a field."
<< "\nPress 4 to Find Max,and 2nd Max occured element."
<< "\nPress 5 to average of all fields."
<< "\nPress 6 to Find field with max value."
<< "\nPress 7 to exit.";
cin >> p;
switch (p)
{
case 1: flag = 0;
cout << "\nEnter new test value:";
cin >> test_value;
for (i = 0; i<4; i++)
{
for (j = 0; j<5; j++)
{
if (arr[i][j] == -1) //If the table is empty a test result is entered
{
flag = 1;
arr[i][j] = test_value;
break;
}
}
if (flag == 1)
break; //If one value is entered in the table the the loop stops
}
break;
case 2: test_no = 0;
for (i = 0; i<4; i++)
{
for (j = 0; j<5; j++)
{
if (arr[i][j] != -1)
{
cout << arr[i][j];//Prints all entered value of the table
test_no += 1; //counts them
}
}
}
cout << "\nTotal number of tests:" << test_no;
break;
case 3: cout << "\nEnter the field value: ";
This Line -->cin >> i - 1;
cout << "\nEnter the test number: ";
This Line --> cin >> j - 1;
arr[i][j] = -1; //Initialize the deleted position with -1;
break;
case 4: pos1 = pos2 = 0;
max_occ = max_occ2 = 0;
for (i = 0; i<4; i++)
{
for (j = 0; j<5; j++)
{
max = 0;
if (arr[i][j] != -1)
{
temp = arr[i][j];
if (temp != pos1 && temp != pos2)
{
max = std::count(&arr[0][0], &arr[3][5], temp); //count () is a inbuilt funtion
//count(starting address,ending address ,value in array)
if (max_occ<max)
{
if (max_occ2 != 0)
{
max_occ2 = max_occ;
pos2 = pos1;
}
max_occ = max;
pos1 = temp;
}
else if (max_occ2<max)
{
max_occ2 = max;
pos2 = temp;
}
}
}
}
}
cout << "Maximum Occurance of " << pos1 << " is :" << max_occ << endl;
cout << "2nd maximum occurance of " << pos2 << " is:" << max_occ2 << endl;
break;
case 5:avg = 0;
for (i = 0; i<4; i++)
{
avg = 0;
for (j = 0; j<5; j++)
{
if (arr[i][j] != -1)
avg += arr[i][j]; //add all the values of fields test
}
cout << "\nAverage of field " << i + 1 << ":" << avg / 5; //prints the average of five tests
}
break;
case 6:total = 0;
max = 0;
pos1 = 0;
for (i = 0; i<4; i++)
{
for (j = 0; j<5; j++)
{
if (arr[i][j] != -1)
total += arr[i][j]; //add all the elements of row
}
if (max<total)
{
max = total;//Finds maximum of all the fields
pos1 = i;//stores the index of maximum field
}
}
cout << "\nThe field with max score:" << pos1 + 1 << endl;
break;
case 7: exit(0);
}
}
return 0;
}
我提到了 2 行“This-->” 我有一个错误说
Error C2678 binary '>>': no operator found which takes a left-hand operand of type 'std::istream' (or there is no acceptable conversion)
请有人帮我解决这个问题。
我真的会提供任何帮助。
在这些行中
cin >> i - 1;
和
cin >> j - 1;
右操作数是不能绑定到非常量引用的临时对象。
这些说法没有道理。也许你的意思是
cin >> i;
i = i - 1;
和
cin >> j;
j = j - 1;
我是计算机专业的学生,刚开始编程。我的代码有问题。我已经寻找了所有可用的类似解决方案,但 none 解决了我的问题。 这是我的二维数组程序代码
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(void)
{
int arr[4][5];//A 2D array is taken with 4 fields and 5 tests
int i, j = 0, p, test_value, test_no, max, max_occ, max_occ2, pos1, pos2, temp, flag, total;
float avg;
for (i = 0; i<4; i++)
for (j = 0; j<5; j++)
arr[i][j] = -1; //Values of each element is initialized to -1;
while (1) {
cout << "\nPress 1 to enter a new testvalue."
<< "\nPress 2 to count the total number of occurance on the table."
<< "\nPress 3 to Delete a field."
<< "\nPress 4 to Find Max,and 2nd Max occured element."
<< "\nPress 5 to average of all fields."
<< "\nPress 6 to Find field with max value."
<< "\nPress 7 to exit.";
cin >> p;
switch (p)
{
case 1: flag = 0;
cout << "\nEnter new test value:";
cin >> test_value;
for (i = 0; i<4; i++)
{
for (j = 0; j<5; j++)
{
if (arr[i][j] == -1) //If the table is empty a test result is entered
{
flag = 1;
arr[i][j] = test_value;
break;
}
}
if (flag == 1)
break; //If one value is entered in the table the the loop stops
}
break;
case 2: test_no = 0;
for (i = 0; i<4; i++)
{
for (j = 0; j<5; j++)
{
if (arr[i][j] != -1)
{
cout << arr[i][j];//Prints all entered value of the table
test_no += 1; //counts them
}
}
}
cout << "\nTotal number of tests:" << test_no;
break;
case 3: cout << "\nEnter the field value: ";
This Line -->cin >> i - 1;
cout << "\nEnter the test number: ";
This Line --> cin >> j - 1;
arr[i][j] = -1; //Initialize the deleted position with -1;
break;
case 4: pos1 = pos2 = 0;
max_occ = max_occ2 = 0;
for (i = 0; i<4; i++)
{
for (j = 0; j<5; j++)
{
max = 0;
if (arr[i][j] != -1)
{
temp = arr[i][j];
if (temp != pos1 && temp != pos2)
{
max = std::count(&arr[0][0], &arr[3][5], temp); //count () is a inbuilt funtion
//count(starting address,ending address ,value in array)
if (max_occ<max)
{
if (max_occ2 != 0)
{
max_occ2 = max_occ;
pos2 = pos1;
}
max_occ = max;
pos1 = temp;
}
else if (max_occ2<max)
{
max_occ2 = max;
pos2 = temp;
}
}
}
}
}
cout << "Maximum Occurance of " << pos1 << " is :" << max_occ << endl;
cout << "2nd maximum occurance of " << pos2 << " is:" << max_occ2 << endl;
break;
case 5:avg = 0;
for (i = 0; i<4; i++)
{
avg = 0;
for (j = 0; j<5; j++)
{
if (arr[i][j] != -1)
avg += arr[i][j]; //add all the values of fields test
}
cout << "\nAverage of field " << i + 1 << ":" << avg / 5; //prints the average of five tests
}
break;
case 6:total = 0;
max = 0;
pos1 = 0;
for (i = 0; i<4; i++)
{
for (j = 0; j<5; j++)
{
if (arr[i][j] != -1)
total += arr[i][j]; //add all the elements of row
}
if (max<total)
{
max = total;//Finds maximum of all the fields
pos1 = i;//stores the index of maximum field
}
}
cout << "\nThe field with max score:" << pos1 + 1 << endl;
break;
case 7: exit(0);
}
}
return 0;
}
我提到了 2 行“This-->” 我有一个错误说
Error C2678 binary '>>': no operator found which takes a left-hand operand of type 'std::istream' (or there is no acceptable conversion)
请有人帮我解决这个问题。
我真的会提供任何帮助。
在这些行中
cin >> i - 1;
和
cin >> j - 1;
右操作数是不能绑定到非常量引用的临时对象。
这些说法没有道理。也许你的意思是
cin >> i;
i = i - 1;
和
cin >> j;
j = j - 1;