好的,我想解释我在代码之前要做的事情。我正在创建一个学生记录系统。我试图从文本文件中将信息提取到记录系统中。我试图在堆上使用数组存储信息。错误:功能太少的参数`void alpha(std :: string *,student)'
我主要关注前几个错误,因为我觉得那些会导致下面的错误。任何帮助将不胜感激,因为我浏览过许多论坛,他们没有带领我走向正确的方向。提前致谢!
代码:
#include "address.h"
#include "student.h"
#include "date.h"
#include "record.h"
#include "name.h"
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#define pArray
#define students
#define Request
using namespace :: std;
enum {sNUMBER=50};
//Function Prototypes
void tPrint(string*,student pArray);
void sPrint(string*,student pArray);
void alpha(string*,student pArray);
int generate();
//Function Definitions
void tPrint(string*,student pArray, alpha)
{
if (alpha != 0)
{
alpha(pArray);
}//end if
int i;
for (i=0; i<sNUMBER;i++)
{
pArray->tPrint();
pArray+=1;
}//end for
};//end tPrint
void sPrint(string*,student pArray)
{
if (alpha != 0)
{
alpha(pArray);
}//ennd if
int i;
for (i=0; i<sNUMBER;i++)
{
pArray->sPrint();
pArray+=1;
}//end for
};//end sPrint
void alpha(string*,student pArray)
{
int i;//counter
int j;//counter
for (i=0;i<sNUMBER-1;i++)
{
for (j=0;j<sNUMBER-1-i;j++)
{
//combine first and last names into full names
if (strcmp((pArray->GetsName().GetfName())+=" " +=(pArray->GetsName().GetlName()),((pArray+1)->GetsName().GetfName())+=" "+=((pArray+1)->GetsName().GetlName()))>0)
{
swap(pArray[j],pArray[j+1]);
}
}//end for
}//end for
};//end alpha
int generate()
{
srand(sNUMBER);
ofstream data;
data.open ("data.txt");
if (data.is_open())
{
int i; // counter
int j; // counter
//Name info
string new fName[sNUMBER];
string new lName[sNUMBER];
//Address info
string new add1[sNUMBER];
string new add2[sNUMBER];
//variables to generate names
string new fName1[5] = {"Alfred","Robert","Ryan","Hank","Richard"};
string new fName2[5] = {"Hannah","Lacie","Crystal","Kayce","Susan"};
string new lName1[5] = {"Smith","Jones","Allison","Johnson","Moore"};
string new lName2[5] = {"Howard","Williams","Pinkston","Cooley","Vernon"};
string new fNames[2] = {fName1,fName2};
string new lNames[2] = {lName1,lName2};
// variables to generate addresses
string new adds1[5] = {"159 faternity st.","399 Dorm Blvd.","222 faternity st.", "777 Dorm Blvd", "82 Canal street"};
string new adds2[10] = {"Apartment A", "Apartment B", "Apartment C", "Apartment D", "Apartment E","Apartment F", "Apartment G", "Apartment H", "Apartment I"};
for (i=0;i<sNUMBER;i++)
{
for (j=0; j<5; j++)
{
strCopy(fName[i],fNames[i>25][j]);
strCopy(lName[i],lNames[i>25][j + floor(i/5)-(i>25)*(floor(i/5)-6)- 4*((j+i/5)>5)]);
}
}
for (i=0;i<sNUMBER;i++)
{
for (j=0; j<10; j++)
{
strCopy(add1[i],adds1[j]);
strCopy(add2[i],adds2[j + floor(i/10)-(i>25)*(floor(i/10)-11)- 4*((j+i/10)>10)]);
}
}
//deallocate unneeded variables
delete [] fName1;
delete [] fName2;
delete [] lName1;
delete [] lName2;
delete [] fNames;
delete [] lNames;
for (i=0; i<sNUMBER;i++)
{
// name info
Data << fName[i] << "\n"; // first name
Data << lName[i] << "\n"; // last name
// address info
Data << add1[i] <" \n"; // add 1
Data << add2[i] <" \n"; // add 2
Data << "Indianapolis \n"; // city
Data << "IN \n"; // state
Data << "46168 \n"; // zip
// birthdate
Data << rand()%28 + 1 << " \n"; //day
Data << rand()%12 + 1 << " \n";//month
Data << 2011 -(rand()%49 + 12)<< "\n";//year
//graddate
Data << rand()%28 + 1 << " \n";//day
Data << rand()%12 + 1 << " \n"; // month
Data << 2011 + (rand()%6+2)<< " \n"; // year
//performance info
Data << (rand()%16)/(float rand()%4)<<" \n"; //gpa
Data << (rand()%300)<< " \n"; //credits
}
//Deallocate rest of memory
delete [] fName;
delete [] lName;
delete [] add1;
delete [] add2;
data.close();
}
else
{
cout << "Your file did not open. Sorry \n";
}
return 0;
}//end generate}
下面是错误:
C:\Users\main.cpp||In function ‘void tPrint(std::string*, student)’:|
C:\Users\main.cpp|25|error: too few arguments to function ‘void alpha(std::string*, student)’|
C:\Users\main.cpp|32|error: at this point in file|
C:\Users\main.cpp|37|error: expected primary-expression before ‘->’ token|
请花时间适当地格式化问题中的代码(使用“{}”编辑器控件)。 – 2011-04-14 20:37:01
我不确定发生了什么事。我会再试一次。 – CPlusPlusBeginner 2011-04-14 20:38:34
接下来,阅读错误。你得到“函数... alpha的参数太少”的原因是因为你声明了,然后用两个参数定义它并用一个参数调用它。如果纠正这些导致进一步的问题,请回来向我们询问这些问题。 – 2011-04-14 20:41:53