ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

Σχετικά έγγραφα
ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

3 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ - ΠΙΝΑΚΕΣ

3 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ - ΠΙΝΑΚΕΣ

3 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ - ΠΙΝΑΚΕΣ

1 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ - ΑΛΓΟΡΙΘΜΟΙ

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 3 η

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 3 η

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

2 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C

1 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ (επανάληψη στη γλώσσα C & εισαγωγή στη γλώσσα C++)

3 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ

Εύρεση ν-στού πρώτου αριθμού

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 6 η

1 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ (επανάληψη στη γλώσσα C & εισαγωγή στη γλώσσα C++)

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 6 η

Γ ε ν ι κ ό Λ ύ κ ε ι ο Ε λ ε υ θ ε ρ ο ύ π ο λ η ς. Α λ γ ό ρ ι θ μ ο ι

4.2 ΕΥΚΛΕΙΔΕΙΑ ΔΙΑΙΡΕΣΗ

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Αριθμητικά Συστήματα

2 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ Κλάσεις, Αντικείμενα & Δομητές (Constructors)

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

Ασκήσεις και δραστηριότητες

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

Οι φυσικοί αριθμοί. Παράδειγμα

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

ΑΛΓΕΒΡΑ Α ΓΥΜΝΑΣΙΟΥ ΘΕΤΙΚΟΙ ΚΑΙ ΑΡΝΗΤΙΚΟΙ ΑΡΙΘΜΟΙ ΕΠΙΜΕΛΕΙΑ : ΧΑΛΑΤΖΙΑΝ ΠΑΥΛΟΣ

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ ΑΣΚΗΣΗ

Οι Φυσικοί Αριθμοί. Παρατήρηση: Δεν στρογγυλοποιούνται αριθμοί τηλεφώνων, Α.Φ.Μ., κωδικοί αριθμοί κλπ. Πρόσθεση Φυσικών αριθμών

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

2.1 ΠΡΑΞΕΙΣ ΚΑΙ ΟΙ ΙΔΙΟΤΗΤΕΣ ΤΟΥΣ

Γλώσσα Προγραμματισμού C

4.2 ΔΙΑΙΡΕΣΗ ΠΟΛΥΩΝΥΜΩΝ

4 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Δομημένος Προγραμματισμός (ΤΛ1006)

2ογελ ΣΥΚΕΩΝ 2ογελ ΣΥΚΕΩΝ ΠΟΛΥΩΝΥΜΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Β Λυκει(ου ΠΟΛΥΩΝΥΜΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ

viii. Α[7] Α[1] Α[3] + Α[8] 2. Δίνεται οι παρακάτω πίνακες ακεραίων Α και Β

7. Αν υψώσουμε και τα δύο μέλη μιας εξίσωσης στον κύβο (και γενικά σε οποιαδήποτε περιττή δύναμη), τότε προκύπτει

ΜΑΘΗΜΑΤΙΚΑ Α ΓΥΜΝΑΣΙΟΥ

Κεφάλαιο 2. Συστήματα Αρίθμησης και Αναπαράσταση Πληροφορίας. Περιεχόμενα. 2.1 Αριθμητικά Συστήματα. Εισαγωγή

Υπολογιστικά & Διακριτά Μαθηματικά

Χαρακτήρες διαιρετότητας ΜΚΔ ΕΚΠ Ανάλυση αριθμού σε γινόμενο πρώτων παραγόντων

Αριθμητική Ανάλυση & Εφαρμογές

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i.

Τμήμα Διοίκησης Τεχνολογίας Α/Α POSO Ν... SYN...

ΕΞΕΤΑΣΗ ΙΑΝΟΥΑΡΙΟΥ (28/1/2011)

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

Μεταθέσεις και πίνακες μεταθέσεων

6. Αφού δημιουργήσετε ένα πίνακα 50 θέσεων με ονόματα μαθητών να τον ταξινομήσετε αλφαβητικά με την μέθοδο της φυσαλίδας

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

ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ ΑΣΚΗΣΗ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ

Τμήμα Τεχνολόγων Γεωπόνων - Φλώρινα

Πίνακες Γραμμικά Συστήματα

ΑΝΙΣΟΤΗΤΕΣ. Αν α-β>0 τότε α>β «Αν η διαφορά είναι θετικός αριθμός τότε ο πρώτος αριθμός δηλαδή το α είναι μεγαλύτερος από τον δεύτερο δηλαδή το β»

ΕΠΑΝΑΛΗΠΤΙΚΗ ΕΞΕΤΑΣΗ (14/9/2012)

ΣΤΗΛΗ Β ΑΠΟΤΕΛΕΣΜΑ 1. float(10) α pow(2,3) β abs(-10) γ int(5.6) δ. 10 ε. 5.6 Μονάδες 8 ΣΤΗΛΗ Α ΣΥΝΑΡΤΗΣΗ

Άσκηση 1 (κλιμακωτή χρέωση) Ένα γραφείο ενοικίασης αυτοκινήτων εφαρμόζει την παρακάτω τιμολογιακή πολιτική: Πάγιο 30 ευρώ

2. Να γράψετε έναν αριθμό που είναι μεγαλύτερος από το 3,456 και μικρότερος από το 3,457.

Καθηγητής Ε. Χ. ΖΙΟΥΛΑΣ

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

Κεφ 2. Βασικές Έννοιες Αλγορίθμων

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΩΝ & Δ ΤΑΞΗΣ ΕΣΠΕΡΙΝΩΝ ΥΠΟΛΕΙΠΟΜΕΝΕΣ ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ HMEΡΗΣΙΩΝ ΚΑΙ ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

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

ΜΑΘΗΜΑΤΙΚΑ Α ΓΥΜΝΑΣΙΟΥ

Επαναληπτικές Ασκήσεις. Ρίζου Ζωή

m + s + q r + n + q p + s + n, P Q R P Q P R Q R F G

Επιμέλεια: Σπυρίδων Τζινιέρης-ΘΕΩΡΙΑ ΚΛΑΣΜΑΤΩΝ ΓΙΑ ΤΗΝ Α ΓΥΜΝΑΣΙΟΥ ΘΕΩΡΙΑ ΚΛΑΣΜΑΤΩΝ Α ΓΥΜΝΑΣΙΟΥ

Μη γράφετε στο πίσω μέρος της σελίδας

Χαράλαµπος Σκόκος ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ I ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΕΞΕΤΑΣΕΙΣ ΕΑΡΙΝΟΥ ΕΞΑΜΗΝΟΥ Ερωτήσεις

που θα δώσει αποτέλεσµα 48, λόγω της αριστερής προσεταιριστικότητας των τελεστών / και *, ενώ η επιθυµητή αντικατάσταση θα ήταν η

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

Θέμα Α 1. 1 Τα θέματα προέρχονται από Επαναληπτικά Διαγωνίσματα από το "Στέκι των Πληροφορικών" και Π. Τσιωτάκη

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

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. Για i από 1 μέχρι Μ Εμφάνισε A[4,i] Τέλος_επανάληψης. (μονάδες 6) ΤΕΛΟΣ 1ης ΑΠΟ 7 ΣΕΛΙΔΕΣ

11. Ποιες είναι οι άμεσες συνέπειες της διαίρεσης;

Μ Α Θ Η Μ Α Τ Ι Κ Α Α Γ Υ Μ Ν Α Σ Ι Ο Υ

Α1. Στον προγραµµατισµό χρησιµοποιούνται δοµές δεδοµένων. 1. Τι είναι δυναµική δοµή δεδοµένων; Μονάδες 3 2. Τι είναι στατική δοµή δεδοµένων;

ΠΕΡΙΕΧΟΜΕΝΑ 1 ΠΡΑΓΜΑΤΙΚΟΙ ΑΡΙΘΜΟΙ ΑΚΟΛΟΥΘΙΕΣ ΑΡΙΘΜΩΝ EΞΙΣΩΣΕΙΣ...47 ΠΡΟΛΟΓΟΣ... 9

ΛΥΣΕΙΣ ΤΩΝ ΑΣΚΗΣΕΩΝ ΕΠΑΝΑΛΗΨΗΣ ΓΙΑ ΤΙΣ ΓΙΟΡΤΕΣ (ΑΡΙΘΜΗΤΙΚΗ)

Αλγεβρικές Παραστάσεις

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ. 1ο ΓΕΛ ΠΕΥΚΗΣ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ B' ΤΕΤΡΑΜΗΝΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

4. Επιλογή και Επανάληψη

Δομές Δεδομένων & Αλγόριθμοι

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

ΜΕΘΟΔΟΛΟΓΙΕΣ & ΑΣΚΗΣΕΙΣ ΓΙΑ ΤΗΝ ΑΛΓΕΒΡΑ ΤΗΣ Α ΛΥΚΕΙΟΥ

4. Ποιος είναι ο τύπος και ποια η τιμή της μεταβλητής που χρησιμοποιείται παρακάτω;

Α.1 Τι γνωρίζετε για τον διερμηνευτή, τον μεταγλωττιστή και ποιες οι διαφορές τους. 15 ΜΟΝΑΔΕΣ

Ορισμένες σελίδες του βιβλίου

Εφαρμοσμένα Μαθηματικά ΙΙ

ΕΠΙΤΡΟΠΗ ΔΙΑΓΩΝΙΣΜΩΝ 76 ος ΠΑΝΕΛΛΗΝΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΣΤΑ ΜΑΘΗΜΑΤΙΚΑ Ο ΘΑΛΗΣ 14 Νοεμβρίου Ενδεικτικές λύσεις Β ΓΥΜΝΑΣΙΟΥ

Transcript:

Δ.Π.Θ. - Πολυτεχνική Σχολή Τμήμα Μηχανικών Παραγωγής & Διοίκησης Ακαδ. έτος 2018-2019 Τομέας Συστημάτων Παραγωγής Εξάμηνο Β Αναπληρωτής Καθηγητής Στέφανος Δ. Κατσαβούνης ΜΑΘΗΜΑ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) 25/02/2019 ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η ΑΣΚΗΣΗ 1 Να γραφεί αλγόριθμος ή πρόγραμμα σε γλώσσα C που θα υπολογίζει και θα εμφανίζει το αποτέλεσμα από το παρακάτω άθροισμα με ακρίβεια 10-2 και τουλάχιστον 30 όρους 1 3 3+ 5 5 7 + 2! 3! 4! Μετά τον υπολογισμό και την εμφάνιση του αποτελέσματος να εμφανίσετε το πλήθος των όρων που χρησιμοποιήθηκαν στον υπολογισμό. ΑΣΚΗΣΗ 2 Να γραφεί αλγόριθμος ή πρόγραμμα σε γλώσσα C που θα υπολογίζει και θα εμφανίζει το αποτέλεσμα από το παρακάτω άθροισμα με ακρίβεια 10-2 και τουλάχιστον 10 όρους 1 2! 3! 4! + + 23 34 45 56 Μετά τον υπολογισμό και την εμφάνιση του αποτελέσματος να εμφανίσετε το πλήθος των όρων που χρησιμοποιήθηκαν στον υπολογισμό. ΑΣΚΗΣΗ 3 Για ορισμένους θετικούς ακέραιους τριψήφιους αριθμούς ισχύει η εξής ιδιότητα: 1. υπολογίζουμε το άθροισμα των κύβων των ψηφίων του αριθμού 2. υπολογίζουμε το άθροισμα των ψηφίων του αριθμού 3. υπολογίζουμε τη διαφορά των τιμών που προέκυψαν από τα βήματα (1) και (2) και στη συνέχεια την τετραγωνική ρίζα του αριθμού που προκύπτει από την αφαίρεση. 4. υπολογίζουμε τον διψήφιο αριθμό που προκύπτει από τα 2 πρώτα ψηφία του αρχικού αριθμού και από αυτόν αφαιρούμε το τελευταίο ψηφίο του αρχικού αριθμού Οι αριθμοί από τα βήματα (3) και (4) είναι ίσοι! 1 + 5 + 3 1+ 5 + 3 = 15 3 3 3 3 Π.χ. ο αριθμός 153 : ( ) ( ) Να γραφεί αλγόριθμος ή πρόγραμμα σε γλώσσα C που θα βρίσκει και θα εμφανίζει, έναν σε κάθε γραμμή, όλους τους θετικούς τριψήφιους ακέραιους αριθμούς που πληρούν την παραπάνω ιδιότητα. ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2018-2019 1

