ΤΕΙ Θεσσαλίας, Τμήμα Μηχανικών Πληροφορικής ΤΕ ΠΡΟΓ/ΜΟΣ ΗΥ

Download Report

Transcript ΤΕΙ Θεσσαλίας, Τμήμα Μηχανικών Πληροφορικής ΤΕ ΠΡΟΓ/ΜΟΣ ΗΥ

ΤΕΙ Θεσσαλίας, Τμήμα Μηχανικών Πληροφορικής ΤΕ
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ HY
ΕΡΓΑΣΤΗΡΙΟ 8
ΑΣΚΗΣΕΙΣ (με ενδεικτική λύση)
1) Γράψτε ένα πρόγραμμα (χρησιμοποιώντας μία συνάρτηση με όνομα
dif_days()) το οποίο να υπολογίζει και επιστρέφει την διαφορά δύο
ημερομηνιών σε ημέρες (χρησιμοποιήστε την υπόθεση ότι όλα τα έτη έχουν
360 ημέρες και ότι ο κάθε μήνας αποτελείται από 30 ημέρες). H ημερομηνία
να ορισθεί σαν δομή τριών ακεραίων που να αναπαριστούν ημέρα, μήνα και
έτος
#include <stdio.h>
struct date{
int month;
int day;
int year;
};
int dif_days(struct date, struct date);
int main()
{
struct date a, b;
int dif;
printf("\nΔώσε μία ημερομηνία (μήνας ημέρα χρόνος):");
scanf("%d%d%d", &a.month, &a.day, &a.year);
printf("\nΔώσε και μία μεταγενέστερη ημηρομηνία (μήνας ημέρα χρόνος):");
scanf("%d%d%d", &b.month, &b.day, &b.year);
dif = dif_days(a, b);
printf("\nΗ διαφορά (σε ημέρες) μεταξύ αυτών των δύο ημερομηνιών είναι:
%d\n\n", dif);
return 0;
}
int dif_days(struct date X, struct date Y)
{
int d;
if (Y.day < X.day) {
Y.day += 30;
Y.month --;
}
if (Y.month < X.month) {
Y.month +=12;
Y.year --;
}
d = (Y.year-X.year)*360;
d += (Y.month-X.month)*30;
d += Y.day-X.day;
ΠΡΟΓ/ΜΟΣ ΗΥ-ΕΡΓ. 8
Ηλίας Κ. Σάββας
1
ΤΕΙ Θεσσαλίας, Τμήμα Μηχανικών Πληροφορικής ΤΕ
return d;
}
2) Χρησιμοποιώντας την δομή:
struct mon_days {
char name[10];
int days;
};
/* όνομα μήνα */
/* πλήθος ημερών */
Ορίστε ένα πίνακα 12 τέτοιων δομών. Ονομάστε τον πίνακα array_convert[],
και αρχικοποιήστε τον με τα ονόματα των 12 μηνών μαζί με τις αντίστοιχες
ημέρες τους. Τέλος, εκτυπώστε τον πίνακα.
#include <stdio.h>
#define N 12
struct mon_days {
char name[10];
int days;
};
int main()
{
struct mon_days convert[N] = {
{ "Ιαν", 31},
{ "Φεβ", 28},
{ "Μαρ", 31},
{ "Απρ", 30},
{ "Μαι", 31},
{ "Ιουν", 30},
{ "Ιουλ", 31},
{ "Αυγ", 31},
{ "Σεπ", 30},
{ "Οκτ", 31},
{ "Νοε", 30},
{ "Δεκ", 31}
};
int i;
printf("\n Μήνας\t\tΗμέρες");
printf("\n====================");
for (i=0; i<N; i++)
printf("\n%2d. %s\t\t %d", i+1, convert[i].name, convert[i].days);
printf("\n\n");
return 0;
}
ΠΡΟΓ/ΜΟΣ ΗΥ-ΕΡΓ. 8
Ηλίας Κ. Σάββας
2
ΤΕΙ Θεσσαλίας, Τμήμα Μηχανικών Πληροφορικής ΤΕ
3) Ορίστε μία δομή με όνομα country και μέλη που να αναπαριστούν το όνομα,
τον πληθυσμό και την πρωτεύουσα μίας χώρας. Στην συνέχεια, γράψτε ένα
πρόγραμμα το οποίο να εισάγει (από τον χρήστη) τα στοιχεία 10 χωρών και να
εκτυπώνει τα στοιχεία της χώρας με τον μεγαλύτερο πληθυσμό.
#include <stdio.h>
#define N 3
struct country {
char name[20];
int popul;
char capital[20];
};
/* όνομα χώρας */
/* πληθυσμός */
/* πρωτεύουσα */
int main()
{
struct country C[N];
int i, max_index;
for (i=0; i<N; i++) {
printf("\nΕισαγωγή του ονόματος, πληθυσμού και πρωτεύουσας της %d
χώρας: ", i+1);
scanf("%s%d%s", &C[i].name, &C[i].popul, &C[i].capital);
}
max_index = 0;
for (i=1; i<N; i++)
if (C[i].popul > C[max_index].popul)
max_index = i;
printf("\n\n H μεγαλύτερη χώρα είναι η: %s", C[max_index].name);
printf("\n\n με πληθυσμό %d", C[max_index].popul);
printf("\n\n και πρωτεύουσα %s\n\n", C[max_index].capital);
return 0;
}
ΠΡΟΓ/ΜΟΣ ΗΥ-ΕΡΓ. 8
Ηλίας Κ. Σάββας
3