Προς το περιεχόμενο
  • Εγγραφή
  • 0

προβλημα σε c(ασκηση καθηγητ)


aikat90

Ερώτηση

Λοιπον θελει να διαβαστουν 4 αριθμοι ακεραιοι και μετα να γινει μια ταξινομιση χωρις πινακα και επαναληψη...εχω εγω προβλημα με τις else if και δεν μου βγαζει καποια αποτελεσματα..λογικα εχω κανει καποια μπαρουφα στην δομη if kai else if...

int i1, i2, i3, i4;
int main()
{
    printf("Please type 4 numbers\n");
    scanf("%d %d %d %d", &i1, &i2, &i3, &i4);
    if (i1 < i2){
if (i2 < i3)
if (i3 < i4){
printf("The correct order is: %d,%d,%d,%d\n", i1, i2, i3, i4);}
else if(i2 < i4)
printf("The correct order is: %d,%d,%d,%d\n", i1, i2, i4, i3);

}
else if (i1 < i3){
        if(i3<i2)
            if(i2<i4)

printf("The correct order is: %d,%d,%d,%d\n", i1, i3, i2, i4);
else if (i3 < i4)
    printf("The correct order is: %d,%d,%d,%d\n",i1, i3, i4, i2);

}
else if(i1<i4){
    if(i4<i2)
            if(i2<i3){
        printf("The correct order is: %d,%d,%d,%d\n", i1, i4, i2, i3);}

            else if(i4<i3)
                printf("The correct order is: %d,%d,%d,%d\n",i1, i4, i3, i2);



    }

if(i2<i1){
    if(i1<i3){
        if(i3<i4){
                printf("The correct order is: %d,%d,%d,%d\n", i2, i1, i3, i4);
        }

        else if(i1<i4){
            printf("The correct order is: %d,%d,%d,%d\n", i2, i1, i4,i3);}

    }

else if(i2<i3){
    if(i3<i1){
        if(i1<i4){
            printf("The correct order is: %d,%d,%d,%d\n", i2, i3, i1,i4);}
            else if(i3<i4){
                printf("The correct order is: %d,%d,%d,%d\n", i2, i3 , i4, i1);}

    }
}
else if(i2<i4){
if(i4<i3){
        if(i3<i1){
            printf("The correct order is: %d,%d,%d,%d\n", i2, i4, i3, i1);}
            else if(i4<i1){
                printf("The correct order is: %d,%d,%d,%d\n", i2, i4, i1, i3);

            }
}
}
}
 if(i3<i1){
    if(i1<i2){
        if(i2<i4){
            printf("The correct order is: %d,%d,%d,%d\n", i3, i1, i2, i4);}
        else if(i1<i4){
             printf("The correct order is: %d,%d,%d,%d\n",i3, i1, i4, i2);}
}




    else if(i3<i4){
    if(i4<i1){
        if(i1<i2){
             printf("The correct order is: %d,%d,%d,%d\n", i3, i4, i1, i2);}
             else if(i4<i2){


         printf("The correct order is: %d,%d,%d,%d\n", i3, i4, i2, i1);}
    }
    }
    else if(i3<i2){
        if(i2<i4){
            if(i4<i1){
                 printf("The correct order is: %d,%d,%d,%d\n", i3, i2, i4, i1);}
            else if(i2<i1){
                 printf("The correct order is: %d,%d,%d,%d\n", i3, i2, i1, i4);}

        }
    }
    }
    if(i4<i1){
    if(i1<i2){
        if(i2<i3){
             printf("The correct order is: %d,%d,%d,%d\n", i4, i1, i2, i3);}
        else if(i1<i3){
             printf("The correct order is: %d,%d,%d,%d\n", i4, i1, i3, i2);}
    }
    else if(i4<i2){
    if(i2<i3){
        if(i3<i1){
             printf("The correct order is: %d,%d,%d,%d\n", i4, i2, i3, i1);}
        else if(i2<i1){
             printf("The correct order is: %d,%d,%d,%d\n", i4, i2, i1, i3);}
    }
    }else if(i4<i3){
    if(i3<i2){
        if(i2<i1){
             printf("The correct order is: %d,%d,%d,%d\n", i4, i3, i2, i1);}
        else if(i3<i1){
             printf("The correct order is: %d,%d,%d,%d\n", i4, i3, i1, i2);}
    }

    }
    }



    return 0;


}

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • Απαντήσεις 54
  • Δημιουργία
  • Τελευταία απάντηση

