ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσμία: Τετάρτη 23/11/2016, 21:00

Σχετικά έγγραφα
ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσμία: Τετάρτη 9/11/2016, 21:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσµία: Τρίτη 4/11/2014, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Πέµπτη 17/12/2015, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσµία: Τρίτη 10/11/2015, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/10, 23:59

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 18/12/12, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσμία: 17/1/14, 22:00

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 22/12/10, 23:59

Προγραµµατισµός Ι Εργαστήριο 6ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 6 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσµία: 3/12/2018, 23:59

Προγραµµατισµός Ι Εργαστήριο 6ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 6 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 25/11/12, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 5/12/10, 23:59

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 13/1/13, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσµία: 25/11/13, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 27/11/11, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Τετάρτη 7/12/2016, 21:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 22/12/2016, 21:00

Προγραμματισμός Ι Εργαστήριο 9ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 9 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσµία: 6/11/11, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ Προθεσµία: 10/12/2014, 22:00

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ Προθεσµία: 9/1/2015, 22:00

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσµία: 10/11/12, 22:00

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 2 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

Προγραµµατισµός Ι Εργαστήριο 9ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 9 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραμματισμός Ι Εργαστήριο 5ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΕΡΓΑΣΙΑ ΕΞΑΜΗΝΟΥ - ΜΕΡΟΣ Γ'

ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Προγραμματισμός Ι Εργαστήριο 8ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 8 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραμματισμός Ι Εργαστήριο 8ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 8 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

Προγραµµατισµός Ι Εργαστήριο 3ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

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

Προγραμματιστικές Ασκήσεις, Φυλλάδιο 1

abistarakis PASS - Σωστή κατασκευή tgz και ονοµασία αρχείων

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

Εισαγωγή στον Προγραμματισμό

Μεθόδων Επίλυσης Προβλημάτων

ΕΡΓΑΣΤΗΡΙΟ 4: Μεταβλητές, Δομές Ελέγχου και Επανάληψης

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Ενδεικτικές λύσεις και στατιστικά

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

Η άσκηση μπορεί να γίνει με συνεργασία το πολύ δυο φοιτητών, οι οποίοι θα λάβουν τον ίδιο βαθμό στην εργασία.

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1

Μεταβλητές. Για περισσότερες λεπτομέρειες πάνω στις μεταβλητές θα ήταν χρήσιμο να διαβάσεις το

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραµµατισµός Ι Εργαστήριο 4ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Εξοικ Εξ ε οικ ίωση ε με το το πρόγ ραμμα πρόγ DEV C++ Επικοι Επικ νωνία οι Χρήσ Χρήστη τη Υπολ Υπο ογισ λ τή

H ΓΛΩΣΣΑ C. Μάθηµα 7: Πίνακες. ηµήτρης Ψούνης

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι. Συναρτήσεις. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: Τετάρτη 25/11/2015, 22:00

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Δομή Επανάληψης. 3. Επανέλαβε την κίνηση του αυτοκινήτου ώσπου αυτό να ακουμπήσει στο κόκκινο χρώμα.

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Διαδικασιακός Προγραμματισμός

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Προγραμματισμός Ι (ΗΥ120)

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων

Διαδικασιακός Προγραμματισμός

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

Προγραμματισμός Ι (ΗΥ120)

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

Προγραμματισμός Ι (HY120)

Κατανεμημένος και Παράλληλος Προγραμματισμός. Εισαγωγή στο MPI. Εγκατάσταση MPICH σε ένα ΗΥ 10/3/2017

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

Εργαστήριο 2: Πίνακες

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ

Μεθόδων Επίλυσης Προβλημάτων

ΑΣΚΗΣΗ WORD. 3. Στην ΚΕΦΑΛΙΔΑ της σελίδας εισάγετε το παρακάτω κείμενο: 5. Στην αρχή της σελίδας γράψτε το παρακάτω κείμενο:

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Διαδικασιακός Προγραμματισμός

Κατανεμημένα Συστήματα

Transcript:

