Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών
Posted: Sun Feb 05, 2017 2:43 pm
εχει νοημα να κοιταξουμε παλια θεματα? επειδη ο καθηγητης ειναι καινουργιος..η οι ασκησεις δνε μπορουν να διαφοροποιηθουν επειδη ειναι συγκεκριμενες?
Online κοινότητα των φοιτητών Πληροφορικής του Ο.Π.Α.
https://venus.cs.aueb.gr/
Στο θέμα 2 τι γράψατε;SteliosA wrote:ΘΕΜΑ 2:
Να φτιάξετε μια μέθοδο που να παίρνει ως είσοδο ένα array με ακέραιους αριθμούς και να βρίσκει πόσοι διαφορετικοί αριθμοί υπάρχουν. Για παράδειγμα ο πίνακας {2,3,5,3,7,2} θα επιστρέφει 4
ΘΕΜΑ 3:
Να φτιάξετε μια μέθοδο που να παίρνει ως είσοδο ένα array με ακέραιους αριθμούς και επιστρέφει τον δεύτερο πιο μικρό αριθμό. Μπορείτε να χρησιμοποιήσετε μόνο μια επανάληψη( if η while) και ΔΕΝ μπορείτε να ταξινομίσετε τον πίνακα. Για παράδειγμα ένας πίνακας {-9,1,1,0} θα επιστρέφει 0. Ένας πίνακας {-6,5,3,2,-6,7} θα επιστρέφει -6
Μια λύση είναι αυτή:fox0077 wrote:Στο θέμα 2 τι γράψατε;
Code: Select all
import java.util.ArrayList;
// ...
// 'p': Πίνακας αριθμών != NULL.
[public/private/-] [static] int countDistinctNumbers([final] int[ ] p)
{
// Το παρακάτω block μπορεί να παραλειφθεί εάν η άσκηση
// αναφέρει ότι ο πίνακας θεωρείται ότι δεν είναι ποτέ NULL.
// Εναλλακτικά:
// if (p == null) return -1;
if (p == null)
{
throw new IllegalArgumentException("\'p\' parameter is NULL.");
}
// Βοηθητική λίστα που κρατά μόνο τους αριθμούς που συναντώνται
// για πρώτη φορά.
[final] ArrayList<Integer> list = new ArrayList<Integer>();
// Περνάμε πάνω από όλο τον πίνακα.
// (δεν εκτελείται αν 'p.length == 0')
for (int i = 0; i < p.length; i++)
{
// Τρέχων αριθμός.
[final] int number = p[i];
// Έλεγχος αν ο αριθμός είναι διπλότυπος.
if (!list.contains(number))
{
// Δεν έχουμε ξαναδεί τον αριθμό πιο πριν.
list.add(number);
}
}
// Επιστροφή συνολικού πλήθους μοναδικών αριθμών.
return list.size(); // '0' αν πίνακας αριθμών κενός.
}
// ...
Προφανώς και τα σχόλια ΔΕΝ είναι απαραίτητα, αρκεί ο διορθωτής να καταλάβει πως έχεις προσεγγίσει το πρόβλημα.Μ123 wrote:επρεπε να γραψουμε και σχολια?? εγω μονο το προγραμμα εγραψα..εκανα ταξινομιση και μετα εβαλα εναν μετρητη για καθε φοραπου εβλεπε διαφορετικο στοιχειο..
νομιζω οτι σωστα την ελυσα..με τοση σιγουρια η πολυ καλα τα εχω παει η πολυ χαλια θα δειξειGeorgilakis Antonios wrote:Προφανώς και τα σχόλια ΔΕΝ είναι απαραίτητα, αρκεί ο διορθωτής να καταλάβει πως έχεις προσεγγίσει το πρόβλημα.Μ123 wrote:επρεπε να γραψουμε και σχολια?? εγω μονο το προγραμμα εγραψα..εκανα ταξινομιση και μετα εβαλα εναν μετρητη για καθε φοραπου εβλεπε διαφορετικο στοιχειο..
Και επίσης προφανώς ΔΕΝ υπάρχει μια λύση.
Οπότε γιατί αγχώνεσαι ?
EDIT: Αν η λύση σου δεν προσεγγίζει το πρόβλημα, τότε μόνο ίσως πρέπει να αγχωθείς... λιγάκι.
η αληθεια ειναι οτι μου φαινοτναι ασημαντα προς το παρων.αλλα μαλλον νοσο δυσκολευουν τα προγραμματα θα μου φανουν χρησιμοτεραpgetsos wrote:Παντως να συμπληρωσω πως οποτε μπορεις, γεμιζε το με σχολια. Ψαξε και πως πρεπει να γραφονται τα Javadoc σχολια, ευκολο ειναι
1) Ειναι μια ΕΞΑΙΡΕΤΙΚΑ σημαντικη συνηθεια που θα πρεπει να σου μεινει, οσο νωριτερα, τοσο το καλυτερα
2) Μελλοντικα σιγουρα θα χανετε βαθμους αν δε βαζετε σχολια, ειδικα 3-4ο ετος. Και αμα μαθεις χωρις, θα τα ξεχνας
Κουράγιο, τα πάντα είναι δύσκολα και challenging σε αυτή την ζωή...Mickey wrote:Προσωπικα το θεωρω αδικο που ηταν μονο 3 ασκησεις και μαλιστα ολες με arrays...
Code: Select all
// ...
// 'p': Πίνακας αριθμών != NULL.
[public/private/-] [static] int findSecondMinValue([final] int[ ] p)
{
// Το παρακάτω block μπορεί να παραλειφθεί εάν η άσκηση
// αναφέρει ότι ο πίνακας θεωρείται ότι δεν είναι ποτέ NULL.
if (p == null)
{
throw new IllegalArgumentException("\'p\' parameter is NULL.");
}
// Έλεγχος αν πίνακας 'p' κενός.
if (p.length == 0)
{
// Επιστροφή της πιο αρνητικής τιμής, μιας και δεν υπάρχουν
// στοιχεία στον πίνακα.
return Integer.MIN_VALUE;
}
// Ξεκινάμε με 'Integer.MAX_VALUE' γιατί δεν γνωρίζουμε πόσο
// μικρή είναι η ζητούμενη τιμή.
int x = Integer.MAX_VALUE; // Θα κρατά τον πρώτο μικρότερο
// αριθμό.
int y = Integer.MAX_VALUE; // Θα κρατά τον δεύτερο μικρότερο
// αριθμό.
// Περνάμε πάνω από όλο τον πίνακα.
// ('p.length != 0', διότι έχουμε κάνει έλεγχο πιο πριν)
for (int i = 0; i < p.length; i++)
{
// Τρέχων αριθμός.
[final] int number = p[i];
// Έλεγχος αριθμού.
if (number < x)
{
// 1η περίπτωση: αριθμός πιο μικρός από τον πρώτο μικρότερο
// αριθμό που έχει βρεθεί μέχρι τώρα.
// Θεωρούμε τον μικρότερο έως τώρα αριθμό ως τον δεύτερο
// μικρότερο αριθμό.
y = x;
// Ενημερώνουμε τον πρώτο μικρότερο αριθμό που έχουμε βρει
// με την νέα τιμή.
x = number;
}
else if (number < y)
{
// 2η περίπτωση: αριθμός πιο μικρός από τον δεύτερο μικρότερο
// αριθμό που έχει βρεθεί μέχρι τώρα, αλλά μεγαλύτερος από την
// τιμή του πρώτου μικρότερου αριθμού.
// Απλώς ενημερώνουμε τον δεύτερο μικρότερο αριθμό με την νέα
// τιμή.
y = number;
}
}
// Επιστροφή του δεύτερου μικρότερου αριθμού.
return y;
}
// ...
Μάλλον όχι, χωρίς να είμαι και πολύ σίγουρος.soreyil wrote:Καποιος που εγραψε 2/6 στα γραπτα σημαινει οτι το περασε;
Τα θεματα 3 ηταν. Ο βαθμος στα 6 ειναι 2. Ελεγε οτι ο ελαχιστος προβιβασιμος ειναι 2...Georgilakis Antonios wrote:Μάλλον όχι, χωρίς να είμαι και πολύ σίγουρος.soreyil wrote:Καποιος που εγραψε 2/6 στα γραπτα σημαινει οτι το περασε;
EDIT: Αν εννοείς 2/6 θέματα, το πράγμα αλλάζει.
Ε ωραία, αφού ειπώθηκε ρητώς, υποθέτω ότι ισχύει.soreyil wrote:Τα θεματα 3 ηταν. Ο βαθμος στα 6 ειναι 2. Ελεγε οτι ο ελαχιστος προβιβασιμος ειναι 2...
Ναι αλλα, στο τελικο γραφει 4. 5 δεν επρεπε;Georgilakis Antonios wrote:Ε ωραία, αφού ειπώθηκε ρητώς, υποθέτω ότι ισχύει.soreyil wrote:Τα θεματα 3 ηταν. Ο βαθμος στα 6 ειναι 2. Ελεγε οτι ο ελαχιστος προβιβασιμος ειναι 2...
Που σημαίνει ότι με 2/6 κάποιος μπορεί να περάσει το μάθημα. (Δηλαδή πέρασε)
Όχι απαραίτητα. Επειδή το "5" είναι η καθιερωμένη βάση δεν σημαίνει ότι όλα τα μαθήματα το ακολουθούν κατά κανόνα.soreyil wrote:Ναι αλλα, στο τελικο γραφει 4. 5 δεν επρεπε;
ΟΟΟΟΟοοοο ωπα ωπα, θες να μου πεις οτι με 4 τελικο γι αυτο το μαθημα, το ΠΕΡΑΣΑ;Georgilakis Antonios wrote:Όχι απαραίτητα. Επειδή το "5" είναι η καθιερωμένη βάση δεν σημαίνει ότι όλα τα μαθήματα το ακολουθούν κατά κανόνα.soreyil wrote:Ναι αλλα, στο τελικο γραφει 4. 5 δεν επρεπε;
Το ακολουθούν όμως στην πλειοψηφία.
Μην βιάζεσαι ακόμα, δες από πάνω το edit.soreyil wrote:ΟΟΟΟΟοοοο ωπα ωπα, θες να μου πεις οτι με 4 τελικο γι αυτο το μαθημα, το ΠΕΡΑΣΑ;
Sent via personal messagepgetsos wrote:2/6 είναι 3.3/10. Η εργασία σου Πόσο έπιανε;