ΑΣΚΗΣΗ 4 Ο αριθμός 24 έχει την παρακάτω ιδιότητα. Εάν επιλέξουμε έναν οποιονδήποτε πρώτο (prime) αριθμό, μεγαλύτερο του 3, τον υψώσουμε στο τετράγωνο, και από το αποτέλεσμα που θα προκύψει αφαιρέσουμε την μονάδα τότε το 24 είναι πάντοτε ένας διαιρέτης αυτού του αποτελέσματος. Π.χ. Επιλέγω τον 17 (είναι πρώτος αριθμός). Το τετράγωνό του είναι 289. Αφαιρώντας 1 προκύπτει 288. Η διαίρεση 288/24 δίνει αποτέλεσμα 12. Να γραφεί αλγόριθμος ή πρόγραμμα σε γλώσσα C που θα επιβεβαιώνει την παραπάνω ιδιότητα για όλους τους πρώτους αριθμούς που είναι μεγαλύτεροι του 3 και μικρότεροι του 100. (ΥΠΟΔΕΙΞΗ : Το παρακάτω τμήμα κώδικα σε γλώσσα C βρίσκει αν ένας ακέραιος και θετικός αριθμός k 2 είναι πρώτος (prime) αριθμός ). i=2; flag=0; while ((i<=k/2) && (flag==0)) { if (k%i==0) flag=1; i++; } if (flag==0) printf("number %4d is prime \n",k); ΑΣΚΗΣΗ 5 Να γραφεί πρόγραμμα σε γλώσσα C που θα υπολογίζει και θα εμφανίζει το αποτέλεσμα από το παρακάτω άθροισμα : 1 1 1 1 1 S = 1 + + + 3 5 7 41 43 Μετά τον υπολογισμό και την εμφάνιση του αποτελέσματος να βρεθεί και να εμφανιστεί η διαφορά του με τον αριθμό π. ΑΣΚΗΣΗ 6 Να γραφεί πρόγραμμα σε γλώσσα C που θα υπολογίζει και θα εμφανίζει το αποτέλεσμα από το παρακάτω άθροισμα : 1 1 1 S = 6 1+ + + + 4 9 900 Μετά τον υπολογισμό και την εμφάνιση του αποτελέσματος να βρεθεί και να εμφανιστεί η διαφορά του με τον αριθμό π. ΑΣΚΗΣΗ - 7 Για ορισμένους ακέραιους και θετικούς αριθμούς ισχύει η παρακάτω ιδιότητα: Το άθροισμα που προκύπτει από την επαναλαμβανόμενη πρόσθεση είτε των ψηφίων του αριθμού είτε από την πρόσθεση του νέου αριθμού σε αυτόν που δημιουργήθηκε αμέσως πριν, ισούται με τον αριθμό που εξετάζεται π.χ. για τον αριθμό 75 : 7 + 5 = 12, 5 +12 = 17, 12 +17 = 29, 17 + 29 = 46, 29 + 46 = 75 Να γραφεί αλγόριθμος ή πρόγραμμα σε γλώσσα C που θα βρίσκει και θα εμφανίζει όλους τους αριθμούς που πληρούν αυτήν την ιδιότητα και είναι μικρότεροι του 1000. Στο τέλος θα πρέπει να εμφανίζεται και το πλήθος των αριθμών αυτών (ΥΠΟΔΕΙΞΗ: μερικοί τέτοιοι αριθμοί είναι οι : 14, 19, 28, 47,.) ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2018-2019 2

