Προς το περιεχόμενο

Συνάρτηση σε C - Απορία


pioneer2

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα

έχω κάνει κάτι συνάρτησεις σε 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!

Δημοσ.

...

if(i<=M) // Ti σημαίνει τα αντίστροφα που διαβάστηκαν? αυτο πιστευώ..

*sum+=table //Ή κάνω κάτι με το i? κάτι σαν sum+=table[1./i] ??

...

 

Για κάθε στοιχείο θα ψάξεις να βρεις αν υπάρχει το αντίστροφό του.

Αν ένα ένα στοιχείο έχει τιμή χ, πρέπει σύμφωνα με την εκφώνηση να του προσθέσεις το 1./χ.

Οι δείκτες τους, δηλ. το i του χ και το i του 1./χ, είναι εντελώς άσχετοι μεταξύ τους.

Δημοσ.

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){
}

Δημοσ.

Ευχαριστώ για τις απαντήσεις... Επίσης τι διαφορά εχει το "θα ενημερώνει τη main()" απο το "θα επιστρέφει στη main() ? Αν γίνεται με ένα παράδειγμα να πει κάποιος..

Δημοσ.

Κανείς ρε παιδια? Αν μπορεί ας απαντήσει κάποιος που να έχει σχετική έμπειρια σε C.

Ποια η διαφορά του επιστρέφω στη main() με του ενημερωνω τη main()?

Ευχαριστώ.

Δημοσ.
Κανείς ρε παιδια? Αν μπορεί ας απαντήσει κάποιος που να έχει σχετική έμπειρια σε C.

Ποια η διαφορά του επιστρέφω στη main() με του ενημερωνω τη main()?

Ευχαριστώ.

 

Αυτό που ρωτάς είναι semantics: Ο όρος «ενημερώνω τη main» δεν είναι τυπική ορολογία που έχει να κάνει με τη γλώσσα C συγκεκριμένα, σχήμα λόγου είναι. Ένας τρόπος να «ενημερώσεις» τη main (και όχι ειδικά μόνο τη main, οποιαδήποτε άλλη καλούσα συνάρτηση) είναι να επιστρέφεις σε αυτήν τιμή από την καλούμενη συνάρτηση. Άλλος είναι περνώντας ως παράμετρο στην καλούμενη συνάρτηση δείκτη σε μία μεταβλητή που έχει δηλωθεί στη main και πειράζοντας την τιμή της εντός της συνάρτησης αυτής.

Δημοσ.

Σας ευχαριστώ πολύ με σώζετε!

Αλλο ένα ερώτημα:

 

για να αντιγράψω string απο πίνακα δομών κάνω

strcpy(pinakas1[K].name,pinakas2[M].name) ??

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...