Avatar billede snapafile Nybegynder
27. august 2004 - 18:43 Der er 12 kommentarer

adressebog med fejl?

Jeg har lavet en adressebog i c++ er der ikke en der vil sige mig om der er nogle fejl. Min compiler siger at der er fejl i linje 24 og 208???

Her er koden:

#include<iostream.h>
#include<conio.h>
#include<stdio.h>

class address
{
    private:
    struct info
    {
      char nickname[20],name[30],mail[35];
      int id_no;long int phone;
      info *next;
    };
    info *head,*temp,*disp;
    public:
    address();
    ~address();
    void addrecord();
    void deleterecord();
    void modifyrecord();
    void displayrecord();
};
void address::address()
{
    head=NULL;
    temp=NULL;
    disp=NULL;
}
address::~address()
{
    while(head!=NULL)
    {
      info *t1;
      t1=head;
      head=head->next;
      delete t1;
    }
}

void address::addrecord()
{
    info *add;
    char proceed='y';
    while(proceed=='y')
    {
      clrscr();
      add=new info;gotoxy(25,10);
      cout<<"\n\tEnter item entry number  :";
      cin>>add->id_no;
      fflush(stdin);
      cout<<"\n\t\tEnter name  :";
      scanf("%s",add->name);
      fflush(stdin);
      cout<<"\n\t\tEnter e-mail address  :";
      scanf("%s",add->mail);
      fflush(stdin);
      cout<<"\n\t\tEnter phone number  :";
      cin>>add->phone;
      fflush(stdin);
      cout<<"\n\t\tEnter nickname  :";
      scanf("%s",add->nickname);
      fflush(stdin);

      if(head==NULL)
      {
    head=add;
    add->next=0;
    temp=add;
      }
      else
      {
    temp->next=add;
    add->next=NULL;
    temp=add;
      }
      cout<<"\n\n\t\tWant to proceed[y/n]:";
      cin>>proceed;
      fflush(stdin);
    }
}

void address::deleterecord()
{
    info *del;
    int tex,present=0;clrscr();
    if(head==NULL)
    {
      gotoxy(25,20);
      cout<<"\n No record found to delete";getch();
      return;
    }
    gotoxy(25,20);
    cout<<"\n Enter item number to delete:";
    cin>>tex;
    fflush(stdin);
    for(del=head;del!=NULL;del=del->next)
    {
      if(del->id_no==tex)
      {
    if(head->id_no==tex)
    {
      del=head;
      head=head->next;
      delete del;
      return;
    }
    else
    {
      for(disp=head;disp!=NULL;disp=disp->next)
      if(disp->next==del)
      {
        disp->next=del->next;
        delete del;
        if(disp->next==NULL) temp=disp;
        return;
      }
    }
      }
    }
    if(present==0)
    cout<<"\n No such entry found";
    else
    cout<<"\n Entry deleted.";getch();
}

void address::modifyrecord()
{
    info *modify;
    int tex,present=0;clrscr();gotoxy(25,20);
    cout<<"\n Enter entry number to edit ";
    cin>>tex;
    fflush(stdin);
    for(modify=head;modify!=NULL;modify=modify->next)
    {
      if(modify->id_no==tex)
      {
    cout<<"\n\t\t Enter nickname to change:";
    scanf("%s",modify->nickname);
    fflush(stdin);
    cout<<"\n\t\t Enter name to change:";
    scanf("%s",modify->name);
    fflush(stdin);
    cout<<"\n\t\t Enter e-mail to change:";
    scanf("%s",modify->mail);
    fflush(stdin);
    cout<<"\n\t\t Enter phone number to change";
    cin>>modify->phone;
    fflush(stdin);
    return;
      }
    }
    if(present==0)
    cout<<"\n Entry not found";getch();
}

void address::displayrecord()
{
    if(head==NULL)
    {
      clrscr();
      cout<<"\n No record to display";getch();
      return;
    }
    for(disp=head;disp!=NULL;disp=disp->next)
    {
      clrscr();gotoxy(25,20);
      cout<<"\n\t entry no:"<<disp->id_no;
      cout<<"\n\t nickname:"<<disp->nickname;
      cout<<"\n\t name:"<<disp->name;
      cout<<"\n\t e-mail address:"<<disp->mail;
      cout<<"\n\t phone number:"<<disp->phone;
      getch();
    }
}

