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

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

μεταβλητες


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


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

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

Γεια χαρά,

Θα ήθελα να ρωτήσω μέχρι τι τιμές μπορούν να πάρουν οι μεταβλητές int,long int,long long,unsigned long long. Στον αλγόριθμο που έχω, από κάποια τιμή και πάνω που δίνει ο χρήστης φαίνεται σα να μην τελειώνει ποτέ. Στην αρχή είχα int και έβαλα long long αλλά δεν βλέπω διαφορά. Πώς μπορεί μέχρι κάποια τιμή να δίνει σωστά αποτελέσματα αλλά από κάποια τιμή και πάνω να μην τελειώνει το πρόγραμμα ή να βγάζει λάθος? Χρησιμοποιώ την Dev C.
bill777


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

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

Επίσης να πω ότι χρησιμοποιώ δυναμικους πίνακες (malloc). Δεν ξέρω αν παίζει κάποιο ρόλο αυτό.
bill777


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

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

Και κάτι ακόμα που παρατήρησα. Πώς γίνεται για το ίδιο παράδειγμα όταν τυπώνει δίφορα ενδιάμεσα στάδια να καταλήγει σε σωστό αποτέλεσμα, ενώ όταν το βάλω να βγάλει κατευθείαν το τελικό αποτέλεσμα, δεν τελειώνει ποτέ?
Erevis


Μέλος από: 12 Ιουν 2008
Μηνύματα: 56
Περιοχή: Χαλάνδρι
View users profile
ΜήνυμαΣτις: 16 Ιουλ 2010 16:48    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Αν δε ποστάρεις κώδικα είναι λίγο δύσκολο να σε βοηθήσουμε.

_________________
If java had true garbage collection, programs would delete themselves upon execution.
virxen75


Μέλος από: 18 Φεβ 2009
Μηνύματα: 256+
Περιοχή: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ
View users profile
ΜήνυμαΣτις: 17 Ιουλ 2010 00:01    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

δες εδώ
www.cplusplus.com/reference/clibrary/climits/

να και ένα παράδειγμα για τους integers

κώδικας:

#include <stdio.h>
#include <limits.h>

int main(){
    printf("\n max int=%d min int=%d",INT_MAX,INT_MIN);
    getchar();
    return 0;
}
bill777


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

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

Ευχαριστώ. Άρα η Int μου κάνει. Οπότε αλλού είναι το πρόβλημα. Ο αλγόριθμος είναι μεγάλος γι' αυτό δεν τον ποστάρω. Και επιπλέον θέλω να το ψάξω λίγο μόνος μου και στην έσχατη περίπτωση θα επανέλθω με τον αλγόριθμο. Κάνω τώρα κάτι δοκιμές και όταν κάνω compile βγάζει τα εξής:
[Warning] assignment makes pointer from integer without a cast
[Warning] comparison between pointer and integer

Τι σημαίνουν αυτά?
alex599


Μέλος από: 17 Δεκ 2008
Βοηθήματα: 3
Μηνύματα: 66

Περιοχή: Πάτρα
View users profile Send email to user
ΜήνυμαΣτις: 17 Ιουλ 2010 15:08    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

αυτό που λένε..

1) θέλει type casting για να παίξει η γραμμή που έχει το λάθος (λογικά σε malloc)
2) προσπαθείς να συγκρίνεις τιμή με διεύθυνση.

_________________
while(!dead()) ++knowledge;
virxen75


Μέλος από: 18 Φεβ 2009
Μηνύματα: 256+
Περιοχή: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ
View users profile
ΜήνυμαΣτις: 18 Ιουλ 2010 00:17    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

για στείλε τις γραμμές κώδικα που χρησιμοποιείς την malloc
bill777


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

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

Οκ το βρήκα το πρόβλημα. Και κάτι άλλο που θέλω να ρωτήσω. Για μεγάλες τιμές που δίνονται από τα δεδομένα, μου βγάινει το εξής μήνυμα:

Application error
The instruction at "0x00401f20" referenced memory at "0x00028ed0". The memory could not be "written".

Τι σημαίνει αυτό?
Σας ευχαριστώ για τον χρόνο σας.
bill777


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

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

Κι άλλο ένα μήνυμα που δεν καταλαβαίνω:

Illegal System DLL Relocation
The system DLL user32.dll was relocated in memory. The application will not run properly.The relocation ocurred because the DLL Dynamically Allocated Memory occupied an address range reserved for Windows link to Windows system DLLs. The vendor supplying the DLL should be contacted for a new DLL.
bill777


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

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

Και μετά:
The instruction at "0x00401f5f" referenced memory at "0x00199ab8".The memory could not be "written".

Όλα τα περίεργα τις τελευταίες 3 μέρες τα βλέπω
alex599


Μέλος από: 17 Δεκ 2008
Βοηθήματα: 3
Μηνύματα: 66

Περιοχή: Πάτρα
View users profile Send email to user
ΜήνυμαΣτις: 18 Ιουλ 2010 11:21    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Δώσε μας λίγο κώδικα να δούμε γτ σου βγάζει αυτά τα μηνύματα. Έτσι, δεν μπορούμε να σου πούμε με σιγουριά γιατί σου τα βγάζει.

_________________
while(!dead()) ++knowledge;
bill777


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

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

Νομίζω ότι το πρόβλημα είναι η μνήμη, την οποία πρέπει να αποδεσμεύει. Αλλά έχω την εξής απορία:
Κάνω δυναμική δέσμευση μνήμης και στην πορεία του αλγορίθμου θέλω να την μικρύνω για οικονομία. Πρόκειται για δισδιάστατο πίνακα.Δεν ξέρω όμως πώς γίνεται. Νόμιζα ότι ήταν κάπως έτσι:

x=(int**)malloc(a*sizeof(int*));
for (i=0;i<a;i++)
{
x[i]=(int*)malloc(b*sizeof(int));
}
...................................
x=(int**)realloc(x,c*sizeof(int*))
for (i=0;i<c;i++)
{
x[i]=(int*)realloc(x[i],b*sizeof(int));
}


αλλά μάλλον δεν έιναι απ' ότι φαίνεται. Επίσης ισχύει ότι:
c<a. H δεύτερη διάσταση του πίνακα b μένει ίδια
Εμφάνιση Μηνυμάτων:   
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [13 Μηνύματα] Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Τώρα είναι 05 Δεκ 2016 18:37 | 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