ΣΕΤ ΑΣΚΗΣΕΩΝ 2 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2016-2017 Προθεσμία: Τετάρτη 23/11/2016, 21:00 Διαβάστε πριν ξεκινήσετε Διαβάστε την εκφώνηση προσεκτικά και σχεδιάστε το πρόγραμμά σας στο χαρτί. Για κάθε στάδιο, αποφασίστε τι μεταβλητές θα χρειαστείτε, τι ονόματα θα τους δώσετε, αν χρειάζονται σταθερές κι αν ναι για ποιες ποσότητες, τι δομές ελέγχου θα χρησιμοποιήσετε για κάθε λειτουργία και πώς θα κάνετε τους υπολογισμούς που χρειάζονται. Μη διστάζετε να ζητήσετε βοήθεια! Χρησιμοποιήστε κατά προτίμηση την εφαρμογή συζητήσεων στο e-class και μόνο αν είναι απαραίτητο email (π.χ. αν πραγματικά επιβάλλεται να στείλετε κάποιο κομμάτι κώδικα μαζί με το μήνυμά σας). Η εργασία αυτή μπορεί να γίνει σε ομάδες μέχρι και 2 ατόμων. Δε χρειάζεται να είστε ομάδα με το ίδιο άτομο που είστε στο εργαστήριο ή το ίδιο άτομο με το οποίο κάνατε την 1η εργασία. Μπορείτε να συζητάτε τις ασκήσεις με συμφοιτητές σας αλλά δεν επιτρέπεται η ανταλλαγή κώδικα με οποιονδήποτε τρόπο. Ξεκινήστε νωρίς! Ο προγραμματισμός είναι πάντα ΠΟΛΥ πιο χρονοβόρος από ότι περιμένετε. Εκπρόθεσμες ασκήσεις δε γίνονται δεκτές. Οι ασκήσεις σας θα βαθμολογηθούν στα παρακάτω (χωρίς ιδιαίτερη σειρά): Ορθότητα Γενική μορφοποίηση προγράμματος (στοίχιση, ονόματα μεταβλητών και σταθερών, κτλ.) Σχεδιασμός προγράμματος και αποτελεσματική χρήση κατάλληλων δομών, μεταβλητών, σταθερών κτλ. Συμμόρφωση με τις προδιαγραφές Αποτελεσματικά σχόλια, σύμφωνα με τους κανόνες σχολιασμού του σχετικού φυλλαδίου.

Άσκηση : Ναρκαλιευτής Το πρόγραμμά σας πρέπει να αποθηκευτεί σε αρχείο με όνομα hw2.c Θα γράψετε ένα πρόγραμμα το οποίο θα υλοποιεί το παιχνίδι του ναρκαλιευτή. Το παιχνίδι θα τρέχει σε τερματικό (κονσόλα) ως εξής: Βήμα 1ο: Αρχικά το πρόγραμμα εμφανίζει το παρακάτω μενού και ζητάει από τον χρήστη να επιλέξει το επίπεδο δυσκολίας του παιχνιδιού. 1. EASY (E,e) 2. MEDIUM (M,m) 3. EXPERT (X,x) Choose difficulty level: (εκτυπώνει ένα κενό χαρακτήρα αμέσως μετά το " Choose difficulty level:" ) Ο χρήστης επιλέγει το επίπεδο δυσκολίας καταχωρώντας τα γράμματα E ή e για το επίπεδο EASY, M ή m για το επίπεδο MEDIUM και Χ ή x για το επίπεδο EXPERT. Τα επίπεδα διαφοροποιούνται ως προς το μέγεθος του καμβά του παιχνιδιού ως εξής: EASY : μέγεθος καμβά 6x6 MEDIUM : μέγεθος καμβά 12x12 EXPERT : μέγεθος καμβά 24x24 Σε όλα τα επίπεδα το ποσοστό των ναρκών σε σχέση με το σύνολο των θέσεων του καμβά δεν πρέπει να υπερβαίνει το 20%. Κάθε θέση (τετραγωνάκι) του καμβά μπορεί να περιέχει τα εξής: Νάρκη, συμβολίζεται με τον χαρακτήρα '*'. Έναν αριθμό με τιμές 0-8 που δηλώνει πόσες νάρκες περιβάλλουν τη συγκεκριμένη θέση. Το παιχνίδι εκκινεί. Εκτυπώνει τον καμβά του παιχνιδιού ακολουθούμενο από 2 χαρακτήρες αλλαγής γραμμής. Παρακάτω δίνεται το παράδειγμα του καμβά κατά την εκκίνηση για το επίπεδο EASY (ανάλογα και για τα υπόλοιπα επίπεδα) 1 2 3 4 5 6 1 - - - - - - 2 - - - - - - 3 - - - - - - 4 - - - - - - 5 - - - - - - 6 - - - - - - Βήμα 3ο: Ο χρήστης καλείται να επιλέξει μία θέση του καμβά την οποία επιθυμεί να αποκαλύψει. Αρχικά επιλέγει την γραμμή και στη συνέχεια επιλέγει τη στήλη, όπως παρακάτω (με μαύρο εμφανίζονται οι εκτυπώσεις του προγράμματος σας και με μπλε η είσοδος του χρήστη): Row> 4 Col> 2