Συχνή συμμετοχή στην ερώτηση

Συχνή συμμετοχή στην ερώτηση

Δημοφιλή Μηνύματα

Πίστεψε με έχω. Been there done that!    Εσύ έχεις ιδέα πως είναι να έχεις πτυχίο, μεταπτυχιακό, διαδακτορικό, μεταδιδακτορικό, δημοσιεύσεις σε καλά περιοδικά και συμμετοχές σε συνέδρια και μετά από

dafuq?!!

Δεν ξέρω τι είχε στο μυαλό του ο καθηγητής, ξέρω όμως πως η αυτογνωσία είναι καλό πράγμα. Ο Σωκράτης έχει ήδη δείξει το δρόμο και έκανε τη δύσκολη δουλειά για λογαριασμό μας.   http://en.wikipedia

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

  • 0

Με τον καθηγητη γέλασα. Διοτι βαζει πραγματα που δεν εχει διδαξει για να το παιξει μούρη και μάγκας στους μαθητες οτι και καλα δεν μπορουν να λυσουν τις ασκησεις του αρα ειναι φοβερος :P.Kανονικα θα επρεπε να κανει αυτο που λεει ο ημιθεος να τους δειξει δηλαδη απο που να ξεκινησουν. 

 

Αν τους έχει διδαξει ηδη την αναδρομη πάσο. Κατα τα αλλα μπορω να τον κρίνω άνετα.

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Δεν ξέρω γιατί επιλέγεις να βγάλεις το συμπέρασμα που βγάζεις. Εγώ πιστεύω πως ο καθηγητής θα ήθελε να κάνουν τουλάχιστον αυτό:

if      (a <= b && b <= c && c <= d) // a b c d
else if (a <= b && b <= d && d <= c) // a b d c
else if (a <= c && c <= b && b <= d) // a c b d
// κλπ κλπ

Μπορεί να είναι λίγο "manual" αλλά η ιδέα είναι απλή: υπάρχουν 4! = 24 μεταθέσεις 4 στοιχείων. Μία τουλάχιστον από αυτές είναι σωστά ταξινομημένη. Τις γράφεις όλες στο χαρτί και μετά απλά προσθέτεις τα <= και && ανάμεσα. Δε νομίζω πως υπάρχει περίπτωση να κάνεις λάθος σε κάτι, είναι τυφλοσούρτης όσο δεν πάει.

 

Edit: ακριβώς το ίδιο πράγμα δηλαδή που είπε ο albNik παραπάνω, τώρα το είδα.

 

Τώρα για το ότι κρίνεις κάποιον που όχι απλά δεν έχεις βρεθεί στη θέση του αλλά επιπλέον το μόνο που ξέρεις για το σκεπτικό του είναι περίληψη από δεύτερο χέρι... whatever.

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Καλά αυτό εννοείται. Μη σου πω στους 10 οι 11 θα έχουν 30 if. Εδώ έχω εμπειρία από πρώτο χέρι που μας ζήτησαν σε εξετάσεις να γράψουμε ένα πρόγραμμα το οποίο έκανε reduce σε επίλυση συστήματος 2x2 με ακέραιους αγνώστους και συντελεστές και έβλεπα τον κόσμο να το λύνει με for δοκιμάζοντας αν τα νούμερα επιβεβαιώνουν την επιθυμητή συνθήκη και τραβούσα ο,τι προεξείχε. That said, αυτό που έκανε το παπί δε νομίζω πως είναι και rocket science.

Για να πω την αλήθεια και εγώ το πρώτο πράγμα που σκέφτηκα για λύση χωρίς πίνακες ήταν το if(τάδε && δείνα κτλ) και όταν είδα το μήνυμα του παπί σκέφτηκα "ναι ρε γμτ. τι βλάκας είμαι και δεν το σκέφτηκα". Αν καθόμουν σοβαρά να λύσω την άσκηση το πιο πιθανό ήταν να το κάνω σαν τον παπί αλλά έτσι διαβάζοντας απλά το νήμα ούτε πήγε το μυαλό μου εκεί.

 

Αυτά μόνο με διάβασμα το οποίο προαπαιτεί να ξέρεις άλλα πράγματα, οπότε δεν είναι σίγουρα για 1ο έτος. Δεν ξέρω αν σε CS σχολές στην Ελλάδα στα λένε αυτά σε κάποια φάση αλλά και να στα λένε πιθανότατα πέρασε και δεν ακούμπησε.

