απιστευτος Δημοσιεύτηκε Ιούνιος 11, 2007 #1 Κοινοποίηση Δημοσιεύτηκε Ιούνιος 11, 2007 πως σε ενα μονοδιαστατο πινακα 30 στοιχειων στη c με αρχικες τιμες 1,3,5 μπορω να υπολογισω τους υπολοιπους 27 ξεροντας οτι ο καθε επομενος ειναι το αθροισμα ολων των προηγουμενων?δηλαδη ο επομενος του 5 ειναι το 9(1+3+5=9) το 18 και παει λεγοντας.εκτος απ τον πινακα εχω δηλωσει και αλλη μια μεταβλητη αλλα δε ξερω στην επαναληψη τι ακριβως τιμη θα της βαλω για να γινει η καταλληλη πραξη με τον πινακα..... Link to comment Share on other sites More sharing options...
Qlim4X Ιούνιος 11, 2007 #2 Κοινοποίηση Ιούνιος 11, 2007 Αρχική απάντηση από απιστευτος πως σε ενα μονοδιαστατο πινακα 30 στοιχειων στη c με αρχικες τιμες 1,3,5 μπορω να υπολογισω τους υπολοιπους 27 ξεροντας οτι ο καθε επομενος ειναι το αθροισμα ολων των προηγουμενων?δηλαδη ο επομενος του 5 ειναι το 9(1+3+5=9) το 18 και παει λεγοντας.εκτος απ τον πινακα εχω δηλωσει και αλλη μια μεταβλητη αλλα δε ξερω στην επαναληψη τι ακριβως τιμη θα της βαλω για να γινει η καταλληλη πραξη με τον πινακα..... απ οτι καταλαβα κανετε recursion.....παρε ενα λινκ για διαβασμαhttp://en.wikipedia.org/wiki/Recursionλογο ωρας δεν μπορω να σκεφτω... αυριο μπορει αν την εχω κανει.... Link to comment Share on other sites More sharing options...
Angel Ιούνιος 12, 2007 #3 Κοινοποίηση Ιούνιος 12, 2007 Φίλε μου δε θυμάμαι καλά C, στα γράφω σε universal προγραμματισμό, κάνε μια μεταγλώττιση και είσαι έτοιμος, αν λόγω της ώρας έκανα λαθάκι σόρι, θα το κοιτάξω και το πρωί πάλι!Ουσιαστικά προσθέτεις όλους τους προηγούμενους ελέγχοντας πότε τους έβαλες όλους. Μπορείς να το λύσεις και αλλιώς πολύ πιο εύκολα αλλά μπακάλικα. Αν παρατηρήσεις κάθε επόμενος είναι ο διπλάσιος του προηγούμενου. 9-18-36 κλπ... ’ρα βάζεις και στη θέση 4 το 9 και από εκεί και πέρα απλά λές ΠΙΝΑΚΑΣ(Ι)=ΠΙΝΑΚΑΣ(Ι-1)*2 και τέλος. Εγώ πάντως προτιμώ αυτό:ΠΙΝΑΚΑΣ(1)=1ΠΙΝΑΚΑΣ(2)=3ΠΙΝΑΚΑΣ(3)=5ΓΙΑ I=4 ΜΕΧΡΙ 30 J=I-1 ΟΣΟ J>0 ΕΠΑΝΑΛΑΒΕ ΠΙΝΑΚΑΣ(Ι)=ΠΙΝΑΚΑΣ(Ι)+ΠΙΝΑΚΑΣ(J) J=J-1 ΤΕΛΟΣ ΕΠΑΝΑΛΗΨΗΣΤΕΛΟΣ ΕΠΑΝΑΛΗΨΗΣ Link to comment Share on other sites More sharing options...
Angel Ιούνιος 12, 2007 #4 Κοινοποίηση Ιούνιος 12, 2007 Απίστευτε δε μας είπες, καλύφθηκες; Link to comment Share on other sites More sharing options...
Qlim4X Ιούνιος 12, 2007 #5 Κοινοποίηση Ιούνιος 12, 2007 public static void main(String[] args) { int[] table = new int[30]; int j; table[0] = 1; table[1] = 3; table[2] = 5; for(int i=3;i < table.length;i++) { j=i-1; while(j>0) { table[i] = table[i] + table[j]; j--; } } System.out.println(table[29]); } αυτο εδω ειναι οπως το ειπε ο αποπανο σε java σε c θελει 1-2 αλαγες για να παιξει Link to comment Share on other sites More sharing options...
tolis861416003225 Ιούνιος 12, 2007 #6 Κοινοποίηση Ιούνιος 12, 2007 λοιπον, εγα θα εγραφα: array[4]=9 */ ε αυτο το γραφω κατευθειαν απο μονος μου διοτι τα επομενα στοιχεια το 5 και μετα δλδ εχουν περιεχομενο διπλασιο του προηγουμενου τους κατι που δεν ισχυει για το [4] οποτε και το γραφω απευθειας αντιο να γραψω κοδικα ν ατο υπολογιζει και δεν εχει και νοημα δλδ...*/for( i=5; i<29; i++){array = 2*array[i-1];}ε και μετα τυπωνεις το πινακα ή ξερω τι αλλο σας ζητανε.... Link to comment Share on other sites More sharing options...
Angel Ιούνιος 12, 2007 #7 Κοινοποίηση Ιούνιος 12, 2007 Απλά μπορεί ο καθηγητής να το θέλει "κανονικά" και όχι "μάγκικα". Το αποτέλεσμα φυσικά είναι ακριβώς το ίδιο. Link to comment Share on other sites More sharing options...
AGRIMI Ιούνιος 12, 2007 #8 Κοινοποίηση Ιούνιος 12, 2007 D.J.AleXXX_gr ολόσωστο. κανε αντιγραφή απιστευτος. θα περασεις το μαθημα :):) Link to comment Share on other sites More sharing options...
tolis861416003225 Ιούνιος 12, 2007 #9 Κοινοποίηση Ιούνιος 12, 2007 μα το μαγκικο ειναι καλητερο! αν μπορεις να κανεις την ιδια δουλεια πιο γρηγορα και με μικροτερο κοπο ο αλγοριθμος ειναι καλητερος. ειναι δλδ καλυτερο να κανεις συνεχεια προσθεσεις ολα τα προηγουμενα στηχεια το ιδιο εναν πολαπλασιασμο????? τι λεμε τωρα? Link to comment Share on other sites More sharing options...
Qlim4X Ιούνιος 12, 2007 #10 Κοινοποίηση Ιούνιος 12, 2007 Αρχική απάντηση από AGRIMI D.J.AleXXX_gr ολόσωστο. κανε αντιγραφή απιστευτος. θα περασεις το μαθημα :):) δεν σε πιανο αλλα οκ...... Αρχική απάντηση από tolis86 μα το μαγκικο ειναι καλητερο! αν μπορεις να κανεις την ιδια δουλεια πιο γρηγορα και με μικροτερο κοπο ο αλγοριθμος ειναι καλητερος. ειναι δλδ καλυτερο να κανεις συνεχεια προσθεσεις ολα τα προηγουμενα στηχεια το ιδιο εναν πολαπλασιασμο????? τι λεμε τωρα? νομιζω μπορει να γινει και με recursion αλλα δεν θα ειναι τοσο ευκολο κατι σε Fibonacci μου θυμιζει..... Link to comment Share on other sites More sharing options...
Wizard! Ιούνιος 12, 2007 #11 Κοινοποίηση Ιούνιος 12, 2007 Στην ακολουθία Fibonacci, ο κάθε αριθμός είναι το άθροισμα των δύο προηγούμενων. Εδώ έχουμε παρόμοια ακολουθία, που είναι το άθροισμα όλων των προηγούμενων. Στις περισσότερες περιπτώσεις μιά recursive είναι καλύτερη, αρκεί να μην τείθεται θέμα μνήμης. Η κάθε recursive καταναλώνει αρκετούς πόρους για να εκτελεστεί και αν μιλάμε για απειρίζουσα ακολουθία, σίγουρα θα πετάξει out of memory κάποια στιγμή Link to comment Share on other sites More sharing options...
απιστευτος Ιούνιος 12, 2007 Author #12 Κοινοποίηση Ιούνιος 12, 2007 ΟΚ παιδια ευχαριστω για την βοηθεια.βλεπω σας αρεσε το θεμα....απλως εκανα περιπου αυτο που εκανε ο angel με τη διαφορα οτι για το 9 επρεπε να βαλω ξεχωριστη επαναληψη που να το υπολογιζει γιατι δε συμβαδιζε με τους υπολοιπους.οριστε:#include<stdio.h>#include<stdlib.h>main() { int numbs[30]={1,3,5}; int i; for (i=0; i<3; i++) { printf("numbs[%d]=%d\n",i,numbs); } for (i=3; i<4; i++) { numbs=((numbs[i-1]*2)-1); printf("numbs[%d]=%d\n",i,numbs); } for (i=4; i<31; i++) { numbs=numbs[i-1]*2; printf("numbs[%d]=%d\n",i,numbs); } system("PAUSE"); } Link to comment Share on other sites More sharing options...
Angel Ιούνιος 12, 2007 #13 Κοινοποίηση Ιούνιος 12, 2007 Αφού διαλέγεις τον "μάγκικο" τρόπο φυσικά και το 9άρι πρέπει να το βάλεις ξεχωριστά. Από εκεί και πέρα όλα συνοψίζονται στο numbs=numbs[i-1]*2;!!Αν και νομίζω ότι παίρνει αρκετό fine tuning ο κώδικας, well done! Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.