Η τιμή της επιλεγμένης γραμμής ( Row ) πρέπει να είναι θετική και μικρότερη ή ίση του αριθμού των γραμμών (στο συγκεκριμένη παράδειγμα Row>=1 και Row<=6 ). Αντίστοιχα, η τιμή της επιλεγμένης στήλης ( Col ) πρέπει να είναι θετική και μικρότερη ή ίση του αριθμού των στηλών. Εάν μία από τις δύο τιμές δεν είναι αποδεκτή, το πρόγραμμα ζητάει από τον χρήστη να ξαναδώσει αυτή την τιμή εκτυπώνοντας το μήνυμα "Invalid Ζ. Try again! ακολουθούμενο από χαρακτήρα αλλαγής γραμμής, όπου Ζ είναι Row ή Column εάν ο χρήστης έχει δώσει μη αποδεκτή τιμή για τη γραμμή ή τη στήλη αντίστοιχα Σημείωση: Εάν ο χρήστης εισάγει την τιμή 0 για την γραμμή Row τότε το πρόγραμμα διακόπτεται, εκτυπώνεται το μήνυμα "You selected to interrupt the current puzzle!" ακολουθούμενο από χαρακτήρα αλλαγής γραμμής και το πρόγραμμα μεταβαίνει στο βήμα 5 (δες παρακάτω). Κάθε στοιχείο του καμβά που αποκαλύπτεται και δεν περιέχει νάρκη συνεχίζει να εμφανίζεται όσο εξελίσσεται το τρέχον παιχνίδι. Βήμα 4ο: Ελέγχουμε εάν συντρέχουν λόγοι τερματισμού του παιχνιδιού. Το παιχνίδι τελειώνει στις παρακάτω περιπτώσεις: 1. επιτυχώς όταν ο χρήστης αποκαλύψει όλες τις θέσεις στις οποίες δεν υπάρχει νάρκη. Σε αυτή την περίπτωση εμφανίζεται το μήνυμα Congratulations you have solved the puzzle! ακολουθούμενο από χαρακτήρα αλλαγής γραμμής. 2. ανεπιτυχώς εάν ο χρήστης επιλέξει ένα τετραγωνάκι στο οποίο υπάρχει μία νάρκη. Σε αυτή την περίπτωση εμφανίζεται το μήνυμα Oops! You have selected a mine. ακολουθούμενο από χαρακτήρα αλλαγής γραμμής. Και στις δύο παραπάνω περιπτώσεις εκτυπώνεται η λύση κάτω από το μήνυμα (όπως στο παρακάτω παράδειγμα) ακολουθούμενη από δύο χαρακτήρες αλλαγής γραμμής και προχωρά στο βήμα 5. Οι θέσεις με αστεράκι συμβολίζουν τις θέσεις των ναρκών. 1 2 3 4 5 6 1 * 2 2 * 2 1 2 2 3 * 4 4 * 3 * 2 2 * * 2 4 2 2 1 2 3 2 5 * 1 0 0 1 * 6 1 1 0 0 1 1 Εάν δεν συντρέχουν λόγοι τερματισμού του παιχνιδιού τότε το πρόγραμμα εκτυπώνει τον καμβά (όπως παρακάτω) ακολουθούμενο από 2 χαρακτήρες αλλαγής γραμμής και επιστρέφει στο βήμα 3. 1 2 3 4 5 6 1 - - - - - - 2 - - - - - - 3 - - - - - - 4-2 - - - - 5 - - - - - - 6 - - - - - -