Για να μη γενικολογήσω πάλι, να πω πώς στη δική μου με τπτ. Αλγόριθμοι, τρόπος σκέψης, κτλ ποτέ. Απλά αναφορά του συντακτικού της γλώσσας και λύστε την τάδε άσκηση.

 

void main()
     {
         int i;
 int k;
  }
Οι λύσεις του καθηγητή (για να είμαι δίκαιος ίσως όχι του ίδιου του καθηγητή αλλά κάποιου μεταπτυχιακού. το ίδιο κάνει όμως) είχανε indentation που σε κάθε γραμμή άλλαζε όπως φαίνεται παραπάνω, void main(), fflush(stdin), Ελληνικά iso literals και ό,τι turboc-isms μπορεί να φανταστεί κανείς.

 

Σε μια άσκηση, ο χρήστης έδινε ένα αριθμό 1<=i<=12 και το πρόγραμμα εμφάνιζε Ιανουάριος, κτλ. Η προτεινόμενη λύση είχε switch-case με 12 printf αντί να έχει ένα πίνακα και να τυπώνει κατευθείαν το months[i-1].

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Μήπως είναι ο ίδιος καθηγητής που είχε βάλει την άλλη άσκηση με τις 30 printf για να τους δείξει την χρησιμότητα των επαναλήξεων; :P

  • Like 1
Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Το θεμα ρε παιδια ειναι οτι με 30 ιφ κανταναει κουραστικο(συν οτι η επομενη ασηκηση ηταν σχεδον ιδια με 30 ιφ) κανταει κουραστικο...καποι απο μας ξερουμε επανληψεις αλλα κατανοω οτι εχει καποιο "σχεδιο"...αλλα το θεμα ειναι οτι μας πεταξαν σε ενα εργαστηριο ειπαν καποια ελαχιστα πραγματα στην θεωρια και στο εργαστηριο και εβαλαν μια διορια να τις παραδωσουμε...πραγμα απαραδεκτο..(εγω χωρις καποια προηγουμενη εμπειρια πιστευω θα ειχα μεγαλο προβλημα)

  • Like 1
Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Δεν θέλει πίνακα αλλά και 30 if. Μπορεί να λυθεί με 2 μεταβλητές νομίζω μια max και μια που να δέχεται τον αριθμό αν ο αριθμός που δίνει είναι μεγαλύτερος του max τότε βάτε την τιμή στο max. Αυτό επανέλαβέ το 4 φορές και σε κάθε loop διάβαζε από το stdin έναν νέο αριθμό. Kαι επειδή  σου ζητάει να μην τα βάλεις σε πίνακα βάλτα σε λίστα αν θέλει να βλέπει όλους τους αριθμούς που έχεις δώσει. Αλλιώς με ένα switch έλεγχε το i του loop και αναλόγως διάβαζε την κατάλληλη μεταβλητή.

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Δεν θέλει πίνακα αλλά και 30 if. Μπορεί να λυθεί με 2 μεταβλητές νομίζω μια max και μια που να δέχεται τον αριθμό αν ο αριθμός που δίνει είναι μεγαλύτερος του max τότε βάτε την τιμή στο max. Αυτό επανέλαβέ το 4 φορές και σε κάθε loop διάβαζε από το stdin έναν νέο αριθμό. Kαι επειδή  σου ζητάει να μην τα βάλεις σε πίνακα βάλτα σε λίστα αν θέλει να βλέπει όλους τους αριθμούς που έχεις δώσει. Αλλιώς με ένα switch έλεγχε το i του loop και αναλόγως διάβαζε την κατάλληλη μεταβλητή.

 

Δεν θελει ουτε loops. 

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Παρακληση προς τον νηματοθέτη. Μολις με το καλο τελειωσει η προθεσμια υποβολης και αρχισει η συζητηση για την ασκηση ρωτα τον καθηγητη σου τι λυση ήθελε να ερθεις να μας πεις και εδω. 

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Παρακληση προς τον νηματοθέτη. Μολις με το καλο τελειωσει η προθεσμια υποβολης και αρχισει η συζητηση για την ασκηση ρωτα τον καθηγητη σου τι λυση ήθελε να ερθεις να μας πεις και εδω. 

η ασκηση ηταν αποκλειστικα με με ιφ...και δεν ηθελε λλοπσ και το παραδειγμα τησ ασκησης ηταν το εξεις:

