You are on page 1of 4

#include <stdio.

h>
#include <stdlib.h>

#define TRUE 1
#define FALSE 0

// Δήλωση δομής με όνομα fraction και τύπου δομής με όνομα fractionType.


// Τα μέλη της δομής έχουν ονόματα numerator, denominator.

typedef struct fraction


{
int numerator;
int denominator;
} fractionType;

//Ορισμός πρωτοτύπων συναρτήσεων


// int readFractions(διάταξη κλασμάτων, αριθμός κλασμάτων)
// void printMultiplication(διάταξη κλασμάτων, αριθμός κλασμάτων,
αποτέλεσμα)
// Δείκτης σε fractionType multiply(διάταξη κλασμάτων, αριθμός κλασμάτων,
αριθμητής, παρονομαστής)
// int menu(void)

int readFractions(fractionType *listOfFractions, int numOfFractions);


void printMultiplication (fractionType *listOfFractions, int
numOfFractions, fractionType *result);
fractionType *multiply(fractionType *listOfFractions, int numOfFractions,
int *numerator, int *denominator);
int menu(void);

int main(void)
{

//Δήλωση μεταβλητών

int nFractions;

fractionType *listOfFractions = NULL;


fractionType *result;
int numerator, denominator;
int read = FALSE;
int opcode; //operation code

//Διάβασμα επιθυμητού αριθμού κλασμάτων από την είσοδο

...
//Δέσμευση μνήμης και έλεγχος για την απόδοσή της.

...

do
{
// Δημιουργία menu
opcode = menu();

if (opcode == 1)
{
//κλήση readFractions

read = readFractions(listOfFractions, nFractions);


}
else if (opcode == 2)
{
//έλεγχος αν υπάρχουν στοιχεία κλασμάτων

if (!read)
{
printf("No data found!!!\n");
continue;
}

//κλήση multiply

result = multiply(listOfFractions, nFractions, &numerator,


&denominator);

//έλεγχος κενού αποτελέσματος

...
}
else if (opcode == 3)
{
//έλεγχος αν υπάρχουν στοιχεία κλασμάτων και αποτέλεσμα
πολλαπλασιασμού

...

//κλήση printing

printMultiplication(listOfFractions, nFractions, result);


}
else
{
//απελευθέρωση δεσμευμένης μνήμης και έξοδος

...
}
}
while(TRUE);
}

//Δήλωση συναρτήσεων
// void readFractions(διάταξη κλασμάτων, αριθμός κλασμάτων)
// void printMultiplication(διάταξη κλασμάτων, αριθμός κλασμάτων,
αποτέλεσμα)
// Δείκτης σε fractionType multiply(διάταξη κλασμάτων, αριθμός κλασμάτων,
αριθμητής, παρονομαστής)
// int menu(void)

int readFractions(fractionType *listOfFractions, int numOfFractions)


{
int done = FALSE;

//διάβασμα και έλεγχος παρονομαστή

...
done = TRUE;

return done;

void printMultiplication (fractionType *listOfFractions, int


numOfFractions, fractionType *result)
{
//εκτύπωση κατά τα ζητούμενα

...
}

fractionType *multiply(fractionType *listOfFractions, int numOfFractions,


int *numerator, int *denominator)
{
fractionType *result;
*numerator = *denominator = 1;

//πολλαπλασιασμός κατά τα ζητούμενα


//call by reference

...

//δέσμευση μνήμης για το αποτέλεσμα και έλεγχος

...

//επιστροφή δομής αποτελέσματος

return result;
}

int menu(void)
{
int operation;

do
{
//επιλογές menu
...
}
while (...);
return operation;
}

You might also like