Εμφάνιση 1-7 από 7
  1. #1
    Να γραφεί πρόγραμμα που να ζητάει από το χρήστη:

    έναν οποιοδήποτε ακέραιο αριθμό με έλεγχο εγκυρότητας και επιτρεπτά πλήκτρα ΜΟΝΟ τα '+', '-' και τα νούμερα από '0' ώς και '9'.
    έναν οποιοδήποτε αριθμό (δεκαδικό ή ακέραιο) με έλεγχο εγκυρότητας και επιτρεπτά πλήκτρα ΜΟΝΟ τα '+', '-', '.(τελεία ως ρόλος υποδιαστολής)' και τα νούμερα από '0' ώς και '9'.
    Όσο ο πελάτης δε βάζει σωστό νούμερο, το πρόγραμμα να του ξαναζητά να πληκτρολογήσει. Μόλις βάλει σωστό νούμερο, το πρόγραμμαν να το εκτυπώνει και να τερματίζει

  2. #2
    Το avatar του μέλους sdikr
    sdikr Guest
    Γιατί δεν ανεβάζεις τι έχεις ετοιμάσει εσύ;

  3. #3
    Κώδικας:
    #include<stdio.h>
    #include<stdlib.h>
    #include<ctype.h>
    
    int main()
    {
    	system("CHCP 1253");
    	system("CLS");
    	
    	char temp;
    	int x;
    	
    	
    	printf("äùóå åíá øçöéï:");
    	scanf("%c",&temp);
    	
    	if(isdigit(temp)!=0)
    	{
    	
    	   printf("ìðñáâï!åäùóåò áñéèìï!\n");
        }
        
    	else
    	   printf("ëáèïò! äåí åäùóå áéèìï!\n");
    	
    	system("PAUSE");
        return  0;
    τα περιεργα ειναι ελληνικα γραμματα απλα δεν ξερω γτ τα εμφανισε ετσι
    Τελευταία επεξεργασία από το μέλος euri : 22-11-20 στις 10:53. Αιτία: προσθήκη του [code] tag

  4. #4
    Εγγραφή
    06-07-2005
    Περιοχή
    Νέα Υόρκη
    Ηλικία
    49
    Μηνύματα
    11.652
    Downloads
    6
    Uploads
    2
    Τύπος
    Cable
    Ταχύτητα
    300 Mbps down/10 Mbps up
    ISP
    Spectrum
    Δεν έχεις κάνει και πολλά

    Που κόλλησες;

  5. #5
    Εγγραφή
    20-12-2005
    Μηνύματα
    3.214
    Downloads
    4
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    49997/4997
    ISP
    ΟΤΕ Conn-x
    DSLAM
    ΟΤΕ - ΞΑΝΘΗ
    Router
    Speedport W 724V
    SNR / Attn
    24,4(dB) / (dB)
    Παράθεση Αρχικό μήνυμα από μανος αρμαος Εμφάνιση μηνυμάτων
    τα περιεργα ειναι ελληνικα γραμματα απλα δεν ξερω γτ τα εμφανισε ετσι
    Ας έρθουμε σε αυτό πρώτα. Εσύ έγραψες Ελληνικά σε "8bit σύστημα" που είχαμε παλιά στο DOS και είναι σύνηθες σε windows. Όπως έχεις και στο πρόγραμμά σου, αυτό χρησιμοποιεί την κωδικοσελίδα 1253 (γνωστή και ως Windows-1253). Ο browser / το software του φόρουμ / ποιος ξέρει τι άλλο εμπλέκεται στο να δούμε εμείς το μήνυμά σου, δουλεύει με UTF8. Ως εδώ ωραία.

    Όταν έκανες copy / paste στον browser, δεν ήξερε τι έγραψες εσύ και το πιο πιθανό είναι ότι το ερμήνευσε σαν "αγγλικό" κείμενο δηλαδή ISO-8859-1. Ας κάνουμε κάποιες δοκιμές για να το επαληθεύσουμε.

    Κώδικας:
    % file utf8
    utf8: UTF-8 Unicode text
    % cat utf8 
    printf("äùóå åíá øçöéï:");
    scanf("%c",&temp);
    
    if(isdigit(temp)!=0)
    {
    
    printf("ìðñáâï!åäùóåò áñéèìï!\n");
    }
    Εδώ έχουμε το κείμενό σου. Το έκανα αντιγραφή από τον browser και το επικόλλησα σε ένα αρχείο με όνομα utf8 το οποίο, όπως βλέπεις, έχει μορφή "UTF-8 unicode κείμενο".

    Κώδικας:
    % iconv -f utf8 -t windows-1253 -o w1253 utf8 
    # Μετάτρεψε από utf8 σε windows-1253 και ονόμασε το αρχείο w1253
    iconv: μη έγκυρη ακολουθία εισόδου στη θέση 8
    
    % iconv -f utf8 -t iso8859-1 -o w1253 utf8         
    # Μετάτρεψε από utf8 σε iso8859-1 και ονόμασε το αρχείο w1253
    % cat w1253 
    printf("äùóå åíá øçöéï:");
    scanf("%c",&temp);
    
    if(isdigit(temp)!=0)
    {
    
    printf("ìðñáâï!åäùóåò áñéèìï!\n");
    }
    Προσπαθώ να το μετατρέψω από UTF-8 σε Windows-1253 και παίρνω το μήνυμα ότι δεν μπορεί να μετατραπεί. Όταν όμως του λέω να το μετατρέψει σε ISO-8859-1, τότε το κάνει κανονικά. Γιατί γίνεται αυτό; Γιατί όταν το έκανες αντιγραφή / επικόλληση θεώρησε ότι ήταν iso-8859-1 και "άλλαξε" τους χαρακτήρες με αυτό στο μυαλό του. Στην πραγματικότητα όμως, το αρχείο που προέκυψε τώρα, _δεν_ είναι αγγλικό κείμενο iso αλλά ελληνικό 1253. Ας κάνουμε ακόμη μια δοκιμή για να το επαληθεύσουμε.

    Κώδικας:
    % iconv -f windows-1253 -t utf8 w1253           
    printf("δωσε ενα ψηφιο:");
    scanf("%c",&temp);
    
    if(isdigit(temp)!=0)
    {
    
    printf("μπραβο!εδωσες αριθμο!\n");
    }
    Μόλις του είπα να το αντιμετωπίσει όχι σαν ISO-01 αλλά σαν 1253, αμέσως εμφανίζεται αυτό που ήθελες να γράψεις. Αυτά τα προβλήματα ήταν πολύ συνήθη παλαιότερα που δεν χρησιμοποιούσαν τα πάντα UTF8. Τώρα συμβαίνουν σπάνια και μόνο σε αρχεία που έχουν γραφτεί στα windows στο notepad όπως πχ αρχεία υποτίτλων για σειρές (ή σε κάποιο παλιό C περιβάλλον όπως το DEV-C++) ή σε ZIP αρχεία που παίρνεις από κρατικές υπηρεσίες.

    Η δόκιμη λύση είναι να πας σε κάποιο σοβαρό C περιβάλλον και ακόμη και τότε, να αποφύγεις τα ελληνικά όσο μπορείς. Αν ασχοληθείς σοβαρά με προγραμματισμό, θα δεις πώς θα το κάνεις τότε. Μέχρι τότε "Dose arithmo", "Edoses 5" για να μην έχεις προβλήματα.

    Πάμε τώρα στον κώδικα. Δεν έδειξες ότι το προχώρησες καθόλου (χωρίς να θέλω να σε προσβάλω, αυτό που έδωσες δείχνει σαν σκελετός που έδωσε ο δάσκαλος) οπότε δεν μπορώ να σου πω κώδικα και θα σχολιάσω μόνο γενικά πράγματα.


    Παράθεση Αρχικό μήνυμα από μανος αρμαος Εμφάνιση μηνυμάτων
    Κώδικας:
    int main()
    Όπου μπορείς, να γράφεις "int main(void)". Δεν θα δημιουργήσει προβλήματα πρακτικά, αλλά αν θέλουμε να είμαστε τυπικοί, είναι λάθος σε C (σε C++ είναι σωστό).

    Παράθεση Αρχικό μήνυμα από μανος αρμαος Εμφάνιση μηνυμάτων
    Κώδικας:
    system("CHCP 1253");
    	system("CLS");
    	system("PAUSE");
    Απόφυγε ό,τι έχει τη λέξη system. Καταλαβαίνω γιατί τα βάζουν σε ασκήσεις. Καθαρίζει την οθόνη και στο τέλος περιμένει ώστε να δεις το αποτέλεσμα του προγράμματος χωρίς να μπλέκεις με "κονσόλες" αλλά είναι βλακεία και παίζει μόνο σε συγκεκριμένα περιβάλλοντα.

    Παράθεση Αρχικό μήνυμα από μανος αρμαος Εμφάνιση μηνυμάτων
    Κώδικας:
    	scanf("%c",&temp);
    Τι ζητάς με το "%c"; Θα δουλέψει σωστά αν εγώ δώσω "35"; Αν δώσω "+5";
    "I like offending people, because I think people who get offended should be offended" - Linus Torvalds

    "Παλιά είχαμε φτωχούς οι οποίοι ζούσανε σε φτωχογειτονιές. Τώρα, η οικονομικά δυσπραγούσα τάξη
    κατέχει στέγες υποδεέστερης ποιότητας σε υποβαθμισμένα αστικά κέντρα" - George Carlin
    Γα.... την πολιτική ορθότητα.

  6. #6
    Εγγραφή
    14-11-2009
    Μηνύματα
    2.006
    Downloads
    2
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    12288/1024
    ISP
    Wind
    Router
    Technicolor TG788v v3
    SNR / Attn
    14.2(dB) / 27(dB)
    Path Level
    Interleaved
    Παράθεση Αρχικό μήνυμα από μανος αρμαος Εμφάνιση μηνυμάτων
    Να γραφεί πρόγραμμα που να ζητάει από το χρήστη:

    έναν οποιοδήποτε ακέραιο αριθμό με έλεγχο εγκυρότητας και επιτρεπτά πλήκτρα ΜΟΝΟ τα '+', '-' και τα νούμερα από '0' ώς και '9'.
    έναν οποιοδήποτε αριθμό (δεκαδικό ή ακέραιο) με έλεγχο εγκυρότητας και επιτρεπτά πλήκτρα ΜΟΝΟ τα '+', '-', '.(τελεία ως ρόλος υποδιαστολής)' και τα νούμερα από '0' ώς και '9'.
    Όσο ο πελάτης δε βάζει σωστό νούμερο, το πρόγραμμα να του ξαναζητά να πληκτρολογήσει. Μόλις βάλει σωστό νούμερο, το πρόγραμμαν να το εκτυπώνει και να τερματίζει
    σου δίνω ένα tip
    αυτό μπορείς να το κάνεις με while χρησιμοποιώντας τον πίνακα ascii
    ἀναφαίρετον ὅπλον ἡ ἀρετή

  7. #7
    ευχαριστω παρα πολυ

Bookmarks

Bookmarks

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύσετε νέα θέματα
  • Δεν μπορείτε να δημοσιεύσετε νέα μηνύματα
  • Δεν μπορείτε να αναρτήσετε συνημμένα
  • Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας
  •  
  • Τα BB code είναι σε λειτουργία
  • Τα Smilies είναι σε λειτουργία
  • Το [IMG] είναι σε λειτουργία
  • Το [VIDEO] είναι σε λειτουργία
  • Το HTML είναι εκτός λειτουργίας