bxenos Δημοσ. 28 Νοεμβρίου 2009 Δημοσ. 28 Νοεμβρίου 2009 Αν τους πινακες left/middle/right τους έχεις μονο για την εκτυπωση, καταργησε τους. Πρωτη ιδεα (δοκιμαστηκε) για να δεις μια λυση: > int count(stack p){ //ποσα στοιχεια εχει η στοιβα ... } int item(stack p,int n){ //επεστρεψε το n στοιχειο της στοιβας ... } void print(stack p[3]){ int L=count(p[0]),M=count(p[1]),R=count(p[2]); int MAX = max(L,max(M,R)); int i; //πρεπει να τυπωσουμε MAX γραμμες για να χωρεσουν στην οθονη ολα τα //στοιχεια απο τις στοιβες μας (αν θελεις μπορεί να είναι σταθερος αριθμος πχ s, αλλα //εδω το προτιμισα να ειναι δυναμικα υπολογιζομενος) for(i=0;i<MAX;i++){ //η στηλη left θα αρχισει να τυπωνει items απο τη γραμμη MAX-L εως την MAX //ομοιως και οι middle,right if(i είναι μεταξυ MAX-L και MAX) print_disk( item(p[0], i-(MAX-L)) );//βρες το στοιχειο της στοιβας και τυπωσε το else print_disk(0); //middle ........ομοιως //right ........ομοιως putchar('\n'); } } με τον δοκιμαστικο κωδικα > void ymain(void){ stack stoiva[3] = {0,0,0}; Push(&stoiva[0],4); Push(&stoiva[0],3); Push(&stoiva[0],2); Push(&stoiva[0],1); Push(&stoiva[1],2); Push(&stoiva[1],1); Push(&stoiva[2],3); Push(&stoiva[2],2); Push(&stoiva[2],1); print(stoiva); } παράγει το αποτέλεσμα > _._ . . __.__ . _._ ___.___ _._ __.__ ____.____ __.__ ___.___
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.