pioneer2 Δημοσ. 16 Σεπτεμβρίου 2010 Δημοσ. 16 Σεπτεμβρίου 2010 Καλησπέρα έχω κάνει κάτι συνάρτησεις σε C η οποία θέλω να μου πείτε αν είναι σωστές: Λέει λοιπόν: 1. Θα διαβάζει τιμές και θα τις καταχωρεί σε ένα float πίνακα μόνο αν η τιμή είναι μεγαλύτερη ή ιση από την αντίστοιχη θέση του πίνακα. Θα αθροίζει μεταξύ τους τα αντίστροφα των τιμών που διαβάστηκαν. Nα ενημερώνει τη main ως πρός το πλήθος που διαβάστηκε. (υποθέτω ο πίνακας είναι δηλωμένος στη main()). float *sinartisi(float *table) { int i; float sum=0; for (i=0;i<N;i++) if (i>=M) scanf("%f",&table); if(i<=M) // Ti σημαίνει τα αντίστροφα που διαβάστηκαν? αυτο πιστευώ.. *sum+=table //Ή κάνω κάτι με το i? κάτι σαν sum+=table[1./i] ?? } Eδώ καλώ τη συνάρτηση και ενημερώνω τη main.. float *ptrf; ptrf=sinartisi(table,&sum); 2.Εχω μια συνάρτηση με ορίσματα ένα πίνακα table και δύο ακεραίους τον pos και τον num. Η συνάρτηση ψάχνει στον πίνακα τον αριθμό pos και θα μετράει τις φορές εμφάνισής του. Αν ο αριθμός pos υπάρχει πάνω από num φορές η συνάρτηση θα επιστρέφει ένα δείκτη στη θέση όπου υπήρχε η num εμφάνισή του. Αλλιώς θα επιστρέφει ενα δείκτη στην αρχή του πίνακα. η ιδέα μου είναι: for(i=0;i<20;i++) { count++; pos=i; } num=count; if(i>num) return pin+i else return &pin[0]; } } Όποιος μπορεί ας απαντήσει plz!
V.I.Smirnov Δημοσ. 16 Σεπτεμβρίου 2010 Δημοσ. 16 Σεπτεμβρίου 2010 ... if(i<=M) // Ti σημαίνει τα αντίστροφα που διαβάστηκαν? αυτο πιστευώ.. *sum+=table //Ή κάνω κάτι με το i? κάτι σαν sum+=table[1./i] ?? ... Για κάθε στοιχείο θα ψάξεις να βρεις αν υπάρχει το αντίστροφό του. Αν ένα ένα στοιχείο έχει τιμή χ, πρέπει σύμφωνα με την εκφώνηση να του προσθέσεις το 1./χ. Οι δείκτες τους, δηλ. το i του χ και το i του 1./χ, είναι εντελώς άσχετοι μεταξύ τους.
virxen75 Δημοσ. 16 Σεπτεμβρίου 2010 Δημοσ. 16 Σεπτεμβρίου 2010 1) 1. Θα διαβάζει τιμές > for (int i=0;i<...;i++){ float timi=0; scanf("%f",&timi); getchar();//πάντα μετά από scanf } και θα τις καταχωρεί σε ένα float πίνακα μόνο αν η τιμή είναι μεγαλύτερη ή ιση από την αντίστοιχη θέση του πίνακα. > if (timi>=i) table[i]=timi; Θα αθροίζει μεταξύ τους τα αντίστροφα των τιμών που διαβάστηκαν. αν βάλω την τιμή 0? εννοεί όλες τις τιμές ή μόνο αυτές που είναι >= θέσης πίνακα? > float sum=0; int count=0; ....... sum+=1/timi; count++; .......... Nα ενημερώνει τη main ως πρός το πλήθος που διαβάστηκε. εννοεί όλες τις τιμές ή μόνο αυτές που είναι >= θέσης πίνακα? > ....... return count; } επομένως με βάση τα παραπάνω η συνάρτηση πρέπει να είναι της μορφής >int sinartisi(float *table,int mege8os){ }
pioneer2 Δημοσ. 16 Σεπτεμβρίου 2010 Μέλος Δημοσ. 16 Σεπτεμβρίου 2010 Ευχαριστώ για τις απαντήσεις... Επίσης τι διαφορά εχει το "θα ενημερώνει τη main()" απο το "θα επιστρέφει στη main() ? Αν γίνεται με ένα παράδειγμα να πει κάποιος..
pioneer2 Δημοσ. 18 Σεπτεμβρίου 2010 Μέλος Δημοσ. 18 Σεπτεμβρίου 2010 Κανείς ρε παιδια? Αν μπορεί ας απαντήσει κάποιος που να έχει σχετική έμπειρια σε C. Ποια η διαφορά του επιστρέφω στη main() με του ενημερωνω τη main()? Ευχαριστώ.
Evgenios1 Δημοσ. 18 Σεπτεμβρίου 2010 Δημοσ. 18 Σεπτεμβρίου 2010 Ισος το "ενημερωνει" θα εννοει το by ref εφοσον δεν υπαρχει επιστροφη.
parsifal Δημοσ. 18 Σεπτεμβρίου 2010 Δημοσ. 18 Σεπτεμβρίου 2010 Κανείς ρε παιδια? Αν μπορεί ας απαντήσει κάποιος που να έχει σχετική έμπειρια σε C.Ποια η διαφορά του επιστρέφω στη main() με του ενημερωνω τη main()? Ευχαριστώ. Αυτό που ρωτάς είναι semantics: Ο όρος «ενημερώνω τη main» δεν είναι τυπική ορολογία που έχει να κάνει με τη γλώσσα C συγκεκριμένα, σχήμα λόγου είναι. Ένας τρόπος να «ενημερώσεις» τη main (και όχι ειδικά μόνο τη main, οποιαδήποτε άλλη καλούσα συνάρτηση) είναι να επιστρέφεις σε αυτήν τιμή από την καλούμενη συνάρτηση. Άλλος είναι περνώντας ως παράμετρο στην καλούμενη συνάρτηση δείκτη σε μία μεταβλητή που έχει δηλωθεί στη main και πειράζοντας την τιμή της εντός της συνάρτησης αυτής.
pioneer2 Δημοσ. 18 Σεπτεμβρίου 2010 Μέλος Δημοσ. 18 Σεπτεμβρίου 2010 Σας ευχαριστώ πολύ με σώζετε! Αλλο ένα ερώτημα: για να αντιγράψω string απο πίνακα δομών κάνω strcpy(pinakas1[K].name,pinakas2[M].name) ??
GrandGamer Δημοσ. 19 Σεπτεμβρίου 2010 Δημοσ. 19 Σεπτεμβρίου 2010 btw... googlare c string χαχαχαχα, αμέσως στο πονηρό εσύ
pioneer2 Δημοσ. 19 Σεπτεμβρίου 2010 Μέλος Δημοσ. 19 Σεπτεμβρίου 2010 χαχα όντως δε βγάζει συμβολοσειρές αλλα..the next evolution in underwear! Μάθαμε εκτός από g string υπάρχει και..c string
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.