Βήμα 5ο: Εφόσον το παιχνίδι τελειώσει το πρόγραμμα εκτυπώνει το μήνυμα "Play again? (y/n) ". O χρήστης καλείται να εισάγει Υ ή y για να ξαναπαίξει ή N ή n για να τερματίσει το πρόγραμμα. Σε κάθε εισαγωγή διαφορετικού χαρακτήρα το πρόγραμμα επαναλαμβάνει την ερώτηση προς τον χρήστη. Σε περίπτωση καταφατικής απάντησης (' y ' ή ' Υ ') το πρόγραμμα επαναλαμβάνει την εκτέλεση από το βήμα 1. Οδηγίες Υλοποίησης Δεδομένα Δημιουργήστε δύο global διδιάστατους πίνακες χαρακτήρων με μέγεθος το μέγιστο μέγεθος του καμβά (αντιστοιχεί στο επίπεδο δυσκολίας EXPERT ). Ας τους ονομάσουμε (τα ονόματα είναι ενδεικτικά και δεν απαιτείται να τα χρησιμοποιήσετε στο πρόγραμμα σας): game: αποθηκεύει τις τιμές των θέσεων του καμβά και displayed: αποθηκεύει εάν μία θέση του πίνακα game έχει αποκαλυφθεί στον χρήστη ή όχι. Συναρτήσεις 1. Δημιουργήστε μία συνάρτηση αρχικοποίησης των global πινάκων game και displayed 2. Δημιουργήστε μία συνάρτηση που υπολογίζει αν έχουν αποκαλυφθεί όλες οι θέσεις που δεν περιέχουν νάρκη. 3. Δημιουργήστε μία συνάρτηση η οποία εκτυπώνει το puzzle, όπως αυτό αποκαλύπτεται στον χρήστη μετά από κάθε κίνηση. 4. Δημιουργήστε μία συνάρτηση η οποία εκτυπώνει τη λύση του puzzle, όπως αυτή αποκαλύπτεται στον χρήστη στο τέλος του παιχνιδιού. Όλες οι παραπάνω συναρτήσεις λαμβάνουν ως όρισμα μία παράμετρο τύπου int που αντιστοιχεί στον αριθμό των γραμμών και στηλών των global πινάκων game και displayed, ανάλογα με το επίπεδο δυσκολίας που έχει επιλέξει κάθε φορά ο χρήστης. Προσπαθήστε να υλοποιήσετε το παιχνίδι με χρήση των παραπάνω συναρτήσεων. Αρχικοποίηση του παιχνιδιού Κάθε φορά που δημιουργείται ένα νέο παιχνίδι θα πρέπει να αρχικοποιήσετε τις παραμέτρους του παιχνιδιού ως εξής: Γεννήτρια τυχαίων αριθμών Θέλουμε γεννήτρια τυχαίων αριθμών που να παράγει διαφορετικά αποτελέσματα σε κάθε εκτέλεση του προγράμματος. Προκειμένου να δημιουργήσετε μία τέτοια γεννήτρια θα χρειαστείτε τις συναρτήσεις srand για την αρχικοποίηση της γεννήτριας και rand για την παραγωγή ενός τυχαίου αριθμού κάθε φορά. Το παρακάτω τμήμα κώδικα παράγει έναν τυχαίο αριθμό από 0 έως 999. #include <stdio.h> #include <stdlib.h> #include <time.h>

