Krokodilos Δημοσ. 16 Ιουνίου 2008 Δημοσ. 16 Ιουνίου 2008 Σε γλωσσα C να γραφει προγραμμα που να υπολογιζει το γινομενο 100·99·98·97·...·3·2·1 και να το εμφανιζει στην οθονη, αλλα ο κωδικας να εχει λιγοτερους απο 130 χαρακτηρες(τα κενα δεν μετρανε). (Η δηλωση #include <stdio.h> για να μπορεσει να χρησιμοποιησει το προγραμμα την printf ωστε να εμφανισει στην οθονη το αποτελεσμα, δεν συμπεριλαμβανεται στους μετρουμενους χαρακτηρες του κωδικα.)
clevercitizen Δημοσ. 16 Ιουνίου 2008 Δημοσ. 16 Ιουνίου 2008 { for (int x=100; x==2;x--) x=x*(x-1) } printf x /* H kapws etsi */ Δέν είμαι σίγουρος αν τα έχω γράψει 100% σωστά, έχω να ασχοληθώ με C 1 χρόνο...
Krokodilos Δημοσ. 16 Ιουνίου 2008 Μέλος Δημοσ. 16 Ιουνίου 2008 { for (int x=100; x==2;x--) x=x*(x-1) } printf x /* H kapws etsi */ Δέν είμαι σίγουρος αν τα έχω γράψει 100% σωστά, έχω να ασχοληθώ με C 1 χρόνο... Διορθωνοντας το λιγο: main() { for (int x=100; x==2;x--) x=x*(x-1); printf("%d",x); } Αμα το τρεξεις θα σου βγαλει μηδεν. Και δικαιως αφου αυτο που πας να κανει ετσι οπως πας, δεν γινεται! Το printf() δεν μπορει να τυπωσει στην οθονη αριθμους πανω απο ενα οριο. Καπου 15 ψηφια νομιζω.... Οποτε αφου ο αριθμος μας (ο 100!) εχει 158 ψηφια η C μας δινει 0.
teontou Δημοσ. 16 Ιουνίου 2008 Δημοσ. 16 Ιουνίου 2008 #include <stdio.h> #include <stdlib.h> main(){ int x,y; for (x=100; x<=2; x--){ y=x*(x-1); } printf("%d",y); } Με προλαβες krokodile!!!
clevercitizen Δημοσ. 16 Ιουνίου 2008 Δημοσ. 16 Ιουνίου 2008 Θα με κάνεις να πάω να βρω το βιβλίο της C στο υπόγειο.... Περίμενε.... (Αν αργήσω θα με έχει τσιμπήσει σκορπιός)
parsifal Δημοσ. 16 Ιουνίου 2008 Δημοσ. 16 Ιουνίου 2008 Αρκούν 130 χαρακτήρες για να υλοποιήσεις αλγόριθμο Karatsuba ή κάποιον παρόμοιο; Πωπω, πρέπει να βγαίνει πολύ μίζερος κώδικας!
clevercitizen Δημοσ. 16 Ιουνίου 2008 Δημοσ. 16 Ιουνίου 2008 I quit.... Μάλλον 2 μήνες C σε πανεπιστήμιο της κακιάς ώρας δεν είναι αρκετό για να λύσω το "quiz".( Έχω να ρίξω διάβασμα...)
darth_revan Δημοσ. 16 Ιουνίου 2008 Δημοσ. 16 Ιουνίου 2008 >#include "iostream" double fact(double n) { if(n==1) { return 1; } else { return n*fact(n-1); } } int main() { std::cout<<fact(100); return 0; } Αυτό δούλεψε σε C++. Θα το έκανα σε C απλώς βαριέμαι να ψάξω πώς πάει η printf να εκτυπώσει εκθετικά... Το fact είναι από το factorial (=παραγοντικό). [121 characters]
darth_revan Δημοσ. 16 Ιουνίου 2008 Δημοσ. 16 Ιουνίου 2008 Να το και σε C: >#include <stdio.h> double fact(double n) { if(n==1) { return 1; } else { return n*fact(n-1); } } int main() { printf("%e",fact(100)); return 0; }
worldcitizen Δημοσ. 16 Ιουνίου 2008 Δημοσ. 16 Ιουνίου 2008 #include "iostream" double p(double n) { return n==1?1:n*p(n-1); } int main() { printf("%f",p(100)); } Σε C++ με g++ δούλεψε
darth_revan Δημοσ. 16 Ιουνίου 2008 Δημοσ. 16 Ιουνίου 2008 Αμα το τρεξεις θα σου βγαλει μηδεν.Και δικαιως αφου αυτο που πας να κανει ετσι οπως πας, δεν γινεται! Το printf() δεν μπορει να τυπωσει στην οθονη αριθμους πανω απο ενα οριο. Καπου 15 ψηφια νομιζω.... Οποτε αφου ο αριθμος μας (ο 100!) εχει 158 ψηφια η C μας δινει 0. Δεν είναι το πρόβλημα η printf... Μια χαρά τα εκτυπώνει. Το πρόβλημα είναι στα data types...
Krokodilos Δημοσ. 16 Ιουνίου 2008 Μέλος Δημοσ. 16 Ιουνίου 2008 >#include "iostream" double fact(double n) { if(n==1) { return 1; } else { return n*fact(n-1); } } int main() { std::cout<<fact(100); return 0; } Αυτό δούλεψε σε C++. Θα το έκανα σε C απλώς βαριέμαι να ψάξω πώς πάει η printf να εκτυπώσει εκθετικά... Το fact είναι από το factorial (=παραγοντικό). [121 characters] Μα δεν θελουμε στο περιπου τον αριθμο. Θελουμε να εμφανιστουν ολα τα 158 ψηφια του αριθμου. Αυτο που δινεις(εκτος του οτι δεν ειναι σε C που δεν εχει και τοση σημασια) δινει 9.33262e+157. Αυτο που θελουμε να βγει στην οθονη ειναι ο 100!(δηλαδη το 100·99·...·3·2·1) με ολα του τα ψηφια δηλαδη να βγει: 933262154439441526816992388562667004907159682643816214685929638952175999932299 156089414639761565182862536979208272237582511852109168640000000000000000000000 00 Και δεν θελει περιεργες εντολες, ουτε περιεργες συναρτησεις, ουτε εξεζητημενα πραγματα, κλπ. Δεν ειναι θεμα γνωσεων της C το quiz, αλλα ειναι θεμα εξυπναδας. Με απλες εντολες for, while,if, else, κλπ, που ξερει ο καθε αρχαριος, μπορει να λυθει.
parsifal Δημοσ. 16 Ιουνίου 2008 Δημοσ. 16 Ιουνίου 2008 Χονδροειδέστατα προσεγγιστικό το αποτέλεσμα με αυτόν τον τρόπο. Αν δεν κάνω λάθος, ο τελικός αριθμός έχει μόλις 3 μηδενικά στο λιγότερο σημαντικά ψηφία. ΥΓ: Φαίνεται πως έκανα λάθος, είναι αρκετά περισσότερα...
darth_revan Δημοσ. 16 Ιουνίου 2008 Δημοσ. 16 Ιουνίου 2008 Αυτο που θελουμε να βγει στην οθονη ειναι ο 100!(δηλαδη το 100·99·...·3·2·1) με ολα του τα ψηφια δηλαδη να βγει:933262154439441526816992388562667004907159682643816214685929638952175999932299 156089414639761565182862536979208272237582511852109168640000000000000000000000 00 Απλώς αντικατέστησε το %e με %f και θα σου βγάλει όλον τον αριθμό. Και δεν θελει περιεργες εντολες, ουτε περιεργες συναρτησεις, ουτε εξεζητημενα πραγματα, κλπ. Δεν βλέπω κάτι εξεζητημένο στον κώδικά μου. Μια απλή αναδρομική συνάρτηση έφτιαξα. Ο κάθε αρχάριος στη C μπορει να φτιάξει μια συνάρτηση. Προφανώς μπορείς να το κάνεις και χωρίς την αναδρομή.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα