Avatar billede henrik10 Nybegynder
25. april 2002 - 00:04 Der er 4 kommentarer og
2 løsninger

Tre funktioner

Hej,
Jeg har lidt problemer med to funktioner jeg skal lave til et projekt, der er en adressebog, hvor name field er noeglen til min database.

De foerste funktion hedder addRecord med prototypen:
int addRecord (record*&, char[],char[],char[], float);
den skal tilfoeje en record til slutningen af en list og vil ikke lave en ny hvis den alllerede eksisterer med samme navn.

int isRecordInList (record *, char[]);
checker for duplicater, altsaa records hvor vedkommende har identisk navn.

int deleteRecord(record *&, char name[]);
vil slette foerste matchende record baseret paa navnet, hvis der er duplicater.

Haaber at der en der kan hjaelpe mig paa vej med disse funktioner:)
Avatar billede tipsen Nybegynder
25. april 2002 - 00:10 #1
Har du prøvet at løse det selv - og hvad er du nået frem til?
Avatar billede kamikaze Nybegynder
25. april 2002 - 01:34 #2
Du bliver vist nødt til at poste noget af din kode her, så vi kan se hvad problemet går ud på. :-)
Avatar billede laffe Nybegynder
25. april 2002 - 08:16 #3
Her er lidt at komme igang med:

1.

int addRecord (record*&, char[],char[],char[], float);

Jeg går ud fra at record peger på den første record i din list.

De resterende 4 parameter må være felterne i en adrese record. Jeg går ud fra at den første char[] er navne feltet.

Du skal iterere gennem listen for at finde ud af, om den nye record allerede findes. hvis den findes, gør du ingenting, hvis ikke , så indsætter du en ny.

int addRecord (record*&, char[] navn ,char[],char[], float)
{
 
  if (!isRecordInList(record,navn))
  {
    // Navn kunne ikke blive fundet i listen, tilføj ny record
    ptr = record;
    while (ptr)
    {
      ptr = ptr->next;
    }
    // TODO:
    // ptr peger nu på den sidste record i listen.
    // alloker en ny record, og link den til listen.
  }
}
Avatar billede henrik10 Nybegynder
25. april 2002 - 12:17 #4
Hej,
Jeg takker for dit svar laffe.
Ja, jeg maa hellere poste noget kode, saa i har noget at gaa udfra. Men foerst og fremmest har jeg svaert ved at genneskue hvordan add og deltefunktionerne haenger sammen.
Er i skole lige nu, saa jeg vil poste det senere med haab om at i har mod paa at kigge paa det.
Tak!
Avatar billede henrik10 Nybegynder
26. april 2002 - 11:56 #5
nedenstaaende er min loesning til add og delete funktionerne. Jeg har ikke tilfoejet:
int addRecord (record*&, char[],char[],char[], float);
int deleteRecord(record *&, char name[]);
int isRecordInList (record *, char[]);
da jeg er i tvivl om det.
Her er den struct jeg har brugt i opgaven, bare saa det giver lidt mere mening. Det hele skal give en adresse bog.
Haaber der er en der kan hjaelpe.
struct record
{
  char name[32];
  char address[80];
  char telno[15];
  float gpa;
  record *next;
};

void main ()
{
record *start;

bool addRecord(record *post)
{
  record *last;
  if (start == NULL)
   
    first = post;
  else
  {
   
    last = start;
    while (last->next != NULL)
      last = last->next;
    last->next = post;
  };
  post->next = NULL;
  return true;
}

bool deleteRecord(record *post)
{
  record *last, *current;
  last    = NULL;
  current = start;
  while (current != NULL)
  {
      if (strncpy(current->navn, post->navn, sizeof(current->navn)-1) == 0)
    {
      if (last == NULL)
        start      = current->next;
      else
        last->next = current->Next;
      return true;
    };
    last    = current;
    current = current->next;
  }
  return false;
}
}
Avatar billede henrik10 Nybegynder
28. april 2002 - 02:39 #6
tror jeg lukker spoergsmaalet, da jeg har stillet det for kludret.
Tak for din hjaelp laffe - du lidt points for det :)
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