ΑΣΚΗΣΗ 8 Να γραφεί πρόγραμμα σε γλώσσα C που θα βρίσκει και θα εμφανίζει όλες τις τετράδες ακεραίων αριθμών, έστω αβγδ,,,, που : ( ) ανήκουν στο διάστημα [1,20], είναι διαφορετικές μεταξύ τους (δηλαδή να αποφύγετε την επανάληψη τετράδων όπως ( αβγδ,,, ), ( αγδβ,,, ), (,,, ) γαβδ κλπ), και ικανοποιούν την ιδιότητα: 2 2 2 2 α + β + γ = δ Παράδειγμα : 1 2 +4 2 +8 2 =9 2, αλλά όχι 1 2 +2 2 +2 2 =3 2, διότι επαναλαμβάνεται το 2. Επίσης: 1. Να βρεθεί και να εμφανιστεί το πλήθος αυτών των διαφορετικών μεταξύ τους τετράδων. 2. Να δημιουργηθεί ένας μονοδιάστατος αριθμητικός πίνακας ακεραίων που θα περιέχει τις πρώτες 10 τέτοιες τετράδες (αν υπάρχουν λιγότερες τότε θα περιέχει ακριβώς όσες υπάρχουν) ΑΣΚΗΣΗ - 9 Ορισμένοι ακέραιοι και θετικοί αριθμοί μπορούν να γραφούν στη μορφή mm kk, όπου mm, kk ακέραιοι και θετικοί αριθμοί μεγαλύτεροι ή και ίσοι του 2. Π.χ. 9=3 2 (mm = 3, kk = 2) 64 = 2 6 = 4 4 = 8 2 (mm = 2, kk = 6), (mm = 4, kk = 4), (mm = 8, kk = 2) (για ορισμένους αριθμούς υπάρχουν περισσότερα από ένα ζεύγη τιμών (mm, kk) ) Να γραφεί αλγόριθμος ή πρόγραμμα σε γλώσσα C που θα βρίσκει και θα εμφανίζει όλους τους αριθμούς που μπορούν να γραφούν με τη συγκεκριμένη μορφή, τουλάχιστον με ένα ζεύγος (mm, kk) και είναι μικρότεροι του 1000. Για όσους μπορούν να γραφούν με περισσότερα του ενός, διαφορετικά ζεύγη (mm, kk) να βρίσκονται, να μετρώνται και να εμφανίζονται όλα, μαζί με το πλήθος τους (π.χ. για τον αριθμό 64 θα εμφανίζονται τα ζεύγη : (2,6) (4,4) (8,2) πλήθος = 3). ΑΣΚΗΣΗ - 10 Θεωρείστε μια σειρά ακεραίων θετικών αριθμών στην περιοχή [1-999], πλήθους Ν (Ν = γνωστό). Η εισαγωγή των αριθμών μπορεί να γίνει με οποιονδήποτε τρόπο (εντολή scanf_s, χρήση συνάρτησης δημιουργίας τυχαίων αριθμών) αρκεί να υπάρχει έλεγχος εγκυρότητας τιμών. Για κάθε αριθμό της σειράς, έστω xx, να δημιουργήσετε ένα νέο αριθμό, έστω yy, που θα προκύπτει από την αντιστροφή των ψηφίων του και στη συνέχεια να βρείτε την απόλυτη τιμή της διαφοράς του αριθμού από τον νέο αριθμό, έστω zz, (δηλ. zz = xx yy ). Μια νέα σειρά, θα περιλαμβάνει εκείνους τους αριθμούς zz, για τους οποίους ισχύει : aa < zz < bb, όπου aa, bb δύο γνωστά όρια, και aa < bb. Να γραφεί αλγόριθμος ή πρόγραμμα σε γλώσσα C που θα δημιουργεί και θα εμφανίζει τη σειρά των αριθμών zz. Στο τέλος θα πρέπει να εμφανίζεται και το πλήθος αυτών των αριθμών. Παράδειγμα : Αριθμός =719, αντίστροφος =917, διαφορά zz = 719 917 = 202 Αν aa = 100, bb = 200 τότε ο αριθμός 202 δεν θα ανήκει στη νέα σειρά. ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2018-2019 3

ΑΣΚΗΣΗ - 11 Θεωρείστε μια σειρά ακεραίων θετικών αριθμών στην περιοχή [1-999], πλήθους Ν (Ν = γνωστό). Η εισαγωγή των αριθμών μπορεί να γίνει με οποιονδήποτε τρόπο (εντολή scanf_s, χρήση συνάρτησης δημιουργίας τυχαίων αριθμών) αρκεί να υπάρχει έλεγχος εγκυρότητας τιμών. Χρησιμοποιώντας όλους τους αριθμούς της πρώτης σειράς να δημιουργηθεί μία δεύτερη σειρά αριθμών, από την πρώτη, που θα περιλαμβάνει όλους τους αριθμούς της πρώτης σειράς, που ικανοποιούν την παρακάτω ιδιότητα: Το άθροισμα του πηλίκου και του υπόλοιπου της διαίρεσης του αριθμού από την πρώτη σειρά, με το άθροισμα των ψηφίων του αριθμού να είναι ίσο. Παράδειγμα : Ο αριθμός 55. Άθροισμα των ψηφίων του =10. 55/10 = 5 και υπόλοιπο 5. Άρα ο αριθμός 55 θα ανήκει στη νέα σειρά αριθμών. Να γραφεί αλγόριθμος ή πρόγραμμα σε γλώσσα C που θα δημιουργεί και θα εμφανίζει τη δεύτερη σειρά αριθμών. Στο τέλος θα πρέπει να εμφανίζεται και το πλήθος των αριθμών της δεύτερης σειράς. ΑΣΚΗΣΗ - 12 Να γίνει εισαγωγή τιμών σε μονοδιάστατο πίνακα ακεραίων θετικών αριθμών στην περιοχή [1-999], Ν στοιχείων (Ν = γνωστό). Η εισαγωγή των αριθμών μπορεί να γίνει με οποιονδήποτε τρόπο (εντολή scanf_s, χρήση συνάρτησης δημιουργίας τυχαίων αριθμών), αρκεί να υπάρχει έλεγχος εγκυρότητας τιμών. Να δημιουργηθεί νέος πίνακας που θα περιλαμβάνει τις διαφορές των στοιχείων του αρχικού πίνακα, ανά ζεύγη, κατ απόλυτη τιμή, ως εξής (διαφορά του 1 ου με το Ν-οστό στοιχείο, του 2 ου στοιχείου με το Ν-1-οστό στοιχείο κ.ο.κ.), ταξινομημένες σε αύξουσα διάταξη, χωρίς να χρησιμοποιηθεί διαδικασία ταξινόμησης. Αν ο αριθμός Ν είναι άρτιος τότε θα υπολογιστούν οι διαφορές για τα αντίστοιχα ζεύγη. Παράδειγμα: Αρχικός πίνακας, Ν=10 14 7 91 27 53 72 8 5 33 44 Διαφορές : 14-44 =30, 7-33 =26, 91-5 =87, 27-8 =19, 53-72 =19, Νέος πίνακας σε αύξουσα διάταξη: 19 19 26 30 87 ΑΣΚΗΣΗ - 13 Να γραφεί πρόγραμμα σε γλώσσα C για το παρακάτω πρόβλημα: Να δημιουργηθεί, χρησιμοποιώντας αποκλειστικά τυχαίους αριθμούς, μονοδιάστατος αριθμητικός πίνακας ακεραίων θετικών αριθμών Ν θέσεων, όπου Ν είναι θετικός και άρτιος αριθμός (Ν = γνωστό) στον οποίο θα α, β π.χ. για Ν=14 υπάρχουν ζεύγη τιμών, έστω ( ) 45 3 18 2 9 4 91 1 77 8 50 3 7 2 Για τις τιμές αβ, πρέπει να ισχύει ότι: 0 < α 100 και 0 < β < 10. Να δημιουργηθεί και να εμφανιστεί ένας νέος πίνακας που θα περιέχει τα γινόμενα όλων των στοιχείων των ζευγών ( α, β ) δηλ. α β, σε αύξουσα διάταξη, χωρίς να χρησιμοποιηθεί διαδικασία ταξινόμησης. Π.χ. για το παράδειγμα ο νέος πίνακας θα είναι: 14 36 36 91 135 150 616 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2018-2019 4

ΑΣΚΗΣΗ 14 Να γραφεί πρόγραμμα σε γλώσσα C για το παρακάτω πρόβλημα: Να δημιουργηθούν, χρησιμοποιώντας αποκλειστικά τυχαίους αριθμούς (συνάρτηση rand()), δύο μονοδιάστατοι αριθμητικοί πίνακες ακεραίων αριθμών Ν θέσεων (π.χ. Ν = 20), έστω Α και Β ως εξής: Ο πίνακας Α περιέχει θετικούς ακεραίους αριθμούς στο διάστημα [0,99]. Κάθε αριθμός πρέπει να υπάρχει μία μόνον φορά. Ο πίνακας Β περιέχει τη συχνότητα εμφάνισης του αντίστοιχου στοιχείου του πίνακα Α (περιοχή τιμών για τα στοιχεία του πίνακα Β : [1,10]). Στη συνέχεια : 1. να γίνει εμφάνιση των πινάκων Α και Β. 2. να υπολογιστεί και να εμφανιστεί η ποσότητα: N α β i i= 1 N i= 1 β i i ΑΣΚΗΣΗ - 15 Οι αριθμοί Rhonda (ακέραιοι και θετικοί αριθμοί) διαθέτουν την ακόλουθη ιδιότητα: Το γινόμενο των ψηφίων ενός αριθμού Rhonda είναι ίσο με το γινόμενο του αριθμού 10 επί το άθροισμα των διαιρετών του που είναι πρώτοι αριθμοί. Παράδειγμα : ο αριθμός 1568 είναι αριθμός Rhonda διότι 1568 = 2 2 2 2 2 7 7 1 5 6 8 = 240 240 = 10 (2 + 2 + 2 + 2 + 2 + 7 + 7) Να γραφεί αλγόριθμος ή πρόγραμμα σε γλώσσα C που θα βρίσκει όλους τους τετραψήφιους αριθμούς Rhonda ( περιοχή [1000, 9999] ) και θα τους καταχωρεί σε έναν μονοδιάστατο αριθμητικό πίνακα. Στη συνέχεια θα εμφανίζει τα περιεχόμενα του πίνακα καθώς και το πλήθος των στοιχείων του. (ΥΠΟΔΕΙΞΗ : το πλήθος των τετραψήφιων αριθμών Rhonda είναι μικρότερο του 20). (ΥΠΟΔΕΙΞΗ 1 η : Το παρακάτω τμήμα κώδικα σε γλώσσα C βρίσκει αν ένας ακέραιος και θετικός αριθμός kk 2 είναι πρώτος (prime) αριθμός ). i=2; flag=0; while ((i<=k/2) && (flag==0)) { if (k%i==0) flag=1; i++; } if (flag==0) printf("number %4d is prime \n",k); (ΥΠΟΔΕΙΞΗ 2 η : Οι αριθμοί Rhonda στο διάστημα [1000, 9999] είναι οι εξής : 1568, 2835, 4752, 5265, 5439, 5664, 5824, 5832, 8526). ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2018-2019 5