void main()
{
    int choice;
    address addressobj;
    while(1)
    {
      clrscr();
      gotoxy(25,20);
      cout<<"ADDRESS BOOK by keerthivasan\n\n\n\n";
      cout<<"\n\t\t 1.ADD NEW ENTRY";
      cout<<"\n\t\t 2.DELETE ENTRY";
      cout<<"\n\t\t 3.MODIFY RECORD";
      cout<<"\n\t\t 4.DISPLAY RECORD";
      cout<<"\n\t\t 5.EXIT\n";
      cout<<"\n\t\t Enter your choice [1-5]:";
      cin>>choice;
      fflush(stdin);
      switch(choice)
      {
    case 1:
      addressobj.addrecord();
      break;
    case 2:
      addressobj.deleterecord();
      break;
    case 3:
      addressobj.modifyrecord();
      break;
    case 4:
      addressobj.displayrecord();
      break;
    case 5:
      return;
      }
    }
}
Avatar billede arne_v Ekspert
27. august 2004 - 18:45 #1
void address::address()
{
    head=NULL;
    temp=NULL;
    disp=NULL;
}

skal være:

address::address()
{
    head=NULL;
    temp=NULL;
    disp=NULL;
}

fordi en constructor har ingen retur type
Avatar billede snapafile Nybegynder
27. august 2004 - 18:47 #2
ps. linje 24 er:


...
    void displayrecord();
};
void address::address()
{                        'dette er linje 24
    head=NULL;
    temp=NULL;
    disp=NULL;
...

og 208 til sidst:

  break;
    case 5:
      return;  'dette er linje 208
      }
    }
}
Avatar billede snapafile Nybegynder
27. august 2004 - 18:48 #3
hvordan kan dette problem løses
Avatar billede arne_v Ekspert
27. august 2004 - 18:48 #4
Den sidste fejl skyldes vist noget med main og forventet int retur type.

Prøv med:

int main()
{
    int choice;
    address addressobj;
    while(1)
    {
      clrscr();
      gotoxy(25,20);
      cout<<"ADDRESS BOOK by keerthivasan\n\n\n\n";
      cout<<"\n\t\t 1.ADD NEW ENTRY";
      cout<<"\n\t\t 2.DELETE ENTRY";
      cout<<"\n\t\t 3.MODIFY RECORD";
      cout<<"\n\t\t 4.DISPLAY RECORD";
      cout<<"\n\t\t 5.EXIT\n";
      cout<<"\n\t\t Enter your choice [1-5]:";
      cin>>choice;
      fflush(stdin);
      switch(choice)
      {
    case 1:
      addressobj.addrecord();
      break;
    case 2:
      addressobj.deleterecord();
      break;
    case 3:
      addressobj.modifyrecord();
      break;
    case 4:
      addressobj.displayrecord();
      break;
    case 5:
      exit(0);
      break;
      }
    }
}
Avatar billede arne_v Ekspert
27. august 2004 - 18:51 #5
Som vist:

24 - slet void

208 - erklær main som int og erstat den return med en exit(0) eller en return 0
Avatar billede snapafile Nybegynder
27. august 2004 - 18:53 #6
takker... men kan du også løse problemet på linje 24? Min compiler skriver:
return type specification for constructor invalid
Avatar billede arne_v Ekspert
27. august 2004 - 18:54 #7
Fjern void foran constructor
Avatar billede snapafile Nybegynder
27. august 2004 - 18:57 #8
hvor står der constructor?
Avatar billede arne_v Ekspert
27. august 2004 - 18:59 #9
Det står der ikke - det er en constructor.

Læs lige min 18:45:38 kommentar igen.
Avatar billede arne_v Ekspert
28. august 2004 - 18:11 #10
OK ?
Avatar billede arne_v Ekspert
04. september 2004 - 20:49 #11
??
Avatar billede arne_v Ekspert
11. september 2004 - 21:25 #12
??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester