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

υπολογισμός σε c.. τι κάνω λάθος


karabouzouk...

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

  • Απαντ. 37
  • Δημ.
  • Τελ. απάντηση
Δημοσ.
Το NUMBERS ειναι!=0,#defined.

Στο δεύτερο θέλω την τιμή της total όχι της max.

 

έίναι άλλα προγράμματα που κάνουν άλλη λειτουργία, γιατι περίμενες να είναι ισοδύναμα;

 

Το πρώτο υπολογίζει μέγιστο.

Το δεύτερο απλά τυπώνει το τελευταίο νούμερο στον πίνακα που είναι μεγαλύτερο ή ίσο με το πρώτο.

Δημοσ.

Σ'ευχαριστώ για το χρόνο σου.

 

Απλά προσπαθώ να κάνω τη δουλειά του πρώτου, απλού προγράμματος με τους τελεστές ?:και κατ' αναλογία με την έκφραση a>b?a:b που βρίσκει μέγιστο δύο αριθμών ήθελα να το συμπτύξω για πολλούς.Αν έχεις κάποια συμπλήρωση θα μου ήταν χρήσιμη.

 

Ευχαριστώ και πάλι.

Δημοσ.

>
max=ar[0];
for(j=1;j<NUMBERS;j++)
    max = ar[j]>max ? ar[j] : max;

πάντως ο τρόπος αυτός έχει j συγκρίσεις και j αποδόσεις τιμής, είναι λιγότερο αποτελεσματικός απο ένα απλό if στην συγκεκριμένη περίπτωση.

 

Το total τι ήθελες να κάνει;

Δημοσ.

:) Βασικά, θέλω ν'αποφεύγω σε τέτοιες, απλές αριθμητικές συγκρίσεις τα if και να τα συμπτύσω όλα με τους τελεστές.Το total το έβαλα σαν ενδιάμεση μεταβλητή,αλλά έτσι όπως το παρέθεσες είναι οκ.

 

Σ'ευχαριστώ.

Δημοσ.

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

 

Συμπλήρωση:Μήπως είναι max = ar[j]>max ? (total++,ar[j]) : (total=1,max); :):)

Ευχαριστώ για τις απαντήσεις σου.Είσαι διαφωτιστικός.:)

Δημοσ.

Το (total=1,ar[j]) κομάτι εκτελείται όταν ar[j]>max, δηλαδή όταν βρήκαμε έναν καινουργιο μέγιστο. Αρα ο αριθμος των στοιχειων του πινακα που τον βρηκαμε μεχρι τωρα ειναι 1 (πρωτη φορα τον βρήκαμε). Τι κάνει η έκφραση (total=1,ar[j]); Βάζει 1 στο total και επιστρέφει ar[j] (το τελευταιο κομάτι της λίστας με κομα).

 

Το (total++,max) κομάτι εκτελείται όταν ar[j]<=max, δηλαδή όταν βρήκαμε άλλον έναν ΙΔΙΟ αριθμο με τον μέγιστο. Αρα ο αριθμος των στοιχειων του πινακα που τον βρηκαμε μεχρι τωρα ιδια με τον max είναι total++. Τι κάνει η έκφραση (total++,max); Αυξάνει το total κατα 1 και επιστρέφει max (το τελευταιο κομάτι της λίστας με κομα).

 

Τα coma separated lists είναι ορισμένα απο την πρώτη κιόλας έκδοση της C παρ'ολα αυτά κάποιοι (ακόμα και "εμπειροι") τα χρησιμοποιουν μόνο κατα λάθος χωρις να το καταλαβαίνουν

π.χ.

>
for(i=0,j=11;i<j;i++)
    ....

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

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

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