ΑΣΚΗΣΗ - 16 Οι αριθμοί Mersenne (ακέραιοι και θετικοί), έστω MM nn έχουν τη μορφή MM nn = 2 nn 1 Ένας αριθμός Mersenne λέγεται Mersenne prime αν είναι πρώτος αριθμός και ο αριθμός nn είναι πρώτος αριθμός. Π.χ. ο αριθμός 3 είναι Mersenne prime. Να γραφεί πρόγραμμα σε γλώσσα C που θα καταχωρεί σε μονοδιάστατο αριθμητικό πίνακα όλους τους Mersenne prime αριθμούς που είναι μικρότεροι του 10000. Στο τέλος να εμφανιστούν τα στοιχεία του πίνακα καθώς και το πλήθος τους. (ΣΧΟΛΙΟ : οι Mersenne prime που είναι μικρότεροι του 10000 είναι : 3, 7, 31, 127, 8191 ). ΑΣΚΗΣΗ - 17 Ένας αριθμός Proth είναι ένας ακέραιος και θετικός αριθμός NN που μπορεί να εκφραστεί στη μορφή: όπου kk είναι ένας περιττός ακέραιος αριθμός nn ένας θετικός ακέραιος αριθμός και 2 nn > kk NN = kk 2 nn + 1 Να γραφεί πρόγραμμα σε γλώσσα C που θα βρίσκει και θα εμφανίζει σε αύξουσα σειρά όλους τους αριθμούς Proth που είναι μικρότεροι του 1000. Στο τέλος θα πρέπει να εμφανίζεται και το πλήθος τους. ΔΕΝ ΠΡΕΠΕΙ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΘΕΙ ΔΙΑΔΙΚΑΣΙΑ ΤΑΞΙΝΟΜΗΣΗΣ!!! ΠΑΡΑΔΕΙΓΜΑ : οι δέκα πρώτοι κατά σειρά αριθμοί Proth είναι : 3, 5, 9, 13, 17, 25, 33, 41, 49, 57 ΣΧΟΛΙΑ : Οι τιμές προκύπτουν για διάφορους συνδυασμούς των kk, nn. Π.χ. Για kk = 1 και nn = 1, 2, 3, 4, 5 ισχύει η ανισότητα 2 nn > kk και προκύπτουν οι τιμές NN = 3, 5, 9, 17, 33 Ομοίως για kk = 3 και nn = 2, 3, 4 ισχύει η ανισότητα 2 nn > kk και προκύπτουν οι τιμές NN = 13, 25, 49 Η τιμή ΝΝ = 41 προκύπτει για kk = 5, nn = 3 ΑΣΚΗΣΗ - 18 Ένας ακέραιος και θετικός αριθμός ονομάζεται αριθμός Smith εφόσον δεν είναι πρώτος (prime) και το άθροισμα των ψηφίων του είναι ίσο με το άθροισμα των ψηφίων των διαιρετών του που είναι πρώτοι αριθμοί (εξαιρώντας από τους διαιρέτες το 1). Παραδείγματα : 274 = 2 137 2 + 7 + 4 = 2 + (1 + 3 + 7) = 13 4937775 = 3 5 5 65837 4 + 9 + 3 + 7 + 7 + 7 + 5 = 3 + 5 + 5 + (6 + 5 + 8 + 3 + 7) = 42 Να γραφεί πρόγραμμα σε γλώσσα C που θα καταχωρεί σε μονοδιάστατο αριθμητικό πίνακα όλους τους αριθμούς Smith που είναι μικρότεροι του 1000. Στο τέλος να εμφανιστούν τα στοιχεία του πίνακα καθώς και το πλήθος τους. (ΣΧΟΛΙΟ : μερικοί αριθμοί Smith, ξεκινώντας από την αρχή : 4, 22, 27, 58, 85, 94, 121, 166, 202, 265, 274, 319, 346,...). ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2018-2019 6

ΑΣΚΗΣΗ 19 Η καταλανική τριάδα (Catalan s triangle) είναι το τρίγωνο αριθμών Κάθε στοιχείο είναι το άθροισμα του στοιχείου που βρίσκεται ακριβώς πάνω από αυτό και αυτού που βρίσκεται αριστερά του. Π.χ. 9=5+4. Να γραφεί πρόγραμμα σε γλώσσα C που θα βρίσκει και θα εμφανίζει το σχετικό τρίγωνο καταλανικών τριάδων για nn = 20. ΑΣΚΗΣΗ 20 Ένας ακέραιος και θετικός αριθμός kk λέγεται kk ssssssssssh εάν δεν έχει ως διαιρέτες πρώτους αριθμούς που είναι μεγαλύτεροι του kk. Ο πίνακας που ακολουθεί δείχνει ορισμένους kk ssssssssssh αριθμούς για μικρές τιμές του kk. kk kk ssssssssssh 2 1, 2, 4, 8, 16, 32, 64, 128, 256, 512,... 3 1, 2, 3, 4, 6, 8, 9, 12, 16, 18, 24,... 5 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16,... 7 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15,... 11 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14,... Να γραφεί πρόγραμμα σε γλώσσα C που θα βρίσκει και θα εμφανίζει όλους τους kk ssssssssssh αριθμούς που είναι μικρότεροι του 200 για όλους τους πρώτους αριθμούς kk που είναι μικρότεροι του 100. ΑΣΚΗΣΗ 21 Η παραγωγή ενός προϊόντος για Ν περιόδους παραγωγής (Ν = γνωστό) καταχωρείται σε ένα μονοδιάστατο πίνακα πραγματικών θετικών αριθμών Α. Σε κάθε μία από τις Ν περιόδους αντιστοιχούν 2 βάρδιες παραγωγής, η ημερήσια βάρδια και η νυχτερινή βάρδια. Να γραφεί πρόγραμμα σε γλώσσα C που θα υλοποιεί τα εξής: 1. θα εισάγει στον πίνακα Α τα δεδομένα παραγωγής, σε μορφή ζευγών ανά περίοδο παραγωγής. Το 1 ο στοιχείο κάθε ζεύγους αντιστοιχεί στην ημερήσια παραγωγή και το 2 ο στοιχείο στη νυχτερινή παραγωγή. Πρέπει να εξασφαλίσετε ότι όλα τα δεδομένα θα είναι θετικοί πραγματικοί αριθμοί στην περιοχή [30.0, 200.0]. 2. θα δημιουργεί στη συνέχεια δύο νέους πίνακες με ονόματα H και Β που θα περιέχουν : a. ο πίνακας Η τις ποσότητες ημερήσιας παραγωγής που είναι μεγαλύτερες κατά 15% από τον μέσο όρο της συνολικής ημερήσιας παραγωγής των Ν περιόδων. b. Αν LIMIT ( = ΓΝΩΣΤΟ ) είναι η επιθυμητή συνολική παραγωγή των Ν περιόδων κατά τη νυχτερινή βάρδια, ο πίνακας Β θα περιέχει μόνον εκείνες τις ποσότητες νυχτερινής παραγωγής που αποτελούν το πλεόνασμα της επιθυμητής συνολικής παραγωγής κατά τη νυχτερινή βάρδια. ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2018-2019 7

