freestuff.gr αρχική σελίδα
 FAQFAQ    ΑναζήτησηΑναζήτηση   Λίστα ΜελώνΛίστα Μελών   Ομάδες ΜελώνΟμάδες Μελών   <b>Εγγραφή Μέλους</b>Εγγραφή Μέλους 
 ΠροφίλΠροφίλ   Επιλογές μέλους Επιλογές   Τα bookmarks μου Τα bookmarks μου   Προσωπικά μηνύματαΠροσωπικά μηνύματα 
  διαφήμιση  

Καλώς ήρθατε στο forum μας! Για να συμμετάσχετε στις συζητήσεις θα πρέπει να είσαστε μέλος. Γίνετε μέλος τώρα!.

Τι τύπου μεταβλητή θα χρησιμοποιήσω για μεγάλους ακέραιους?


 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Moderators:  Super-Moderators, WebDev Moderators
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [9 Μηνύματα]       Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
ΑποστολέαςΜήνυμα
bill777


Μέλος από: 13 Ιουλ 2010
Μηνύματα: 14

View users profile
ΜήνυμαΣτις: 13 Ιουλ 2010 13:02    Θέμα: Τι τύπου μεταβλητή θα χρησιμοποιήσω για μεγάλους ακέραιους? Απάντηση με παράθεση  Mark this post and the followings unread

Γεια χαρά παιδιά,

Είμαι καινούριος στο φόρουμ. Θα ήθελα να κάνω μια ερώτηση. Έχω κάνει έναν αλγόριθμο στη C, αλλά δεν ξέρω τι να κάνω ώστε να δηλώσω μεταβλητές που είναι μεγάλοι ακέραιοι αριθμοί. Οι μεταβλητές τύπου int δεν επαρκούν και οι μεταβλητές long int δεν έχουν διαφορά από την int. Δεν σκέφτηκα κάποιον απλό τρόπο, δεδομένου ότι απ' όσο ξέρω δεν υπάρχουν άλλου τύπου μεταβλητές για κάτι τέτοιο. Σκέφτηκα μήπως με κάποιο τρόπο βοηθούσε ένα string αλλά δεν έχω εξοικείωση στη χρήση του.

Μία απάντηση με σώζει.

Σας ευχαριστώ προκαταβολικά.
nbc
Honorary Member

Μέλος από: 05 Σεπ 2009
Βοηθήματα: 1
Μηνύματα: 256+


View users profile Visit posters website
ΜήνυμαΣτις: 13 Ιουλ 2010 13:18    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Εξαρτάται από τον compiler. Συνήθως, θα τον βρεις ως __int64 (VC, Borland) ή long long (GCC). Στο ISOC99 προστέθηκε ο int64_t αλλά στη C++ υπάρχει πρόβλημα.

Αν θέλεις portability, χρησιμοποίησε κάτι σαν το παρακάτω στην αρχή του source

κώδικας:
#if defined(_MSC_VER) || defined(__BORLANDC__)
typedef unsigned __int64 ulong64;
typedef signed __int64 slong64;
#else
typedef unsigned long long ulong64;
typedef signed long long slong64;
#endif


...και "παίξε" με ulong64 και slong64.
bill777


Μέλος από: 13 Ιουλ 2010
Μηνύματα: 14

View users profile
ΜήνυμαΣτις: 13 Ιουλ 2010 13:32    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Χρησιμοποιώ την Dev C. Οπότε θα χρησιμοποιήσω struct σαν το παραπάνω?
nbc
Honorary Member

Μέλος από: 05 Σεπ 2009
Βοηθήματα: 1
Μηνύματα: 256+


View users profile Visit posters website
ΜήνυμαΣτις: 13 Ιουλ 2010 13:39    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Θα σου κάνει...
bill777


Μέλος από: 13 Ιουλ 2010
Μηνύματα: 14

View users profile
ΜήνυμαΣτις: 13 Ιουλ 2010 13:57    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Και άλλη μια ερώτηση: Στην printf πώς δηλώνεται η long long? printf("%lld",...) ? 'Η κάπως αλλιώς?
nbc
Honorary Member

Μέλος από: 05 Σεπ 2009
Βοηθήματα: 1
Μηνύματα: 256+