if (i1 < i2) {
if (i2 < i3) {
if (i3 < i4)
printf("The correct order is: %d,%d,%d,%d\
n",
i1, i2, i3, i4);
else if (i2 < i4)
printf("The correct order is: %d,%d,%d,%d\
n",
i1, i2, i4, i3);
else if ... 
  • Like 1
Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

@defacer έχεις την ικανοτητα να παραδεχθείς οτι ειχες λάθος? :D

 

οπως βλέπεις τελικα ο κυριος σεβαστός καθηγητης τους δεν ειχε κανενα σχέδιο εκμάθησης κάτι συγκεκριμενου πισω απο αυτη την άσκηση που τους έβαλε.Τουλαχιστον κατι τετοιο δεν φαινεται απο αυτα που λεει ο aikat90.

 

aikat90 σας έδωσε κάποιο υποδειγμα λυσης? ειναι αυτο που μας δινει πιο πάνω? Με τοσες if? Αν ηθελε απλα να διδαξει τις if-else  και else if θα μπορουσε να βάλει κατι καλύτερο κατα την γνώμη μου.

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

 

Δεν ξέρω γιατί επιλέγεις να βγάλεις το συμπέρασμα που βγάζεις. Εγώ πιστεύω πως ο καθηγητής θα ήθελε να κάνουν τουλάχιστον αυτό:

 

@defacer έχεις την ικανοτητα να παραδεχθείς οτι ειχες λάθος? :D

 

οπως βλέπεις τελικα ο κυριος σεβαστός καθηγητης τους δεν ειχε κανενα σχέδιο εκμάθησης κάτι συγκεκριμενου πισω απο αυτη την άσκηση που τους έβαλε.Τουλαχιστον κατι τετοιο δεν φαινεται απο αυτα που λεει ο aikat90.

 

Διαβάσαμε το ίδιο topic και οι 2, έτσι;

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Εγω ξερω οτι πηρες το μερος του καθηγητη. Κοιτα δεν θα χαθω σε διαφωνιες τωρα. Πηρες το μερος του καθηγητη ενω οπως μας ειπε το παιδι ΔΕΝ ηθελε να κανει κατι συγκεκριμενο. Εδω καλα καλα ΔΕΝ ηθελε ουτε αυτο που τουλαχιστον εσυ υπεθεσες οτι θέλει με τους  && δεν βλεπεις ποσες if εχει το παραδειγμα? ουτε καν θα ηθελε να δει αμα οι μαθητες σκεφτηκαν την λυση με το παραγοντικο και τις μεταθεσεις.

 

τελοςπαντων να ξερεις οτι εχω ζησει και εγω ορισμενους καθηγητες απο αυτους και μαλιστα αμα δεν το πιεζα ακομα θα ειχα τις πτυχιακες τους και θα ετρεχα. Δεν δινουν σημασια ορισμενοι ειναι στην κοσμαρα τους.Εδω εχω καθηγητη ο οποιος δεν απαντουσε στα email μας και ειναι ολη μερα στο φεησμπουκ και ανεβαζει μηνυματακια και φιλοσοφιες πλακα μου κανεις τωρα? για αυτο η νεα γενια βγαινει με περιεργες ιδεες επειδη οι καθηγητες δεν δινουν σημασια. Στην Αγγλια ο καθηγητης μεσα σε 12 ωρες σου εχει απαντησει σε email εδω ειναι εξοχότητες δεν καταδεχονται.

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Βασικά δεν κατάλαβες τι έκανα, οπότε να το εξηγήσω λίγο. 2 πράγματα, κανένα από τα οποία δεν ήταν να "πάρω το μέρος" κανενός.

 

Πρώτον, το σχόλιό σου περι "χαχα lol έλεος γιατί να κάνεις κάτι τέτοιο" με έκανε να μπω και να γράψω τα περι sorting networks. Για δύο λόγους: ένα, επειδή μπορεί κάποιοι που διαβάζουν το thread (πιθανότατα βέβαια όχι ο TS) να ενδιαφερθούν όπως και γω είχα ενδιαφερθεί να μάθω περισσότερα όταν πρωτοσυνάντησα το concept. Και δύο, επειδή κλασικό ignorant σχόλιο Starlight και ας μην επεκταθώ.

 

Δεύτερον, είπα πως ενδεχομένως/κατα την άποψή μου, ο καθηγητής μπορεί να έχει κάτι στο μυαλό του που οι σπουδαστές του δεν έχουν. Επιπλέον, εμείς εδώ που τα διαβάζουμε από περίληψη και φιλτραρισμένα ήδη από κάποιο σπουδαστή μάλλον δε μπορούμε να έχουμε αρκετά ξεκάθαρη εικόνα για να βγάζουμε αβίαστα συμπεράσματα. Απέφυγα δηλαδή να "βγάλω ετυμηγορία" και αντ' αυτού έκανα λίγο το δικηγόρο του διαβόλου. Έχοντας υπάρξει και γω τόσο σπουδαστής (με δασκάλους ενίοτε φανταστικούς και ενίοτε να 'χαμε να λέγαμε) όσο και διδάσκων (με μαθητές ενίοτε φανταστικούς και ενίοτε πιο αδιάφορος πεθαίνεις) καταλαβαίνω πως είναι πολύ εύκολο για κάποιον που δεν έχει δει και τις 2 όψεις του νομίσματος να παρεξηγήσει πράγματα. Επίσης καταλαβαίνω ότι είναι εύκολο να αρχίσει κανείς το κοπαδικό bashing των καθηγητών, ειδικά όταν είναι μικροετής και δεν του έχει δοθεί ακόμα η ευκαιρία να έχει τα aha moments "αααα γι΄αυτό μας έβαζε να το κάνουμε αυτό νωρίτερα...". Ή όταν του έχει δοθεί αλλά πέρασε και δεν ακούμπησε.

 

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

 

Αυτά.

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Kαλα έκανες και τα ειπες. Αλλα οταν ο καθηγητης μου δωσει λυση η οποια δεν δειχνει να θελει αυτα που λες ή δεν με κατευθυνει να σκεφτω να το υλοποιησω με κάποιον αλγοριθμο τοτε μπορω να έχω την αποψη μου οτι ηθελε να με παιδεψει χωρις λογο. Και εφοσον το εκανε μια φορα θα το κανει και δευτερη. 

 

Οι ετυμηγοριες και τα αβιαστα συμπερασματα ειναι μια χαρα οταν ειναι ευστοχα.Και θα πρεπει επιτελους να αρχισει η αξιολογηση και των καθηγητων.Εμενα προσωπικα ο καθηγητης που ειχα στην πτυχιακη δεν εδειχνε κανενα ενδιαφερον 

 

- Του εστελνα emails ΔΕΝ ΑΠΑΝΤΟΥΣΕ

- Αναγκαζομουν να πηγαινω απο κοντα στο ακυρο επειδη ηθελα να τελειωσω και να διακοπτω συναντησεις του για να κανονισουμε επιτελους μια συναντηση να μου πει τι θελει να τα βαλω να τελειωνουμε

- Στο τελος μετα απο πολλα ζορια με εστειλε σε εναν διδακτορικο (εχω ακομα τα emails). "Ειναι ετσι κυριε διδακτορικε??" , "Ναι περιπου ετσι ειναι." και τελος. Και στο τελος στην παρουσιαση μου την ειπε κιολας ο καθηγητης σε στυλ επρεπε να ησουν καλυτερα προετοιμασμενος το εκαναν σε μενα θα το κανουν και σε αλλους. Τους υποστηριζεις ενω δεν ειναι ΟΛΟΙ καλοι λιγοι ειναι αυτοι που ενδιαφερονται. Με συγχωρεις αλλα δεν ειναι καθολου ετσι τα πραγματα. Υπαρχει αρκετη αδιαφορια απο τους περισσοτερους μονο οταν ανεμισουν λεφτά (ενω παιρνουν ηδη αρκετα) σε βοηθανε να συνεχισεις πχ σε κανα μεταπτυχιακο τους.

 

Μετρα ποσα παιδια ερχονται εδω και ζητανε βοηθεια , θα το εκαναν αμα ο καθηγητης τους ειχε δωσει ολα οσα επρεπε για να λυσουν την ασκηση? αστο στην Ελλαδα ζουμε δυστυχως. Oποτε εγω ειμαι υπερ και των ετμηγοριων οταν ειναι ευστοχες και των συμπερασματων ωστε να γλιτωσεις νωρις και να μην πας να μπλεξεις με κανεναν περιεργο να κανεις πτυχιακη μαζι του. Αυτο ειναι το point μου οι καθηγητες πρεπει να αξιολογουνται και απο τους σπουδαστες δεν ειναι αλανθαστοι. 

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Εγγραφείτε για έναν νέο λογαριασμό

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

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

Με την περιήγησή σας στο insomnia.gr, αποδέχεστε τη χρήση cookies που ενισχύουν σημαντικά την εμπειρία χρήσης.