3. Θα εμφανίζει τα στοιχεία των πινάκων Η και Β. ΠΑΡΑΔΕΙΓΜΑ για Ν=6, LIMIT =250.0 Περίοδος 1 2 3 4 5 6 Βάρδια Η B Η B Η B Η B Η B Η B Παραγωγή 150. 80. 190. 70. 195. 170. 30. 55. 100. 95. 145. 125. Για το ερώτημα 2b : 80.0 + 70.0 + 170.0 =320.0 >250.0 οπότε ο πίνακας Β θα είναι 70.0 ( = 320.0-250.0 ) 55.0 95.0 125.0 ΑΣΚΗΣΗ 22 Το παρακάτω τμήμα κώδικα σε γλώσσα C βρίσκει αν ένας ακέραιος και θετικός αριθμός kk 2 είναι πρώτος (prime) αριθμός. i=2; flag=0; while ((i<=k/2) && (flag==0)) { if (k%i==0) flag=1; i++; } if (flag == 0) printf("number %4d is prime \n",k); Θεωρείστε σε σειρές (ανά 10 σε κάθε σειρά) πρώτους (primes) ακέραιους αριθμούς. Η σειρά με αριθμό i = 1 ξεκινά από τον πρώτο αριθμό 2. Η επόμενη σειρά περιλαμβάνει τους επόμενους 10 πρώτους (primes) ακέραιους αριθμούς καταχωρημένους σε φθίνουσα διάταξη. Οι σειρές δημιουργούνται επαναληπτικά (σε αύξουσα και φθίνουσα διάταξη των πρώτων αριθμών αντίστοιχα) μέχρις ότου το άθροισμα των στοιχείων που βρίσκονται στη διαγώνιο που φαίνεται με έντονο περίγραμμα (παρακάτω) υπερβεί μια δεδομένη τιμή n (n = γνωστό, δίνεται ως σταθερά στην αρχή του προγράμματος). Π.χ. για n = 500 δημιουργούνται οι παρακάτω σειρές: i = 1 2 3 5 7 11 13 17 19 23 29 i = 2 71 67 61 59 53 47 43 41 37 31 i = 3 73 79 83 89 97 101 103 107 109 113 i = 4 173 167 163 157 151 149 139 137 131 127 i = 5 179 181 191 193 197 199 211 223 227 229 Το άθροισμα 29+37+107+139+199=511 είναι μεγαλύτερο του n = 500 και η επανάληψη σταματά. Να γραφεί πρόγραμμα σε γλώσσα C που : 1. θα βρίσκει και θα εμφανίζει τις σειρές αυτές (τα στοιχεία σε πλαίσιο προφανώς δεν θα εμφανίζονται σε πλαίσιο!). 2. θα καταχωρεί σε ένα μονοδιάστατο πίνακα ακεραίων θετικών αριθμών, έστω X, όλα τα στοιχεία που ανήκουν στην προαναφερόμενη διαγώνιο. Δηλ. ο πίνακας Χ, στο τέλος, θα είναι = {29,37,107,139,199} 3. Θα εμφανίζει τα στοιχεία του πίνακα Χ καθώς και το άθροισμα των στοιχείων που. ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2018-2019 8