int main(int argc, char *argv[]) { int i; srand(time(null)); printf("%d\n", rand() % 1000 ); return 0; } Η συνάρτηση time επιστρέφει τον χρόνο (ημερομηνία και ώρα από την 1/1/1970 τα μεσάνυχτα) σε δευτερόλεπτα. Καθώς ο χρόνος μεταβάλλεται, μεταβάλλεται και το όρισμα της αρχικοποίησης για τη γεννήτρια τυχαίων αριθμών. Αυτό μας επιτρέπει να παράγουμε σε κάθε νέα εκτέλεση του προγράμματος διαφορετικούς τυχαίους αριθμούς. Υπολογισμός του αριθμού των ναρκών Ο υπολογισμός του αριθμού των ναρκών προκύπτει εάν πολλαπλασιάσετε τον αριθμό των θέσεων του καμβά (διαφέρει για κάθε επίπεδο) με το μέγιστο ποσοστό πλήρωσης ( 20% ). Αγνοώντας το δεκαδικό μέρος του αριθμού που προκύπτει λαμβάνετε τον αριθμό των ναρκών που θα πρέπει να καταχωρήσετε σε κάθε παιχνίδι. Αρχικοποίηση των πινάκων game και displayed Σε κάθε νέο παιχνίδι καλείστε να αρχικοποιήσετε τους πίνακες game και displayed ως εξής: displayed: κάθε θέση του πίνακα displayed μπορεί να πάρει μόνο 2 τιμές μία που δηλώνει ότι η συγκεκριμένη θέση του πίνακα game έχει αποκαλυφθεί στον χρήστη και μία που δηλώνει ότι δεν έχει αποκαλυφθεί. Επιλέξτε τις τιμές αυτές μόνοι σας, ορίζοντας τις αντίστοιχες σταθερές και αρχικοποιήστε τον πίνακα ώστε να μην έχει αποκαλυφθεί καμία θέση του πίνακα. game: Αρχικά αρχικοποιήστε τον πίνακα ώστε να μην περιέχει καμία πληροφορία. Στη συνέχεια προσδιορίστε τις θέσεις των ναρκών χρησιμοποιώντας την γεννήτρια τυχαίων αριθμών ώστε να παράγει αριθμούς από 1 έως size, όπου size το μέγεθος του καμβά με βάση το επίπεδο δυσκολίας που έχει επιλέξει ο χρήστης. Για κάθε μία νάρκη που θέλετε να τοποθετήσετε δημιουργήστε δύο τυχαίους αριθμούς, ένα που αφορά τη γραμμή στην οποία θα τοποθετηθεί η νάρκη και έναν που αφορά τη στήλη. Εάν σε μία θέση υπάρχει ήδη νάρκη, επαναλάβετε την διαδικασία μέχρι να βρείτε μία κενή θέση.

Πώς να παραδώσετε τη δουλειά σας Πριν παραδώσετε το πρόγραμμά σας, προσθέστε σε σχόλια στην αρχή του αρχείου τα πλήρη ονόματα και ΑEΜ των μελών της ομάδας. Παρακαλούμε να γράφετε τα σχόλια ΜΟΝΟ με λατινικούς χαρακτήρες. Κατασκευάστε ένα φάκελο με όνομα hw2_epwnumo2_aem1_epwnumo2_am2 αυτόν το hw2.c και αντιγράψτε μέσα σε Πηγαίνετε στο φάκελο μέσα στον οποίο βρίσκεται το hw2_epwnumo1_aem1_epwnumo2_aem2 που κατασκευάσατε και γράψτε την παρακάτω εντολή: tar czf hw2_epwnumo1_aem1_epwnumo2_aem2.tgz hw2_epwnumo1_aem1_epwnumo2_aem2 Στείλτε email: στη διεύθυνση ce120lab@gmail.com αντίγραφο ( CC ) στον άλλο μέλος της ομάδας σας θέμα (subject) CE120 hw2 και συνημμένο αρχείο το hw2_epwnumo1_aem1_epwnumo2_aem2.tgz