| | |
subscript require array or pointer
Please support our C++ advertiser: Intel Parallel Studio Home
![]() |
Can anybody help me whis this error? in red colour...
error C2109: subscript requires array or pointer type
error C2109: subscript requires array or pointer type
: error C2109: subscript requires array or pointer type
error C2664: 'void __cdecl std::swap(int &,int &)' : cannot convert parameter 1 from 'int' to 'int &'
A reference that is not to 'const' cannot be bound to
error C2109: subscript requires array or pointer type
error C2109: subscript requires array or pointer type
: error C2109: subscript requires array or pointer type
error C2664: 'void __cdecl std::swap(int &,int &)' : cannot convert parameter 1 from 'int' to 'int &'
A reference that is not to 'const' cannot be bound to
C++ Syntax (Toggle Plain Text)
#include <iostream> // std::cout #include <fstream> #include <iomanip> #include <string> // std::string #include <vector> // std::vector<> #include <algorithm> //std::for each() using namespace std; // import "std" namespace into global namespace struct exam { int examid; vector <int> total; }; void SwapMembers (int items[], int index1, int index2) { int temp; temp=items[index1]; items[index1]=items[index2]; items[index2]=temp; } int main() { ifstream stream1("STA83SOLUTION.txt"); if ( !stream1.is_open()) { cout << "While opening a file an error is encountered" << endl; } else { cout << "Fail Di buka....." << endl; } vector <exam> exams; exam aExam; int tempExamID; int tempTotal; stream1 >> tempExamID >> tempTotal; aExam.examid = tempExamID; aExam.total.push_back(tempTotal); // add this exam code to current student's vector of exam codes while (stream1 >> tempExamID >> tempTotal) { if(tempExamID != aExam.examid) { exams.push_back(aExam); // no more exam codes for this student. Add aStudent to students vector aExam.total.clear(); aExam.examid = tempExamID; } aExam.total.push_back(tempTotal); // add this exam code to current student's vector of exam codes } exams.push_back(aExam); // no more exam codes for this student. Add aStudent to students vector stream1.close(); // We have read the entire file, so time to close it. { ofstream myfile; myfile.open("411.txt"); int temp; if (myfile.is_open()) { for (size_t i = 0; i < exams.size(); i++) { for (size_t j = 0; j<exams.at(i).total.size(); j++) cout<<"\n"<<i+1<<":"<<" "<< exams.at (i).total.at(j)<<"\t"; // output list of exam codes for this student } } cin.get(); return 0; for (size_t i = 0; i < exams.size(); i++) for (size_t j = 0; j<exams.at(i).total.size(); j++) { int min = i; for (size_t j = 0; j<exams.at(i).total.size(); j++) [B][COLOR="Red"]if(exams.at (i).total.at(j)[min]<exams.at (i).total.at(j)[j])[/COLOR][/B] min = j; swap(exams.at (i).total.at(j)[min],exams.at (i).total.at(j)); } for (size_t j = 0; j<exams.at(i).total.size(); j++) cout << exams.at (i).total.at(j)<<" "<< endl; } }
I have done a correction what you had told but it seems still error again..
error C2143: syntax error : missing ')' before '}'
67) : error C2780: 'void __cdecl std::swap(_Ty &,_Ty &)' : expects 2 arguments - 0 provided
see declaration of 'swap'
syntax error : missing ';' before '}'
: fatal error C1004: unexpected end of file found
412.cpp
: error C2109: subscript requires array or pointer type
subscript requires array or pointer type
subscript requires array or pointer type
: error C2664: 'void __cdecl std::swap(int &,int &)' : cannot convert parameter 1 from 'int' to 'int &'
A reference that is not to 'const' cannot be bound to a non-lvalue
C:\Documents and Settings\ashida\My Documents\MASTER C++\main\412.cpp(82) : error C2374: 'j' : redefinition; multiple initialization
C:\Documents and Settings\ashida\My Documents\MASTER C++\main\412.cpp(76) : see declaration of 'j'
Error executing cl.exe.
error C2143: syntax error : missing ')' before '}'
67) : error C2780: 'void __cdecl std::swap(_Ty &,_Ty &)' : expects 2 arguments - 0 provided
see declaration of 'swap'
syntax error : missing ';' before '}'
: fatal error C1004: unexpected end of file found
412.cpp
: error C2109: subscript requires array or pointer type
subscript requires array or pointer type
subscript requires array or pointer type
: error C2664: 'void __cdecl std::swap(int &,int &)' : cannot convert parameter 1 from 'int' to 'int &'
A reference that is not to 'const' cannot be bound to a non-lvalue
C:\Documents and Settings\ashida\My Documents\MASTER C++\main\412.cpp(82) : error C2374: 'j' : redefinition; multiple initialization
C:\Documents and Settings\ashida\My Documents\MASTER C++\main\412.cpp(76) : see declaration of 'j'
Error executing cl.exe.
C++ Syntax (Toggle Plain Text)
#include <iostream> // std::cout #include <fstream> #include <iomanip> #include <string> // std::string #include <vector> // std::vector<> #include <algorithm> //std::for each() using namespace std; // import "std" namespace into global namespace struct exam { int examid; vector <int> total; }; void SwapMembers (int items[], int index1, int index2) { int temp; temp=items[index1]; items[index1]=items[index2]; items[index2]=temp; } int main() { ifstream stream1("STA83SOLUTION.txt"); if ( !stream1.is_open()) { cout << "While opening a file an error is encountered" << endl; } else { cout << "Fail Di buka....." << endl; } vector <exam> exams; exam aExam; int tempExamID; int tempTotal; stream1 >> tempExamID >> tempTotal; aExam.examid = tempExamID; aExam.total.push_back(tempTotal); // add this exam code to current student's vector of exam codes while (stream1 >> tempExamID >> tempTotal) { if(tempExamID != aExam.examid) { exams.push_back(aExam); // no more exam codes for this student. Add aStudent to students vector aExam.total.clear(); aExam.examid = tempExamID; } aExam.total.push_back(tempTotal); // add this exam code to current student's vector of exam codes } exams.push_back(aExam); // no more exam codes for this student. Add aStudent to students vector stream1.close(); // We have read the entire file, so time to close it. { ofstream myfile; myfile.open("411.txt"); int temp; if (myfile.is_open()) { for (size_t i = 0; i < exams.size(); i++) { for (size_t j = 0; j<exams.at(i).total.size(); j++) cout<<"\n"<<i+1<<":"<<" "<< exams.at (i).total.at(j)<<"\t"; // output list of exam codes for this student } } cin.get(); return 0; for (size_t i = 0; i < exams.size(); i++) { for (size_t j = 0; j<exams.at(i).total.size(); j++) { int min = i; for (size_t j = 0; j<exams.at(i).total.size(); j++) { if(exams.at (i).total.at(j)[min]<exams.at (i).total.at(j)[j]) min = j; swap(exams.at (i).total.at(j)[min],exams.at (i).total.at(j)); } for (size_t j = 0; j<exams.at(i).total.size(); j++) { cout << exams.at (i).total.at(j)<<" "<< endl; } } } } }
Last edited by nurulshidanoni; Apr 16th, 2008 at 1:29 am.
swap(exams.at (i).total.at(j)[min],exams.at (i).total.at(j)); What's the [min] doing? Everyone's gotta believe in something. I believe I'll have another drink.
~~~~~~~~~~~~~~~~~~
Looking for an exciting graduate degree? Robotics and Intelligent Autonomous Systems (RIAS) at SDSM&T See the program brochure here.
~~~~~~~~~~~~~~~~~~
Looking for an exciting graduate degree? Robotics and Intelligent Autonomous Systems (RIAS) at SDSM&T See the program brochure here.
you set min to be the value of j, so that statement is equivalent to
exams.at (i).total[j][j] , but .total is not a two dimensional array, is it? That's what the error C2109 is about, you're putting an excess array index on this expression. Everyone's gotta believe in something. I believe I'll have another drink.
~~~~~~~~~~~~~~~~~~
Looking for an exciting graduate degree? Robotics and Intelligent Autonomous Systems (RIAS) at SDSM&T See the program brochure here.
~~~~~~~~~~~~~~~~~~
Looking for an exciting graduate degree? Robotics and Intelligent Autonomous Systems (RIAS) at SDSM&T See the program brochure here.
I want to sort the number in descending order...but how to declare a exams.at (i).total.at(j)" in if statement?
C++ Syntax (Toggle Plain Text)
#include <iostream> // std::cout #include <fstream> #include <iomanip> #include <string> // std::string #include <vector> // std::vector<> #include <algorithm> //std::for each() using namespace std; // import "std" namespace into global namespace struct exam { int examid; vector <int> total; }; void SwapMembers (int items[], int index1, int index2) { int temp; temp=items[index1]; items[index1]=items[index2]; items[index2]=temp; } int main() { ifstream stream1("STA83SOLUTION.txt"); if ( !stream1.is_open()) { cout << "While opening a file an error is encountered" << endl; } else { cout << "Fail Di buka....." << endl; } vector <exam> exams; exam aExam; int tempExamID; int tempTotal; stream1 >> tempExamID >> tempTotal; aExam.examid = tempExamID; aExam.total.push_back(tempTotal); // add this exam code to current student's vector of exam codes while (stream1 >> tempExamID >> tempTotal) { if(tempExamID != aExam.examid) { exams.push_back(aExam); // no more exam codes for this student. Add aStudent to students vector aExam.total.clear(); aExam.examid = tempExamID; } aExam.total.push_back(tempTotal); // add this exam code to current student's vector of exam codes } exams.push_back(aExam); // no more exam codes for this student. Add aStudent to students vector stream1.close(); // We have read the entire file, so time to close it. { ofstream myfile; myfile.open("411.txt"); if (myfile.is_open()) { for (size_t i = 0; i < exams.size(); i++) { for (size_t j = 0; j<exams.at(i).total.size(); j++) cout<<"\n"<<i+1<<":"<<" "<< exams.at (i).total.at(j)<<"\t"; // output list of exam codes for this student if( j< j-1) swap(j,j+1); cout<<" "<< exams.at (i).total.at(j); } } cin.get(); return 0; } }
you can use any of the sorting algorithms. Try bubble sort, it's one of the easiest and since the number of elements is not too large you dont need to worry about performance.
before that you need to fix some other errors in your code too. within nested for loops that counter you use should have different names. all your nested loops have 'j'.
before that you need to fix some other errors in your code too. within nested for loops that counter you use should have different names. all your nested loops have 'j'.
Last edited by Agni; Apr 16th, 2008 at 3:38 am.
![]() |
Other Threads in the C++ Forum
- Previous Thread: TinyGoogle
- Next Thread: Hello I am new here. can someone explain how to fix a segmentation fault
| Thread Tools | Search this Thread |
api array arrays beginner binary bitmap c++ c/c++ calculator char char* class classes coding compile compiler console conversion convert count data database delete desktop developer directshow dll dynamiccharacterarray email encryption error file forms fstream function functions game generator getline google graph homeworkhelper iamthwee ifstream input int integer java lib linkedlist linux list loop looping loops map math matrix memory multiple news node number numbertoword output parameter pointer problem program programming project proxy python random read recursion recursive reference return rpg sorting string strings struct template templates test text tree unix url vector video visualstudio win32 windows winsock word wordfrequency wxwidgets






