我正准备发送我已完成的项目代码,只是为了遇到模糊的“cout”和“cin”以及一些if和while块期待声明的突然错误。起初我预计我会丢失iostream或命名空间,但这似乎不是问题所在。任何线索?
#include <iostream>
#include <Windows.h>
#include <string>
#include "ARRAY.H"
using namespace std;
void addToArray(Array<int> &intArray);
void linearSearch();
void binarySearch(Array<int> &intarray, int beg, int end);
void printArray();
void sortArray();
void Remove(int p_index);
void clear();
void testFunctions();
void pop();
Array<int> intarray(10);
int num_elements = 10;
int main()
{
intarray[0] = 42;
intarray[1] = 6;
intarray[2] = 2;
intarray[3] = 51;
intarray[4] = 16;
intarray[5] = 13;
intarray[6] = 44;
intarray[7] = 19;
intarray[8] = 26;
intarray[9] = 88;
intarray.WriteFile("unorderedArray.txt");
testFunctions();
}
// -------------------------------------------------------
// Name: testFunctions
// Description: General testing of all the functions
// Arguments: None.
// -------------------------------------------------------
void testFunctions()
{
intarray.ReadFile("unorderedArray.txt");
printArray();
sortArray();
Remove(4);
addToArray(intarray);
linearSearch();
binarySearch(intarray, 0, intarray.Size());
//clear();
pop();
printArray();
intarray.WriteFile("orderedArray.txt");
cout<<"\nThis concludes our tests. Full marks please!"<<endl;
Sleep(10000);
}
// -------------------------------------------------------
// Name: addToArray
// Description: Allows users to insert a new element into the array
// at an index of their choosing
// Arguments: The Array
// -------------------------------------------------------
void addToArray(Array<int> &intarray)
{
int newValue; //the value to be added to the array
int newIndex; //the index location of the new array
int grow_size; //the amount the array will grow by if it is full
if(num_elements == intarray.Size() ) //If array is full but user wants to add to it, they will be prompted to increase it's size before being allowed to add an elememt
{
cout<<"\nArray is full!!!!! How much do you want to grow it?"<<endl;
cin>> grow_size;
intarray.Resize(intarray.Size() + grow_size); //creates a new larger array and copies everything over
cout<<"Array resized"<<endl;
}
cout<<"What do you want to add to the array?"<<endl;
cin >> newValue;
cout<<"At what point should this value be added?"<<endl;
cin >> newIndex;
intarray.Insert(newValue, newIndex);
num_elements++;
sortArray(); //sorts the values from smallest to largest
printArray();
}
// -------------------------------------------------------
// Name: linearSearch
// Description: Searches through the Array from start to finish for the
// inputted value.
// Arguments: None.
// -------------------------------------------------------
void linearSearch()
{
int search; //the search key
int result = 0;
cout<<"\nEnter Element you want to Search=";
cin>>search;
for(int i=1;i<=intarray.Size();i++) //goes through each element of the array until it finds the value in the key.
if(intarray[i]==search)
{
cout<<"\nData is Found at Location : "<<i;
result=1;
break;
}
}
if(result==0)
{
cout<<"Data is Not Found";
}
cout<<"\n"<<endl;
}
// -------------------------------------------------------
// Name: binarySearch
// Description: Uses a B-Tree format to search for inputted
// values of a sorted array
// Arguments: The Array, int beg: the start of the Array, int end: The end of the Array
// -------------------------------------------------------
void binarySearch(Array<int> &intarray, int beg, int end)
{
int key; //the value to be searched for
cout<<"\nEnter Item you want to Search= ";
cin>>key;
int mid; // the middle of the array
//beg=1;
//end=intarray.Size();
mid=(beg+end)/2; //the middle point of the array is found by adding the beginning and end values and dividing them by two.
while(beg<=end && intarray[mid]!=key) //While the mid value does not equal the key, if it is smaller it adds 1 to the beginning but if it is
//larger it subtracts 1 from the end and then the value of the middle point is found again. This continues until either the mid value equals the key value
{
if(intarray[mid]<key)
beg=mid+1;
else
end=mid-1;
mid=(beg+end)/2;
}
if(intarray[mid]==key)
{
cout<<"\nData is Found at Location : "<<mid;
}
else
{
cout<<"Data is Not Found";
}
}
// -------------------------------------------------------
// Name: printArray
// Description: prints the array
// Arguments: None.
// -------------------------------------------------------
void printArray()
{
int i = intarray[0];
cout<<"\n The contents of the array are : "<<endl;
cout<<"\n Elements :"<<"\t\t Value:"<<endl;
for (i=0;i<intarray.Size();i++) //goes through each element of the array and prints them nice and neat
cout<<" \tarray ["<<i<<"]"<<"\t\t "<<intarray[i]<<endl;
}
// -------------------------------------------------------
// Name: sortArray
// Description: sorts the Array from smallest value to largest
// Arguments: None.
// -------------------------------------------------------
void sortArray()
{
cout<<"\nSorting array..."<<endl;
for (int i = 0; i < intarray.Size(); i++)
{
// nSmallestIndex is the index of the smallest element found so far
int nSmallestIndex = i;
// Searches through every element starting at nStartIndex+1
for (int nCurrentIndex = i + 1; nCurrentIndex < intarray.Size(); nCurrentIndex++)
{
// If the current element is smaller than the previously found smallest it becomes the new smallest index
if (intarray[nCurrentIndex] < intarray[nSmallestIndex])
nSmallestIndex = nCurrentIndex;
}
// Swap the start element with the smallest element
swap(intarray[i], intarray[nSmallestIndex]);
}
printArray();
}
// -------------------------------------------------------
// Name: Remove
// Description: Removes an element from the array and
// resizes it.
// Arguments: int p_index: The index of the element to be deleted
// -------------------------------------------------------
void Remove(int p_index)
{
int index;
cout<<"\nRemoving index "<<p_index<<" from array"<<endl;
// move everything after the deleted element down by one cell.
for(index = p_index + 1; index < intarray.Size(); index++)
{
intarray.m_array[index - 1] = intarray.m_array[index];
}
//Resizes the array by reducing it by one so that the last value is not duplicated
intarray.Resize(intarray.Size() -1);
num_elements--;
printArray();
}
// -------------------------------------------------------
// Name: clear
// Description: "clears" the array by changing all the values to 0
// Arguments: None.
// -------------------------------------------------------
void clear()
{
//goes through each element of the array and changes all the values to 0.
for(int i=0; i < intarray.Size(); i++)
{
intarray[i]=0;
}
printArray();
}
// -------------------------------------------------------
// Name: pop
// Description: Pops off the last element of the array
// Arguments: None.
// -------------------------------------------------------
void pop()
{
//Reduces the size of the array by one, chopping off the last element.
cout<<"\nPopping off the last element of the Array"<<endl;
intarray.Resize(intarray.Size() -1);
num_elements++;
}
错误:
1&gt; c:\ users \ liam \ desktop \ orderedarray \ orderedarray \ main.cpp(198):error C2872:'cout':ambiguous symbol 1&gt;可以是'c:\ users \ liam \ desktop \ orderedarray \ orderedarray \ main.cpp(144):int cout'1&gt;或'c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ iostream(26):std :: ostream std :: cout'1&gt; c:\ users \ liam \ desktop \ orderedarray \ orderedarray \ main .cpp(198):错误C2297:'&lt;&lt;' :非法,右操作数类型'const char [35]'1&gt; c:\ users \ liam \ desktop \ orderedarray \ orderedarray \ main.cpp(198):错误C2563:形式参数lis不匹配
答案 0 :(得分:1)
坚持下去,我自己设法解决了这个问题。我浏览了错误消息,发现我在其中一个函数中缺少一个括号。代码现在似乎运行良好,所以我猜所有新手编码器的道德是如果你的整个程序突然出现错误,检查所有括号是否正确配对。