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

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

Τεχνική εξομάλυνσης ( smοothing ) Γραμμικής Παρεμβολής σε C


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


Μέλος από: 20 Μαη 2006
Μηνύματα: 6

View users profile
ΜήνυμαΣτις: 20 Μαη 2006 01:53    Θέμα: Τεχνική εξομάλυνσης ( smοothing ) Γραμμικής Παρεμβολής σε C Απάντηση με παράθεση  Mark this post and the followings unread

Καλησπέρα σας,

Είμαι ένα νέο μέλος του forum καθώς και νέος χρήστης της γλώσσας C.

Έχω κολλήσει σε ένα θεματάκι και θα σας παρακαλούσα αν έχετε την καλοσύνη και την διάθεση να με βοηθήσετε.

Τα ερωτήματα μου είναι τα εξής και έχουν να κάνουν με την τεχνική εξομάλυνσης Γραμμικής Παρεμβολής ( παρεμβολή ανάμεσα σε οποιεσδήποτε δύο διαδοχικές τιμές μιας τρίτης νέας τιμής που είναι αριθμητικά ενδιάμεση από τις τιμές εκατέρωθέν της ).

Πως μπορώ να ορίσω σε γλώσσα C τα εξής:

α) έναν τύπο δεδομένων ο οποίος να αναπαριστά τους κόμβους μιας απλά συνδεδεμένης λίστας πραγματικών αριθμών και

β) μια συνάρτηση η οποία να δέχεται ως παράμετρο μια τέτοια λίστα και να εισάγει ανάμεσα σε κάθε δύο διαδοχικούς κόμβους, ένα νέο κόμβο με τιμή τη μέση τιμή των δύο γειτονικών τους.


Σας ευχαριστώ εκ των προτέρων για την βοήθεια σας.
dva_dev
Script Master

Μέλος από: 16 Σεπ 2005
Μηνύματα: 256+

View users profile Visit posters website
blog deviantART facebook linkedin 
ΜήνυμαΣτις: 20 Μαη 2006 13:45    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Θα πρέπει να πάρεις κάποιο βιβλίο (ή ebook) για δομές δεδομένων, θα σε βοηθήσει πολύ περισσότερο από το να λύσεις τέτοια προβλήματα.
Επίσης θα σου είναι πολύ χρήσιμο να ξεσκονίσεις τα αγγλικά σου. Θα βρείς πολύ περισσότερα (και ίσως καλύτερα) βιβλία στα αγγλικά παρά στα ελληνικά. Για ξεκίνημα θα σου πρότεινα το "Προγραμματισμός και δομές δεδομένων στην C".

α) Μια απλή υλοποίηση σε C (αν έχεις δυνατότητα να χρησιμοποιήσεις C++ ακόμα καλύτερα).
κώδικας:
struct listNode {
    float nodeValue;
    struct listNode *nextNode;
}


b)
κώδικας:
/*Θα δημιουργήσει και θα εισάγει τον νέο κόμβο μετά τον κόμβο που περνάμε σαν παράμετρο*/
/*Αν κάτι πάει στραβά επιστρέφει 0, αλλιώς 1.*/
int insertNode(struct listNode *thisNode, float newValue)
{
   struct listNode *newNode;
   newNode = (struct listNode*)malloc(sizeof (struct listNode));
   if (newNode == NULL)
      return 0;   /*Δεν μπόρεσε να δεσμεύσει μνήμη για να δημιουργήσει τον νέο κόμβο.*/

   newNode->nodeValue = newValue;
   /*Κάνουμε την παρεμβολή του νέου κόμβου*/
   newNode->nextNode = thisNode->nextNode;
   thisNode->nextNode = newNode;

   return 1;
}

/*Κάνει ένα πέρασμα σε όλη τη λίστα (εισάγωντας και τους αντίστοιχους κόμβους)*/
/*Παίρνει σαν παράμετρο τον πρώτο κόμβο της λίστας.*/
/*Αν κάτι πάει στραβά επιστρέφει 0 (σταματώντας στο σημείο που στράβωσε η διαδικασία), αλλιώς 1.*/
int visitList(struct listNode *firstNode)
{
   struct listNode *thisNode;
   struct listNode *nextNode;
   float medianValue;
   int returnValue;
   
   returnValue = 1;   /*OK*/

   if (firstNode == NULL)
      return returnValue;   /*Δεν υπάρχουν στοιχεία στη λίστα (δεν μπορεί να γίνει τίποτα).*/

   thisNode = firstNode;
   nextNode = thisNode->nextNode;
   while (nextNode != NULL)   /*Για να προχωρήσουμε πρέπει να υπάρχει και επόμενο στοιχείο*/
   {
      medianValue = (thisNode->nodeValue + nextNode->nodeValue) / 2;
      if (insertNode(thisNode, medianValue) == 0)
      {
         /*Αν κάτι πήγε στραβά στην εισαγωγή, είναι προτιμότερο να σταματήσουμε.*/
         returnValue = 0;
         break;   /*Αν δεν θέλεις να σταματήσει σβήνεις αυτή τη γραμμή.*/
      }

      /*Πάμε στο επόμενο στοιχείο της λίστας*/
      thisNode = nextNode;
      nextNode = thisNode->nextNode;
   }

   return returnValue;
}



我希望它不看起來漢語對您.
John B


Μέλος από: 20 Μαη 2006
Μηνύματα: 6

View users profile
ΜήνυμαΣτις: 20 Μαη 2006 14:10    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Καλησπέρα,

θα ήθελα να σε ευχαριστήσω πολύ για την βοήθεια σου καθώς και για τον χρόνο τον οποίο διάθεσες για να με βοηθήσεις.

Θα προσπαθήσω να βρώ το βιβλίο που μου πρότεινες και να το μελετήσω.

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


Σχετικά θέματα
 Θέματα   Απ/σεις   Αποστολέας   Τελευταίο μήνυμα 
ενας κωδικας σε C που βγαζει μη αναμενομενο αποτεσμα 1 teresa92 13 Αυγ 2016 21:26
teresa92 Εμφάνιση τελευταίου μηνύματος
 
Τώρα είναι 19 Ιαν 2017 00:14 | 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