ΑΣΚΗΣΗ 23 Σε ένα Πανεπιστημιακό Τμήμα πρόκειται να καταρτιστεί μία λίστα για τα μαθήματα της εξεταστικής περιόδου. Για κάθε μάθημα είναι γνωστά: 1. Ο κωδικός του μαθήματος (ακέραιος στην περιοχή [1-99] ) 2. Το εξάμηνο στο οποίο ανήκει (ακέραιος στην περιοχή [1-9]) 3. Το πλήθος των φοιτητών & φοιτητριών που πρόκειται να δώσουν εξετάσεις (ακέραιος 1-999) Να γραφεί πρόγραμμα σε γλώσσα C που θα υλοποιεί τα εξής : 1. Θα εισάγει δεδομένα σε έναν πίνακα ακεραίων με 3*Ν σε πλήθος θέσεις, σύμφωνα με τα παραπάνω. Ο γνωστός αριθμός Ν >0 δηλώνει το πλήθος των μαθημάτων για τα οποία θα πραγματοποιηθούν εξετάσεις (δηλ. ενδεχομένως για κάποια μαθήματα δεν θα διενεργηθούν εξετάσεις). Η εισαγωγή θα γίνει αποκλειστικά και μόνο με χρήση τυχαίων αριθμών - συνάρτηση rand( ) - στα όρια που έχουν δοθεί για κάθε τριάδα στοιχείων. ΠΡΟΣΟΧΗ!! Ο κάθε κωδικός μαθήματος θα πρέπει να υπάρχει μόνον μία φορά στον πίνακα!! 2. Θα εμφανίζει μία λίστα των μαθημάτων που πρόκειται να εξεταστούν, ανά εξάμηνο. Η λίστα θα είναι ταξινομημένη κατά αύξουσα σειρά εξαμήνου και κατά αύξουσα σειρά του κωδικού μαθήματος μέσα στο κάθε εξάμηνο, ΧΩΡΙΣ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΣΕΤΕ ΔΙΑΔΙΚΑΣΙΕΣ ΤΑΞΙΝΟΜΗΣΗΣ! Στο τέλος κάθε εξαμήνου θα πρέπει να εμφανίζεται ο μέσος όρος των ατόμων που πρόκειται να δώσουν εξετάσεις. Αριθμητικό ΠΑΡΑΔΕΙΓΜΑ, Ν=8. 15 2 45 49 7 190 74 8 77 91 1 120 30 1 170 72 8 71 55 7 115 77 8 70 Αποτελέσματα : ΕΞΑΜΗΝΟ : 1 μαθήματα : 30, 91 μέσος όρος: 145 (=(170+120)/2 ) ΕΞΑΜΗΝΟ : 2 μαθήματα : 15 μέσος όρος: 45 ΕΞΑΜΗΝΟ : 7 μαθήματα :49, 55 μέσος όρος: 153 (=(190+115/2 ) ΕΞΑΜΗΝΟ : 8 μαθήματα :72, 74, 77 μέσος όρος: 73 (=(71+77+70)/3) ΑΣΚΗΣΗ 24 Μία παραγωγική μονάδα κατασκευάζει εξαρτήματα που στη συνέχεια χρησιμοποιούνται για τη συναρμολόγηση προϊόντων. Ο κωδικός κάθε εξαρτήματος είναι μοναδικός και χρησιμοποιείται μόνον σε ένα από τα προϊόντα. Για κάθε εξάρτημα είναι γνωστά: 1. Κωδικός εξαρτήματος (ακέραιος αριθμός στην περιοχή [1-999]), 1. Κωδικός προϊόντος ( ακέραιος αριθμός στην περιοχή [1-10] ), 2. Πλήθος τεμαχίων του εξαρτήματος που χρησιμοποιούνται για την παραγωγή μίας μονάδας του προϊόντος ( ακέραιος αριθμός >0 ) Να γραφεί πρόγραμμα σε γλώσσα C που θα υλοποιεί τα εξής: 1. Θα εισάγει δεδομένα σε έναν πίνακα ακεραίων με 3*Ν σε πλήθος θέσεις, σύμφωνα με τα παραπάνω. Ο γνωστός αριθμός Ν>0 δηλώνει το πλήθος των εξαρτημάτων που κατασκευάζονται στην παραγωγική μονάδα. Η εισαγωγή θα γίνει αποκλειστικά και μόνο με χρήση τυχαίων αριθμών - συνάρτηση rand( ) - στα όρια που έχουν δοθεί, για κάθε τριάδα στοιχείων. ΠΡΟΣΟΧΗ!! Ο κάθε κωδικός εξαρτήματος θα πρέπει να υπάρχει μόνον μία φορά στον πίνακα!! 2. Θα εμφανίζει μία λίστα των εξαρτημάτων που κατασκευάζονται, ανά προϊόν. Η λίστα θα είναι ταξινομημένη κατά αύξουσα σειρά του κωδικού προϊόντος και κατά αύξουσα σειρά του κωδικού εξαρτήματος μέσα στο κάθε προϊόν, ΧΩΡΙΣ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΣΕΤΕ ΔΙΑΔΙΚΑΣΙΕΣ ΤΑΞΙΝΟΜΗΣΗΣ! Στο τέλος κάθε προϊόντος θα πρέπει να εμφανίζεται και το συνολικό πλήθος των τεμαχίων όλων των εξαρτημάτων του προϊόντος. ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2018-2019 9

Αριθμητικό ΠΑΡΑΔΕΙΓΜΑ, Ν=8. 15 9 4 197 3 10 514 9 7 911 4 120 305 4 17 72 3 11 770 4 5 222 3 8 Αποτελέσματα : ΠΡΟΪΌΝ : 3 ΕΞΑΡΤΗΜΑΤΑ : 72, 197, 222 σύνολο τεμαχίων: 29 ΠΡΟΪΌΝ : 4 ΕΞΑΡΤΗΜΑΤΑ :305, 770, 911 σύνολο τεμαχίων: 142 ΠΡΟΪΌΝ : 9 ΕΞΑΡΤΗΜΑΤΑ :15, 514 σύνολο τεμαχίων: 11 ΑΣΚΗΣΗ 25 Να γραφεί κώδικας σε γλώσσα C για τον παρακάτω αλγόριθμο: 1. Δημιουργία ενός θετικού τυχαίου αριθμού m : 2 m 1500 2. Εύρεση όλων των διαιρετών του m που είναι πρώτοι αριθμοί (prime numbers), βάσει του κώδικα που παρατίθεται στη συνέχεια 3. Προσδιορισμός του αριθμού n που θα είναι το γινόμενο των γνήσιων διαιρετών του αριθμού m με περιττό πλήθος εμφανίσεων. Κάθε τέτοιος γνήσιος διαιρέτης θα συμμετέχει μόνον μία φορά στον προσδιορισμό του αριθμού n. 4. Προσδιορισμός του αριθμού z= mn 5. Εύρεση του αριθμού k για τον οποίο ισχύει ότι 2 k = mn 6. Εμφάνιση των αριθμών mnk,, σύμφωνα με την προδιαγραφή του παραδείγματος. Παράδειγμα, έστω m = 90 Διαιρέτες (γνήσιοι) του 90 : 2, 3, 3, 5 Διαιρέτες με περιττό πλήθος εμφανίσεων: 2, 5 n = 2 5 = 10, z = 90 10 = 900, m= 90, n= 10, k = 30 2 k = 30 (30 = 900) (ΥΠΟΔΕΙΞΗ : Το παρακάτω τμήμα κώδικα σε γλώσσα C βρίσκει αν ένας ακέραιος και θετικός αριθμός k 2 είναι πρώτος (prime) αριθμός ). i=2; flag=0; while ((i<=k/2) && (flag==0)) { if (k%i==0) flag=1; i++; } if (flag==0) printf("number %4d is prime \n",k); ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2018-2019 10

ΑΣΚΗΣΗ 26 Θεωρείστε Ν πόλεις (Ν= γνωστό), για τις οποίες είναι γνωστές οι συντεταγμένες τους x, y ένα γνωστό ζεύγος αριθμητικών θετικών τιμών τύπου double για κάθε πόλη. Οι συντεταγμένες δημιουργούνται τυχαία στην περιοχή τιμών [0.0, 999.0] και καταχωρούνται σε έναν μονοδιάστατο αριθμητικό πίνακα που περιλαμβάνει τις συντεταγμένες για όλες τις πόλεις. Να γραφεί πρόγραμμα σε γλώσσα C που θα βρίσκει την πόλη (ή τις πόλεις) που απέχουν τη μικρότερη συνολική απόσταση από όλες τις υπόλοιπες πόλεις, με ακρίβεια 10-2. Το πρόγραμμα θα εμφανίζει τον α/α της πόλης (ή των πόλεων) καθώς και την μικρότερη συνολική απόσταση. ΠΑΡΑΔΕΙΓΜΑ για Ν=5 (2.5, 5.0), (5.1, 3.0), (1.0, 9.0), (5.4, 54.0), (5.5, 2.1) Η πόλη με την μικρότερη συνολική απόσταση, 60.81, είναι η πόλη με συντεταγμένες (2.5, 5.0) Η απόσταση δύο σημείων ( x1, y 1) και ( x2, y 2) στον δισδιάστατο καρτεσιανό χώρο είναι : ( x x ) + ( y y ) 2 2 2 1 2 1 i i ΑΣΚΗΣΗ 27 Θεωρείστε έναν μονοδιάστατο πίνακα ακεραίων θετικών αριθμών Ν θέσεων (Ν= γνωστό). 1. Να εισάγετε τιμές στον πίνακα με χρήση τυχαίων αριθμών στην περιοχή [1,99]. 2. Ορίζουμε ως pivot το στοιχείο που υπάρχει στην αρχική (1 η θέση) του πίνακα. Να διαμερίσετε τον πίνακα, δημιουργώντας έναν νέο πίνακα, σε δύο τμήματα ως εξής: ο νέος πίνακας περιλαμβάνει στο πρώτο του τμήμα, σε αύξουσα διάταξη, χωρίς να χρησιμοποιηθεί διαδικασία ταξινόμησης, όλες τις τιμές του αρχικού πίνακα που είναι μικρότερες ή και ίσες από την τιμή που υπάρχει στη θέση pivot. Στη συνέχεια, υπάρχει η τιμή της θέσης pivot και ακολουθούν, στο δεύτερο τμήμα του, οι τιμές του αρχικού πίνακα που είναι μεγαλύτερες της τιμής που υπάρχει στη θέση pivot, όπως εμφανίζονται στον αρχικό πίνακα, από αριστερά προς τα δεξιά. 3. Να εμφανίσετε τους δύο πίνακες ΠΑΡΑΔΕΙΓΜΑ για Ν=10 αρχικός πίνακας 7 2 7 14 16 3 8 1 27 5 νέος πίνακας 1 2 3 5 7 7 14 16 8 27 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2018-2019 11

ΑΣΚΗΣΗ 28 Θεωρείστε έναν πίνακα που περιέχει δυαδικά ψηφία, δηλ. 0 και 1, υπό μορφή αριθμών τύπου short int, μεγέθους Ν (Ν = γνωστό, άρτιος αριθμός και Ν>200). Να υλοποιήσετε υπό μορφή προγράμματος σε γλώσσα C την παρακάτω διαδικασία: Εξέταση στο αρχικό ήμισυ του πίνακα, του πλήθους των 1. Εάν το πλήθος αυτό είναι μονό τότε η εξέταση θα συνεχιστεί στο πρώτο ήμισυ του εξεταζόμενου μέρους του πίνακα (δηλ. στο αρχικό ¼ των στοιχείων του αρχικού πίνακα), ενώ, εάν το πλήθος αυτό είναι άρτιο, η εξέταση θα συνεχιστεί στο δεύτερο ήμισυ δηλ. στο 2 ο τέταρτο των στοιχείων του αρχικού πίνακα). Σε κάθε εξέταση (διάσχιση) μέρους του εξεταζόμενου τμήματος του πίνακα θα εμφανίζετε: τη θέση του 1 ου και του τελευταίου στοιχείου της εξεταζόμενης περιοχής και το πλήθος των 1. Η διαδικασία ολοκληρώνεται όταν το μέγεθος του εξεταζόμενου πίνακα γίνει 1 (δηλ. ελάχιστο) ΠΑΡΑΔΕΙΓΜΑ για Ν=16 1 1 0 1 0 1 1 0 0 1 0 1 0 1 1 0 BHMA 1 1 1 0 1 0 1 1 0 Πλήθος των 1 = 5, Θέση του 1 ου στοιχείου 1 η, θέση τελευταίου στοιχείου 8η 1 1 0 1 Πλήθος των 1 = 3, Θέση του 1 ου στοιχείου 1 η, θέση τελευταίου στοιχείου 4η 1 1 Πλήθος των 1 = 2, Θέση του 1 ου στοιχείου 1 η, θέση τελευταίου στοιχείου 2η 1 Πλήθος των 1 = 1, Θέση του 1 ου στοιχείου 1 η, θέση τελευταίου στοιχείου 1η, μέγεθος του πίνακα = 1, ΤΕΛΟΣ ΔΙΑΔΙΚΑΣΙΑΣ ΑΣΚΗΣΗ 29 Η απόσταση δύο σημείων 1 1 1 ( x, y, z ) και ( x2, y2, z 2) στον τρισδιάστατο καρτεσιανό χώρο είναι : ( x x ) + ( y y ) + ( z z ) 2 2 2 2 1 2 1 2 1 Δύο μονοδιάστατοι αριθμητικοί πίνακες, έστω a και b, περιέχουν τριάδες τιμών double που αντιστοιχούν στις συντεταγμένες Ν και Μ σημείων αντίστοιχα (Ν, Μ = γνωστά, ορίζονται ως σταθερές του προγράμματος). 1. Να εισάγετε δεδομένα στους πίνακες a και b μόνον με χρήση τυχαίων αριθμών (συνάρτηση rand()) στην περιοχή τιμών [0.0, 99.9]. 2. Να θεωρήσετε ένα γνωστό σημείο C στον χώρο με γνωστές συντεταγμένες xc, yc, z C (ορίζονται ως σταθερές του προγράμματος). a. Χρησιμοποιώντας όλα τα στοιχεία του πίνακα a να βρείτε τη συνολική απόσταση όλων των σημείων του πίνακα a από το σημείο C. b. Χρησιμοποιώντας όλα τα στοιχεία του πίνακα b να βρείτε ποιο σημείο του πίνακα b απέχει τη μικρότερη απόσταση από το σημείο C, με ακρίβεια υπολογισμού 10-3 (ένα σημείο προσδιορίζεται εντός του πίνακα από τη θέση που έχει στον πίνακα). Αν τα σημεία με τη μικρότερη απόσταση είναι περισσότερα από ένα να τα εμφανίσετε όλα. Στο τέλος να εμφανίσετε και την τιμή αυτής της ελάχιστης απόστασης. ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2018-2019 12

