spyros83 Δημοσ. 17 Μαΐου 2010 Δημοσ. 17 Μαΐου 2010 θέλω να δημιουργήσω μια λίστα 7 στοιχείων να βρω το ΕΛΑΧΙΣΤΟ στοιχείο τής λίστας με τον αλγόριθμο min να διαγράψω το στοιχείο από την λίστα και να το τυπώσω στην οθόνη! κώδικας: void main() { int i; int A[7]; int telos; //Δήλωση λίστας telos=7; for(i=0; i<=telos; i++) { //Αρχικοποίηση της λίστα cin>>A; } //Διαγραφή 7 στοιχείο A[6]=A[7]; telos--; //η λίστα περιέχει ένα στοιχείο λιγότερο cout<< ”H lista meta th diagrafh einai: “ ; //Τυπώνουμε τη νέα λίστα for(i=0; i<=telos; i++) { cout<<A; } } δεν γνωρίζω πως να διαγράψω το ελάχιστο στοιχείο του πίνακα με τον αλγόριθμο min....... αυτό που έγραψα λογικά διαγράφει το 7 στοιχείο τις λίστας...??θα πρέπει να μετακίνησω στα αριστερά όλα τα στοιχεία που βρίσκονται μετα από το ελάχιστο, έχω στο μυαλό μου αυτό αλλα δέν ξέρω αν είναι σωστό και πώς να το συντάξω στον αρχικό κώδικα.... κώδικας: int i, min; min = table[0]; for (i=0; i<7; i++) if (table<min) min = table; cout<<min; } ---------- Προσθήκη στις 20:51 ---------- Προηγούμενο μήνυμα στις 16:22 ---------- κανείς μια βοήθεια ...?
bnvdarklord Δημοσ. 17 Μαΐου 2010 Δημοσ. 17 Μαΐου 2010 Αν την λίστα την υλοποιήσεις με πίνακα, τότε για να διαγράψεις το n στοιχείο θα πρέπει κάθε στοιχείο μετα το n να το πας μια θέση πίσω.
bxenos Δημοσ. 17 Μαΐου 2010 Δημοσ. 17 Μαΐου 2010 Εδώ > A[6]=A[7]; διαγράφεις το 8ο στοιχείο της λίστας (το οποίο δεν υπάρχει) παρακάτω δουλεύεις πιό σωστά το loop > for (i=0; i<7; i++) εσυ κανεις ενα loop για διαβασμα, μετα κάνε ενα να βρεις το min (οπως περιπου εχεις) και μετα αφαιρεσε το όπως ειπε ο bnvdarklord
spyros83 Δημοσ. 17 Μαΐου 2010 Μέλος Δημοσ. 17 Μαΐου 2010 void main() { int i;min; int A[7]; int telos; //Δήλωση λίστας min = table[0]; for (i=0; i<7; i++) if (table<min) min = table; } telos=7; for(i=0; i<=telos; i++) { cin>>A; } //Διαγραφή 7 στοιχείο A[5]=A[6]; telos--; cout<< ”H lista meta th diagrafh einai: “ ; //Τυπώνουμε τη νέα λίστα for(i=0; i<=telos; i++) { cout<<A; } } ---------- Προσθήκη στις 21:41 ---------- Προηγούμενο μήνυμα στις 21:40 ---------- παιδιά έκανα μια προσπάθεια άλλα ως συνήθως θα καταλήξω σε αποτυχία δυστυχώς δεν μπορώ να το κάνω.........
bnvdarklord Δημοσ. 17 Μαΐου 2010 Δημοσ. 17 Μαΐου 2010 Καταρχάς διόρθωσε καποια συντακτικά λαθάκια που εχεις πχ int i;min; σε int i, min; και μία ξεκρέμαστη αγκύλη που έχεις... Για να διαγράψεις το min στοιχείο θα πρέπει να κρατήσεις σε μία μεταβλητή την θεση του (εστω position). Μετα με ενα for από το position μεχρι το telos μετακινέις καθε στοχείο μία θεση πίσω : A = A[i+1]
spyros83 Δημοσ. 19 Μαΐου 2010 Μέλος Δημοσ. 19 Μαΐου 2010 Καταρχάς διόρθωσε καποια συντακτικά λαθάκια που εχεις πχ int i;min; σε int i, min; και μία ξεκρέμαστη αγκύλη που έχεις... Για να διαγράψεις το min στοιχείο θα πρέπει να κρατήσεις σε μία μεταβλητή την θεση του (εστω position). Μετα με ενα for από το position μεχρι το telos μετακινέις καθε στοχείο μία θεση πίσω : A = A[i+1] void main() { int i,min; int A[7]; int telos; //Δήλωση λίστας min = table[0]; for (i=0; i<7; i++) if (table<min) min = table; } telos=7; for(i=0; i<=telos; i++) { cin>>A; } //Διαγραφή 7 στοιχείο A[5]=A[6]; telos--; cout<< ”H lista meta th diagrafh einai: “ ; //Τυπώνουμε τη νέα λίστα for(i=0; i<=telos; i++) { cout<<A; } φίλε μου διόρθωσα τα λάθοι όπως μου είπες και σε ευχαριστώ γιατην παρατηρητικότητα σου το θέμα είναι αυτό που λές δέν ξέρω να το κάνω ουτε να το προσθέσω στον κωδικά μου...θα ήθελες να μου δώσεις λίγο τα φώτα σου σε κώδικα?και κυρίως που μπαίνει στον κώδικά μου...??
spyros83 Δημοσ. 19 Μαΐου 2010 Μέλος Δημοσ. 19 Μαΐου 2010 Καταρχάς διόρθωσε καποια συντακτικά λαθάκια που εχεις πχ int i;min; σε int i, min; και μία ξεκρέμαστη αγκύλη που έχεις... Για να διαγράψεις το min στοιχείο θα πρέπει να κρατήσεις σε μία μεταβλητή την θεση του (εστω position). Μετα με ενα for από το position μεχρι το telos μετακινέις καθε στοχείο μία θεση πίσω : A = A[i+1] void main() { int i,min; int A[7]; int telos; //Δήλωση λίστας min = table[0]; for (i=0; i<7; i++) if (table<min) min = table; } telos=7; for(i=0; i<=telos; i++) { cin>>A; } //Διαγραφή 7 στοιχείο A[5]=A[6]; telos--; cout<< ”H lista meta th diagrafh einai: “ ; //Τυπώνουμε τη νέα λίστα for(i=0; i<=telos; i++) { cout<<A; } φίλε μου διόρθωσα τα λάθοι όπως μου είπες και σε ευχαριστώ γιατην παρατηρητικότητα σου το θέμα είναι αυτό που λές δέν ξέρω να το κάνω ουτε να το προσθέσω στον κωδικά μου...θα ήθελες να μου δώσεις λίγο τα φώτα σου σε κώδικα?και κυρίως που μπαίνει στον κώδικά μου...??
hackertom Δημοσ. 19 Μαΐου 2010 Δημοσ. 19 Μαΐου 2010 > { int A[7]={1,2,3,4,5,6,7} int i,min; min=A[0]; for (i=0;i<7;i++) if (A[i]<min) min=A[i] cout<<min; } φίλε ποστάρω ένα γρήγορο κώδικα που έκανα απλά δεν γνωρίζω πώς να διαγράψω το min στοιχείο...... ας απαντήσει κάποιος ποιο έμπειρος αν είναι σωστή η σκέψη μου.......
hackertom Δημοσ. 19 Μαΐου 2010 Δημοσ. 19 Μαΐου 2010 > { int A[7]={1,2,3,4,5,6,7} int i,min; min=A[0]; for (i=0;i<7;i++) if (A[i]<min) min=A[i] cout<<min; } φίλε ποστάρω ένα γρήγορο κώδικα που έκανα απλά δεν γνωρίζω πώς να διαγράψω το min στοιχείο...... ας απαντήσει κάποιος ποιο έμπειρος αν είναι σωστή η σκέψη μου.......
epersidi Δημοσ. 19 Μαΐου 2010 Δημοσ. 19 Μαΐου 2010 Για να δημιουργήσεις μια λίστα καταρχήν πρέπει να έχεις ορίσει τη δομή δεδομένων λίστα. Η λίστα δεν είναι ένας πίνακας όπως το δηλώνεις (αν και μπορεί να υλοποιηθεί και με πίνακα) αλλά μια δομή δεδομένων με κάποιες πράξεις επί της δομής όπως π.χ. insert για εισαγωγή στοιχείων, erase για εξαγωγή στοιχείων κτλ. Αν θες να χρησιμοποιήσεις μια λίστα πρέπει πρώτα να φτιάξεις τις αντίστοιχες συναρτήσεις. Οπότε, βήματα που πρέπει να ακολουθήσεις : α) Επιλογή της κατάλληλης δομής λίστας (απλά συνδεδεμένη, διπλά συνδεδεμένη κτλ) β) Επιλογή τρόπου υλοποίησης αυτής (στατικά με χρήση πίνακα συγκεκριμένου μεγέθους, με δυναμική εκχώρηση μνήμης κατά την εκτέλεση, με σκέτο πίνακα, με δομή struct, με κλάση κτλ). γ) Υλοποίηση της λίστας και των απαραίτητων μεθόδων δ) Δήλωση λίστας στην main() και εφαρμογή του αλγορίθμου min με τη χρήση των παραπάνω συναρτήσεων. Ανάλογα βέβαια με την εκφώνηση της άσκησης μπορεί να μη σου ζητάτε η υλοποίηση της λίστας αλλά η χρησιμοποίηση κάποιας ήδη υπάρχουσας π.χ. της STL List ( http://www.yolinux.com/TUTORIALS/LinuxTutorialC++STL.html#LIST ). Αυτά και ελπίζω να βοήθησα ...
hackertom Δημοσ. 19 Μαΐου 2010 Δημοσ. 19 Μαΐου 2010 > { int A[7]={1,2,3,4,5,6,7} int i,min; min=A[0]; for (i=0;i<7;i++) if (A[i]<min) min=A[i] cout<<min; } φίλε ποστάρω ένα γρήγορο κώδικα που έκανα απλά δεν γνωρίζω πώς να διαγράψω το min στοιχείο...... ας απαντήσει κάποιος ποιο έμπειρος αν είναι σωστή η σκέψη μου....... Εγώ πίστευω πως ο κώδικας μου βρίσκει το ελάχιστο στοιχείο. απλά γιανα το διαγράψεις πρέπει όλα τα στοιχεία που βρίσκονται μετά το ελάχιστο να πάνε μια θέση αριστερά. Δηλαδή το δύο να πάει στη θέση του ένα το τρία στη θέση του δύο κ.ο.κ. Έτσι ο καινούριος πίνακας θα ξεκινάει από το 2 και θα έχει μια κενή θέση στο τέλος. θεωρητικά πιστεύω πως έτσι θα δουλέψει απλά δεν ξέρω να σου το γράψω σε κώδικα....επαναλαμβάνω ας μας πει κάποιος ποιο έμπειρος πως θα γίνει αυτό.....
epersidi Δημοσ. 19 Μαΐου 2010 Δημοσ. 19 Μαΐου 2010 Η λύση με χρήση της std::list. Προσωπική μου άποψη πάντως είναι ότι πρέπει να ορίσεις εσύ τη δικιά σου δομή δεδομένων λίστα, ειδικά αν το μάθημα στο οποίο σας βάλανε την άσκηση είναι "δομές δεδομένων" και όχι προγραμματισμού ... > #include <iostream> #include <list> using namespace std; #define SIZE 7 int main() { int temp=0, min=0; list<int> List ; // List Initialization for(int i=0; i<SIZE; i++) { cout<<"Give item number "<<i+1<<endl; cin>>temp; List.push_back(temp); } // Eyresi elaxistoy list<int>::iterator it; list<int>::iterator minPosition = List.begin(); it=List.begin(); min= *it; for(it=List.begin(); it!=List.end(); ++it) { if(*it<min) { min=*it; minPosition=it; } } List.erase(minPosition); cout<<"To mikrotero stoixeio einai to: "<<min<<endl; return 0; }
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.