freestuff.gr αρχική σελίδα
 FAQFAQ    ΑναζήτησηΑναζήτηση   Λίστα ΜελώνΛίστα Μελών   Ομάδες ΜελώνΟμάδες Μελών   <b>Εγγραφή Μέλους</b>Εγγραφή Μέλους 
 ΠροφίλΠροφίλ   Επιλογές μέλους Επιλογές   Τα bookmarks μου Τα bookmarks μου   Προσωπικά μηνύματαΠροσωπικά μηνύματα 
  διαφήμιση  

Καλώς ήρθατε στο forum μας! Για να συμμετάσχετε στις συζητήσεις θα πρέπει να είσαστε μέλος. Γίνετε μέλος τώρα!.

Προβλημα με συναρτηση διαγραφής!


 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Moderators:  Super-Moderators, WebDev Moderators
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [3 Μηνύματα]       Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
ΑποστολέαςΜήνυμα
Filby


Μέλος από: 28 Μαρ 2010
Μηνύματα: 6

View users profile
ΜήνυμαΣτις: 09 Μαη 2010 19:18    Θέμα: Προβλημα με συναρτηση διαγραφής! Απάντηση με παράθεση  Mark this post and the followings unread

Καλησπερα! εχω αναλαβει ενα προγραμμα όπου σε συνδεδεμενη λιστα και structs βαζουμε στοιχεια μαθητων. Το προγραμμα ζηταει επίσης τη διαγραφη οπιου μέλους θελουμε με βαση το id του.παραθέτω τοκ κωδικα διαγραφης
κώδικας:
void diagrafi(classNodeType **list, int *k) {

    classNodeType *temp;
    classNodeType *prev;
    printf("Parakalw eisagete to id pros diagrafi : \n");
    scanf("%d",k);
    prev=NULL;
    temp=*list;
    temp->next=(*list)->next;
    while (temp!=NULL && temp->aStudent->idNumber==*k) {
       
        printf("Diagrafete o mathitis me id %d\n", temp->aStudent->idNumber);
        prev=temp;
        temp=temp->next;

}
     if (temp==NULL  ||  temp->aStudent->idNumber!=*k ) {
         printf ("%d was not found\n", *k);
           return;
    }
    if (prev==NULL)
    *list=(*list)->next;
    else
    prev->next=temp->next;
    free(temp);

    return;
}




τα structs ειναι της μορφης
κώδικας:
typedef struct{
    float firstAssignment;
    float secondAssignment;
    float midterm;
    float final;
    float finalMark;
} studentRecordType;


typedef struct{
    char * firstName;
    char * lastName;
    int idNumber;

    studentRecordType * marks;
} studentType;

struct classNodeStruct{
    studentType *aStudent;
    classNodeStruct *next;
};
typedef struct classNodeStruct classNodeType;



Η διαγραφή δεν δουλευει σωστά και διαγράφει μόνο για id=1. ευχαριστω εκ των προτέρων!
(P.S. Το pointer se pointer λειτουργει κανονικα πιστευω καθως το εχω χρησιμοποιεισει και σε αλλη συναρτηση και δουλευε!)
Erevis


Μέλος από: 12 Ιουν 2008
Μηνύματα: 56
Περιοχή: Χαλάνδρι
View users profile
ΜήνυμαΣτις: 10 Μαη 2010 15:49    Θέμα: Re: Προβλημα με συναρτηση διαγραφής! Απάντηση με παράθεση  Mark this post and the followings unread

κώδικας:
   
while (temp!=NULL && temp->aStudent->idNumber==*k) {       
        printf("Diagrafete o mathitis me id %d\n", temp->aStudent->idNumber);
        prev=temp;
        temp=temp->next;
}


το 2ο expression temp->aStudent->idNumber==*k επιστρέφει false με το που βρει κόμβο που έχει διαφορετικό ID από αυτόν που ψάχνεις. Εσύ θες να κάνεις το ακριβώς αντίθετο, να διατρέχεις τη λίστα όσο το ΙD είναι διαφορετικό κι όταν είναι ίδιο να σταματήσεις, ώστε να τον διαγράψεις και να συνδέσεις τους previous και next κόμβους.
Filby


Μέλος από: 28 Μαρ 2010
Μηνύματα: 6

View users profile
ΜήνυμαΣτις: 12 Μαη 2010 23:34    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

ευχαριστω πολύ για την απαντηση σ ! το προβημα λυθηκε
Εμφάνιση Μηνυμάτων:   
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [3 Μηνύματα] Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++


Σχετικά θέματα
 Θέματα   Απ/σεις   Αποστολέας   Τελευταίο μήνυμα 
δεικτης λιστας σε συναρτηση 1 poniroz 22 Μαη 2016 13:41
gvre Εμφάνιση τελευταίου μηνύματος
 
Τώρα είναι 04 Δεκ 2016 22:21 | All times are UTC + 2


Email This Page to Someone! add to Favorites

     Powered by p h p B B © 2001,2005 p h p B B Group
Για άμεση επικοινωνία με τον διαχειριστή του freestuff.gr στο email: freestuff.gr(παπάκι)gmail.com


Copyright © 1999-2013 Freestuff.gr All Rights Reserved  
Version Aegean, designed by N. Tsaganos