ΑΣΚΗΣΗ 30 Πίνακας ακεραίων Ν θέσεων (Ν= γνωστό και Ν>300), έστω a, περιέχει ακέραιες θετικές τιμές στην περιοχή [1,9]. Να θεωρήσετε ότι οι τιμές αυτές αντιστοιχούν σε ορισμένα χρώματα. Ένας δεύτερος πίνακας, έστω b, με πλήθος θέσεων Μ=4 περιέχει ένα συγκεκριμένο μοτίβο τεσσάρων οποιωνδήποτε χρωμάτων από αυτά που υπάρχουν στον πίνακα a. Να γραφεί πρόγραμμα σε γλώσσα C που θα βρίσκει και θα εμφανίζει: Σε ποιες θέσεις του πίνακα a υπάρχει το μοτίβο που περιέχεται στον πίνακα b. Το πρόγραμμα θα πρέπει να εμφανίζει, για κάθε εμφάνιση του συγκεκριμένου μοτίβου, τη θέση έναρξης του μοτίβου και τη θέση πέρατος του μοτίβου ΠΑΡΑΔΕΙΓΜΑ Πίνακας a, με Ν = 21 Πίνακας b: 2 6 7 8 1 4 9 4 3 7 8 1 4 5 5 7 1 8 3 2 9 7 8 1 4 ΑΠΟΤΕΛΕΣΜΑΤΑ 1 η εμφάνιση : έναρξη θέση 3, πέρας θέση 6 2 η εμφάνιση : έναρξη θέση 10, πέρας θέση 13 ΑΣΚΗΣΗ 31 1. Να δημιουργηθεί αριθμητικός πίνακας ακεραίων, Ν θέσεων (Ν = γνωστό και Ν>100), που θα περιέχει τριψήφιους τυχαίους ακέραιους θετικούς αριθμούς (χρήση της συνάρτησης rand() ). 2. Για κάθε στοιχείο του πίνακα να βρείτε το άθροισμα των διαιρετών του εκτός από τον ίδιο τον αριθμό (δηλ. στο άθροισμα των διαιρετών δεν θα πρέπει να περιλαμβάνεται ο ίδιος ο αριθμός) και χρησιμοποιώντας κατάλληλα τον παρακάτω κώδικα προγράμματος σε γλώσσα C, που βρίσκει εάν ένας θετικός ακέραιος αριθμός είναι πρώτος αριθμός (prime number), να δημιουργήσετε έναν νέο πίνακα που θα περιέχει όλα τα στοιχεία του αρχικού πίνακα δεδομένων για καθένα από τα οποία το άθροισμα των διαιρετών του είναι πρώτος (prime) αριθμός. Τα στοιχεία του νέου πίνακα θα είναι ταξινομημένα σε αύξουσα διάταξη, χωρίς να χρησιμοποιήσετε κάποια μέθοδο ταξινόμησης. (ΥΠΟΔΕΙΞΗ : Ο πρώτος prime αριθμός είναι το 2). ΠΑΡΑΔΕΙΓΜΑ: Αρχικός πίνακας για Ν=8 69 55 47 88 65 4 32 82 αριθμός διαιρέτες άθροισμα prime 69 1, 3, 23 27 ΟΧΙ 55 1, 5, 11 17 ΝΑΙ 47 1 1 ΟΧΙ 88 1, 2, 4, 8, 11, 22, 44 92 ΟΧΙ 65 1, 5, 13 19 ΝΑΙ 4 1, 2 3 ΝΑΙ 32 1, 2, 4, 8, 16 31 ΝΑΙ 82 1, 2, 41 44 ΟΧΙ Νέος πίνακας, ταξινομημένος 4 32 55 65 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2018-2019 13

#include <stdio.h> int n, i, c = 0; void main() { printf("enter any number n:"); scanf_s("%d", &n); for (i = 1; i <= n; i++) { if (n % i == 0) c++; } if (c == 2) printf("%5d is a Prime number\n",n); else printf("%5d is not a Prime number\n",n); } ΑΣΚΗΣΗ 32 1. Να δημιουργηθεί αριθμητικός πίνακας ακεραίων, Ν θέσεων (Ν = γνωστό και Ν>20), που θα περιέχει τριψήφιους τυχαίους ακέραιους θετικούς αριθμούς (χρήση της συνάρτησης rand() ) στην περιοχή [1, 999]. 2. Για κάθε στοιχείο του πίνακα να βρείτε τους διαιρέτες του που είναι πρώτοι (prime) χρησιμοποιώντας κατάλληλα τον παρακάτω κώδικα προγράμματος σε γλώσσα C, που βρίσκει εάν ένας θετικός ακέραιος αριθμός είναι πρώτος αριθμός (prime number). Να εισάγετε όλους αυτούς τους διαιρέτες που είναι πρώτοι (prime), όλων των στοιχείων του πίνακα, μαζί με τη συχνότητα εμφάνισής τους, σε έναν νέο πίνακα, σε ζεύγη. Κάθε τέτοιο ζεύγος θα αποτελείται από τον διαιρέτη και τη συχνότητα εμφάνισής του. Τα στοιχεία του νέου πίνακα θα είναι ταξινομημένα σε αύξουσα διάταξη του πρώτου στοιχείου (δηλ. του διαιρέτη) κάθε ζεύγους, χωρίς να χρησιμοποιήσετε κάποια μέθοδο ταξινόμησης. (ΥΠΟΔΕΙΞΗ : Ο πρώτος prime αριθμός είναι το 2). ΠΑΡΑΔΕΙΓΜΑ: Αρχικός πίνακας για Ν=5 2 84 63 62 15 αριθμός διαιρέτες 2 2 84 2, 3, 4, 6, 7, 12, 14, 21, 28, 42, 84 63 3, 7, 9, 21, 63 62 2, 31, 62 15 3, 5, 15 Οι διαιρέτες που είναι prime, με τις συχνότητές του είναι (ζεύγη) : (2,3), (3,3), (5,1), (7,2), (31,1) Νέος πίνακας ζευγών, ταξινομημένος 2 3 3 3 5 1 7 2 31 1 #include <stdio.h> int n, i, c = 0; void main() { printf("enter any number n:"); scanf_s("%d", &n); for (i = 1; i <= n; i++) { if (n % i == 0) c++; } if (c == 2) printf("%5d is a Prime number\n",n); else printf("%5d is not a Prime number\n",n); } ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2018-2019 14

ΑΣΚΗΣΗ 33 Αριθμητικός πίνακας ακεραίων περιέχει N ζεύγη τιμών (N = γνωστό και Ν>50) που αντιστοιχούν στην ημερήσια παραγόμενη ενέργεια (θετικές ακέραιες τιμές στην περιοχή [0,999] ) M διαφορετικών ανεμογεννητριών με κωδικούς από 1 έως και Μ (Μ= γνωστό και 1<=Μ<=20), για τις ημέρες του ιδίου έτους. Κάθε κωδικός ανεμογεννήτριας μπορεί να εμφανίζεται περισσότερες από μία φορές στον πίνακα. Μικρό παράδειγμα για Ν=8 και Μ=3 (δηλ. κωδικοί ανεμογεννητριών 1, 2 και 3) : 450 2 135 1 500 1 200 3 560 2 450 1 700 2 250 3 Να γραφεί πρόγραμμα σε γλώσσα C που: 1. Θα εισάγει τυχαία δεδομένα στον πίνακα, με χρήση της συνάρτησης rand(), στα όρια των τιμών που έχουν δοθεί. 2. Θα βρίσκει και θα εισάγει σε ένα νέο πίνακα τη συνολική ετήσια παραγόμενη ενέργεια για κάθε ανεμογεννήτρια, υπό μορφή ζευγών (κωδικός ανεμογεννήτριας, συνολική ετήσια παραγόμενη ενέργεια). Οι κωδικοί ανεμογεννητριών θα καταχωρούνται στον νέο πίνακα σε αύξουσα διάταξη. Ο νέος πίνακας για το ανωτέρω παράδειγμα θα είναι: 1 1085 2 1710 3 450 3. Θα εμφανίζει στην οθόνη τα στοιχεία του νέου πίνακα, ένα ζεύγος τιμών σε κάθε γραμμή της οθόνης, καθώς και το γενικό σύνολο, ως εξής: ΑΝΕΜΟΓΕΝΝΗΤΡΙΑ : 1 ΣΥΝΟΛΟ : 1085 ΑΝΕΜΟΓΕΝΝΗΤΡΙΑ : 2 ΣΥΝΟΛΟ : 1710 ΑΝΕΜΟΓΕΝΝΗΤΡΙΑ : 3 ΣΥΝΟΛΟ : 450 ΓΕΝΙΚΟ ΣΥΝΟΛΟ : 3145 ΑΣΚΗΣΗ 34 1. Να δημιουργηθεί αριθμητικός πίνακας ακεραίων, Ν θέσεων (Ν = γνωστό και Ν>50), που θα περιέχει τετραψήφιους τυχαίους ακέραιους θετικούς αριθμούς, πεδίο τιμών [1000, 9999] (χρήση της rand() ). 2. Να βρείτε και να εμφανίσετε πόσοι και ποιοι από αυτούς τους αριθμούς είναι πρώτοι (primes), χρησιμοποιώντας κατάλληλα τον παρακάτω κώδικα σε γλώσσα C. (Ο πρώτος prime αριθμός είναι το 2) 3. Για κάθε στοιχείο του πίνακα να βρείτε και να εμφανίσετε, όπως δείχνει το παράδειγμα: a. τους γνήσιους διαιρέτες του που είναι prime (πρώτοι) αριθμοί, χρησιμοποιώντας κατάλληλα τον παρακάτω κώδικα. Κάθε γνήσιος prime διαιρέτης θα ληφθεί μόνον μία φορά. b. το πλήθος αυτών των γνήσιων prime διαιρετών. 4. Παράλληλα με το βήμα 3, να δημιουργήσετε έναν νέο πίνακα που θα περιέχει τις συχνότητες αυτών των γνήσιων prime διαιρετών. Τα στοιχεία του νέου πίνακα θα είναι ταξινομημένα σε αύξουσα διάταξη, χωρίς να χρησιμοποιήσετε κάποια μέθοδο ταξινόμησης. (ΥΠΟΔΕΙΞΗ : Ο πρώτος prime αριθμός είναι το 2). 5. Στο τέλος να εμφανίσετε τον ταξινομημένο πίνακα συχνοτήτων, υπό τη μορφή ζευγών (αριθμός, συχνότητα), όπως φαίνεται στο παράδειγμα. ΠΑΡΑΔΕΙΓΜΑ: Αρχικός πίνακας για Ν=6 7686 5533 4777 3329 7580 9246 Primes : 3329 ΠΛΗΘΟΣ primes 1 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2018-2019 15

