Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Σε γλωσσα C να γραφει προγραμμα που να υπολογιζει το γινομενο 100·99·98·97·...·3·2·1 και να το εμφανιζει στην οθονη, αλλα ο κωδικας να εχει λιγοτερους απο 130 χαρακτηρες(τα κενα δεν μετρανε).

 

(Η δηλωση #include <stdio.h> για να μπορεσει να χρησιμοποιησει το προγραμμα την printf ωστε να εμφανισει στην οθονη το αποτελεσμα, δεν συμπεριλαμβανεται στους μετρουμενους χαρακτηρες του κωδικα.)

 

:devil:

Δημοσ.
{

for (int x=100; x==2;x--)

x=x*(x-1)

}

printf x /* H kapws etsi :P*/

 

Δέν είμαι σίγουρος αν τα έχω γράψει 100% σωστά, έχω να ασχοληθώ με C 1 χρόνο...

Διορθωνοντας το λιγο:

main()

{

for (int x=100; x==2;x--)

x=x*(x-1);

printf("%d",x);

}

 

Αμα το τρεξεις θα σου βγαλει μηδεν.:-D

Και δικαιως αφου αυτο που πας να κανει ετσι οπως πας, δεν γινεται!

Το printf() δεν μπορει να τυπωσει στην οθονη αριθμους πανω απο ενα οριο. Καπου 15 ψηφια νομιζω....

Οποτε αφου ο αριθμος μας (ο 100!) εχει 158 ψηφια η C μας δινει 0.

Δημοσ.

Αρκούν 130 χαρακτήρες για να υλοποιήσεις αλγόριθμο Karatsuba ή κάποιον παρόμοιο; Πωπω, πρέπει να βγαίνει πολύ μίζερος κώδικας! :-D

Δημοσ.

>#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]

Δημοσ.
Αμα το τρεξεις θα σου βγαλει μηδεν.:-D

Και δικαιως αφου αυτο που πας να κανει ετσι οπως πας, δεν γινεται!

Το printf() δεν μπορει να τυπωσει στην οθονη αριθμους πανω απο ενα οριο. Καπου 15 ψηφια νομιζω....

Οποτε αφου ο αριθμος μας (ο 100!) εχει 158 ψηφια η C μας δινει 0.

Δεν είναι το πρόβλημα η printf... Μια χαρά τα εκτυπώνει. Το πρόβλημα είναι στα data types...

Δημοσ.
>#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, κλπ, που ξερει ο καθε αρχαριος, μπορει να λυθει.

Δημοσ.

Χονδροειδέστατα προσεγγιστικό το αποτέλεσμα με αυτόν τον τρόπο. Αν δεν κάνω λάθος, ο τελικός αριθμός έχει μόλις 3 μηδενικά στο λιγότερο σημαντικά ψηφία.

 

 

ΥΓ: Φαίνεται πως έκανα λάθος, είναι αρκετά περισσότερα...

Δημοσ.
Αυτο που θελουμε να βγει στην οθονη ειναι ο 100!(δηλαδη το 100·99·...·3·2·1) με ολα του τα ψηφια δηλαδη να βγει:

933262154439441526816992388562667004907159682643816214685929638952175999932299

156089414639761565182862536979208272237582511852109168640000000000000000000000

00

Απλώς αντικατέστησε το %e με %f και θα σου βγάλει όλον τον αριθμό.

 

Και δεν θελει περιεργες εντολες, ουτε περιεργες συναρτησεις, ουτε εξεζητημενα πραγματα, κλπ.

Δεν βλέπω κάτι εξεζητημένο στον κώδικά μου. Μια απλή αναδρομική συνάρτηση έφτιαξα. Ο κάθε αρχάριος στη C μπορει να φτιάξει μια συνάρτηση. Προφανώς μπορείς να το κάνεις και χωρίς την αναδρομή.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...