View users profile Visit posters website
ΜήνυμαΣτις: 13 Ιουλ 2010 14:31    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Πάλι εξαρτάται από τον compiler. Αυτό που γράφεις παίζει σε gcc, άρα λογικά θα σου δουλέψει. Είναι για signed. Για unsigned "%llu". Το "ll" μπορεί να γραφτεί και ως "L".

Σε VC "Ι64d", σε C99 macro "PRId64". Η borland υποστηρίζει και τις δύο συντάξεις (gcc/vc). Άνοιξε τον "inttypes.h" header (αν έχεις) για λεπτομέρειες.
nbc
Honorary Member

Μέλος από: 05 Σεπ 2009
Βοηθήματα: 1
Μηνύματα: 256+


View users profile Visit posters website
ΜήνυμαΣτις: 13 Ιουλ 2010 15:05    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Κάτι άσχετο: Πως γίνεται και όλοι μαθαίνουν σε Dev-C++? (εξ όσων βλέπω στα forums). Εσύ ας πούμε, πως το έμαθες? Σπουδάζεις και αυτό σου είπε ο καθηγητής?

Ρωτάω γιατί μετά λύπης μου διαπιστώνω την απουσία του ΑΠΟΛΥΤΟΥ C/C++ IDE, που μάλιστα ξεκίνησε ως ελληνικό (Γιάννης Μανδράβελλος) project: To Code::Blocks.

Το CB είναι έτη φωτός μπροστά από το Dev-C++, απλά δεν συγκρίνεται με οτιδήποτε άλλο. Open source, cross-platform (Windows, Mac, Linux), multiple compiler support (χρησιμοποιείς όποιον/όποιους θέλεις, και εναλλάσσεις μεταξύ τους πανεύκολα!), και χίλια δυο άλλα μαγικά μέσω του scriptable plugin engine που διαθέτει.
bill777


Μέλος από: 13 Ιουλ 2010
Μηνύματα: 14

View users profile
ΜήνυμαΣτις: 13 Ιουλ 2010 16:22    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Σπουδάζω. Κάναμε C στο 1ο και 2ο εξάμηνο και κάναμε Borland. Από κάποια στιγμή και μετά το μάθημα γίνεται σε Dev. Αυτό που λες δεν το ξέρω μιας και δεν είχα ποτέ ασχοληθεί με τον προγραμματισμό. Τον τελευταίο χρόνο ασχολούμαι.

Να ρωτήσω και κάτι άλλο? Στο πρόγραμμα που κάνω, ζητάει από τον χρήστη να δώσει έναν αριθμό με βάση τον οποίο κάνει τις υπόλοιπες πράξεις,κτλ. Πίστεβα ότι ίσως έφταιγαν οι μεταβλητές και έπρεπε να χρησιμοποιήσω μεγαλύτερες της int αλλά δεν είδα καμία αλλαγή. Πιθανόν να έχω κάνει κάτι λάθος, οπότε θα το ξανακοιτάξω. Αλλά ξέρεις τι αλλο μπορεί να φταίει? Μέχρι κα΄ποιον αριθμό που δίνεται ως δεδομένο βγάζει σωστά αποτελέσματα. Αλλά από έναν αριθμό και πάνω το πρόγραμμα κολλάει ή φαίνεται σα να μην τελιώνει ποτε.
bill777


Μέλος από: 13 Ιουλ 2010
Μηνύματα: 14

View users profile
ΜήνυμαΣτις: 13 Ιουλ 2010 16:30    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Απ' ότι βλέπω το πρόβλημα είναι οι μεταβλητές. Θα ξαναδοκιμάσω με τη long long
Εμφάνιση Μηνυμάτων:   
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [9 Μηνύματα] Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Τώρα είναι 10 Δεκ 2016 14:43 | All times are UTC + 2


Email This Page to Someone! add to Favorites

     Powered by p h p B B © 2001,2005 p h p B B Group
Για άμεση επικοινωνία με τον διαχειριστή του freestuff.gr στο email: freestuff.gr(παπάκι)gmail.com


Copyright © 1999-2013 Freestuff.gr All Rights Reserved  
Version Aegean, designed by N. Tsaganos