αριθμός prime διαιρέτες πλήθος 7686 2, 3, 7, 61 4 5533 11, 503 2 4777 17, 281 2 3329 0 7580 2, 5, 379 3 9246 2, 3, 23, 67 4 Νέος πίνακας συχνοτήτων, ταξινομημένος 2,3, 3,2, 5,1, 7,1, 11,1, 17,1, 23,1, 61, 1, 67,1, 281,1, 379,1, 503, 1 #include <stdio.h> int n, i, c = 0; void main() { printf("enter any number n:"); scanf_s("%d", &n); for (i = 1; i <= n; i++) { if (n % i == 0) c++; } } if (c == 2) printf("%5d is a Prime number\n",n); else printf("%5d is not a Prime number\n",n); ΑΣΚΗΣΗ 35 Αριθμητικός πίνακας θετικών ακεραίων αριθμών περιέχει N τριάδες τιμών (N = γνωστό και Ν>50) για τις ημέρες του ιδίου έτους. Κάθε τριάδα περιλαμβάνει: Τον κωδικό προϊόντος με κωδικούς από 1 έως και Μ (Μ= γνωστό και 1<=Μ<=20) Την ημερομηνία παραγωγής στη μορφή ΗΗΜΜ (ΗΗ=ημέρα, ΜΜ=μήνας), όπου ΗΗ από 1 έως και 25 και ΜΜ από 1 έως και 12 Την ποσότητα παραγωγής Τα στοιχεία του πίνακα δεν είναι ταξινομημένα ως προς κάποιο από τα στοιχεία των τριάδων. Κάθε κωδικός προϊόντος μπορεί να εμφανίζεται περισσότερες από μία φορές στον πίνακα. Μικρό παράδειγμα για Ν=6 : 4 1403 200 19 2505 300 15 1102 400 19 1004 400 2 704 1000 15 1503 700 Να γραφεί πρόγραμμα σε γλώσσα C που: 1. Θα εισάγει τυχαία δεδομένα στον πίνακα, με χρήση της συνάρτησης rand(), στα όρια των τιμών που έχουν δοθεί. 2. Θα βρίσκει και θα εμφανίζει πόσοι και ποιοι κωδικοί προϊόντων υπάρχουν στον πίνακα (π.χ. στο παράδειγμα υπάρχουν οι κωδικοί 2, 4, 15, 19). 3. Θα βρίσκει και θα εμφανίζει τα μηνιαία σύνολα παραγωγής για όλα τα προϊόντα που υπάρχουν στον πίνακα (δηλ. 12 τιμές). 4. Θα δημιουργεί ένα νέο πίνακα που θα περιλαμβάνει υπό μορφή ζευγών και σε αύξουσα διάταξη του κωδικού προϊόντος, το σύνολο της παραγωγής ανά κωδικό προϊόντος. Ο νέος πίνακας για το ανωτέρω παράδειγμα θα είναι: 2 1000 4 200 15 1100 19 700 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2018-2019 16

5. Θα εμφανίζει στην οθόνη τα στοιχεία του νέου πίνακα, ένα ζεύγος τιμών σε κάθε γραμμή της οθόνης, καθώς και το γενικό σύνολο, ως εξής: ΚΩΔΙΚΟΣ: 2 ΣΥΝΟΛΟ : 1000 ΚΩΔΙΚΟΣ : 4 ΣΥΝΟΛΟ : 200 ΚΩΔΙΚΟΣ : 15 ΣΥΝΟΛΟ : 1100 ΚΩΔΙΚΟΣ : 19 ΣΥΝΟΛΟ : 700 ΓΕΝΙΚΟ ΣΥΝΟΛΟ : 3000 ΑΣΚΗΣΗ 36 1. Να δημιουργηθεί αριθμητικός πίνακας ακεραίων, Ν θέσεων (Ν = γνωστό και Ν>30), που θα περιέχει τριψήφιους τυχαίους ακέραιους θετικούς αριθμούς, πεδίο τιμών [100, 999] (χρήση της rand() ). 2. Να βρείτε και να εμφανίσετε πόσοι και ποιοι από αυτούς τους αριθμούς είναι πρώτοι (primes), χρησιμοποιώντας κατάλληλα τον παρακάτω κώδικα σε γλώσσα C. (Ο πρώτος prime αριθμός είναι το 2). 3. Για κάθε στοιχείο του πίνακα να βρείτε και να εμφανίσετε, όπως δείχνει το παράδειγμα (ΜΟΝΟΝ ΤΑ ΣΤΟΙΧΕΙΑ ΤΩΝ ΣΤΗΛΩΝ 1, 3 & 4, χωρίς τις επικεφαλίδες των στηλών): a. Τον μεγαλύτερο prime γνήσιο διαιρέτη του, χρησιμοποιώντας κατάλληλα τον παρακάτω κώδικα. b. Το πλήθος των γνήσιων, μη πρώτων (primes), διαιρετών του. 4. Παράλληλα με το βήμα 3, να δημιουργήσετε έναν νέο πίνακα που θα περιέχει τις συχνότητες αυτών των μεγαλύτερων primes γνήσιων διαιρετών του βήματος 3a. Τα στοιχεία του νέου πίνακα θα είναι ταξινομημένα σε αύξουσα διάταξη, χωρίς να χρησιμοποιήσετε κάποια μέθοδο ταξινόμησης. 5. Στο τέλος να εμφανίσετε τον ταξινομημένο πίνακα συχνοτήτων, υπό τη μορφή ζευγών (αριθμός, συχνότητα) που φαίνεται στο παράδειγμα. ΠΑΡΑΔΕΙΓΜΑ: Αρχικός πίνακας για Ν=5 369 730 449 405 614 Primes : 449 ΠΛΗΘΟΣ primes 1 αριθμός ΓΝΗΣΙΟΙ ΔΙΑΙΡΕΤΕΣ (με έντονο χρώμα είναι οι rimes) Μεγαλύτερος γνήσιος prime διαιρέτης Πλήθος μη πρώτων διαιρετών 369 3, 9, 41, 123 41 2 730 2, 5, 10, 73, 146, 365 73 3 449 ΕΙΝΑΙ prime 0 405 3, 5, 9, 15, 27, 45, 81, 135 5 6 614 2, 307 307 0 Νέος πίνακας συχνοτήτων, ταξινομημένος: 5,1, 41,1, 73,1, 307,1 #include <stdio.h> int n, i, c = 0; void main() { printf("enter any number n:"); scanf_s("%d", &n); for (i = 1; i <= n; i++) { if (n % i == 0) c++; } } if (c == 2) printf("%5d is a Prime number\n",n); else printf("%5d is not a Prime number\n",n); ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2018-2019 17