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

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

  • Moderators
Δημοσ.

Το application δεν εξαφανίζετε ούτε είναι πρόβλημα. Όταν κάνεις διπλό κλικ ανοίγει μια καινούρια κονσόλα, τρέχει το πρόγραμμά σου και μετά κλείνει. Επειδή εσύ έβαλες να εκτυπώνει 2 πράγματα, το κάνει πολύ γρήγορα και μετά κλείνει, έτσι δεν προλαβαίνεις να δεις τι γίνεται και νομίζεις ότι κάνεις κάτι λάθος.

 

Το 32 και το 64 αναφέρονται στην αρχιτεκτονική και δεν είναι "καλύτερα" ή "χειρότερα".

  • Απαντ. 33
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοσ.

Το application δεν εξαφανίζετε ούτε είναι πρόβλημα. Όταν κάνεις διπλό κλικ ανοίγει μια καινούρια κονσόλα, τρέχει το πρόγραμμά σου και μετά κλείνει. Επειδή εσύ έβαλες να εκτυπώνει 2 πράγματα, το κάνει πολύ γρήγορα και μετά κλείνει, έτσι δεν προλαβαίνεις να δεις τι γίνεται και νομίζεις ότι κάνεις κάτι λάθος.

 

Το 32 και το 64 αναφέρονται στην αρχιτεκτονική και δεν είναι "καλύτερα" ή "χειρότερα".

α μάλιστα καταλαβα. Για αυτο μου ελεγες να βαλω το system("pause") για να μην κλειση ακομα και αν τελειοση το "application". Το ζητιμα ειναι οτι μου το βγάζει error. Και στο Pelles C και στο VIsual Studio γραφουν και τα δυο προγραμματα οτι δεν αναγνωρήζουν τι λέξη system. Οριστε το printscreen: http://prntscr.com/517ztnπροφανως υπαρχη κατι που κανω λαθος ετσι ? αυτο ειναι στο visual studio τωρα αλλα το ειδιο βγάζει και στο pelles C. απλα το εμφανιζει λιγο διαφορετικα παντως λεει παλι οτι εχει προβλημα με την λεξη system.

Δημοσ.

 

Κάνε include την stdlib.h για να σου αναγνωρίσει το system.

 

Ευχαριστω πολυ !!! τα καταφερα !!!! Δείτε : http://prntscr.com/518lw5ευχαριστω παρα πολυ ολους. Με βοηθισατε παρα πολυ να πρωχορισω στο προγραμματισμο. Ευχαριστω παρα πολυ και πάλι !!!! :)

Δημοσ.

Για να μπορείς να τυπώνεις ελληνικά μέσα από console applications, δοκίμασε στη γραμμή εντολών να γυρίζεις την κωδικοσελίδα της κονσόλας σε 1253 πριν τρέξεις το πρόγραμμά σου.

 

Π.χ. αν το εκτελέσιμο του προγράμματός σου ονομάζεται myprog.exe, ανοίγεις ένα παράθυρο γραμμής εντολών, πας με cd στον φάκελο που περιέχει το εκτελέσιμο και γράφεις...

chcp 1253
myprog.exe
Όμως για να λειτουργήσει αυτό, θα πρέπει να ορίσεις στο παράθυρο της κονσόλας μια γραμματοσειρά διαφορετική της "raster" που έχει για default. Είτε η Consolas, είτε η Lucida Console (που υπάρχουν ως διαθέσιμες επιλογές) κάνουν. Για να αλλάξεις την γραμματοσειρά της κονσόλας, όταν ανοίξεις ένα παράθυρο γραμμής εντολών (δλδ κονσόλα), κάνε κλικ στην πάνω αριστερή γωνία του και κατόπιν διάλεξε "Ιδιότητες". Οι επιλογές για την γραμματοσειρά βρίσκονται στην αντίστοιχη καρτέλα ("Γραμματοσειρά").

 

ΥΓ1. Διαβάζω μόλις τώρα στην σχετική σελίδα της Microsoft, πως στα Windows 8 (και Vista) ως κωδικοσελίδα για ελληνικά προτείνεται η 869, ενώ η 1253 δεν αναφέρεται καθόλου. Αυτά που σου γράφω εγώ παραπάνω, είναι δοκιμασμένα σε Windows XP και σε Windows 7, αλλά μιας και δεν έχω αυτή την στιγμή πρόσβαση σε Windows 8 (ούτε σε Vista) δεν μπορώ να τα δοκιμάσω.

 

ΥΓ2. Σε Windows XP και σε Windows 7, όπου το έχω δοκιμάσει και προσωπικά με επιτυχία, μπορείς να αλλάξεις την default κωδικοσελίδα της κονσόλας, αλλάζοντας στο μητρώο την σχετική τιμή του κλειδιού:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP]
π.χ. στο screenshot από Windows XP που παραθέτω παρακάτω σε spoiler, έχω αλλαγμένη την default κωδικοσελίδα σε 1253...

 

 

 

post-38307-0-12209400-1414739010_thumb.jpg

 

 

Αυτό, σε συνδυασμό με την αλλαγή της γραμματοσειράς της κονσόλας από raster σε Lucida Console (ή σε Consolas) μας επιτρέπει να τυπώνουμε ελληνικά μηνύματα στην κονσόλα μέσα από console applications, χωρίς να χρειάζεται να κάνουμε τίποτε άλλο.

Π.χ. γράφουμε απλώς:

puts( "Με λένε Αρτέμη" );

και τυπώνεται κανονικά στην κονσόλα.

 

ΠΡΟΣΟΧΗ: Επειδή είσαι σε Windows 8 από ότι καταλαβαίνω από τα screenshots σου, MHN πειράξεις το μητρώο πριν βεβαιωθείς πως θα δουλέψει (google is your friend). Επίσης, ΜΗΝ βάλεις στο μητρώο για κωδικοσελίδα την 65001 (όπως προτείνουν πολλά links στο Google για και καλά UTF8 support). Όταν το έκανα εγώ σε Windows XP, τα Windows δεν ξανα-μπούταραν (αναγκάστηκα να χρησιμοποιήσω 3rd party εργαλεία για να ξανα-μπουτάρω και να επαναφέρω το μητρώο).

 

Μπορείς όμως να πειραματιστείς με ασφάλεια με την εντολή chcp σε ένα παράθυρο γραμμής εντολών.

 

Disclaimer: Οποιαδήποτε αλλαγή στο μητρώο είναι επικίνδυνη και μπορεί να σταματήσει την ομαλή λειτουργία των Windows, ακόμα και να τα κάνει να μην μπουτάρουν. Ότι κάνεις, αν κάνεις, θα το κάνεις με δική σου ευθύνη.

Δημοσ.

Για να μπορείς να τυπώνεις ελληνικά μέσα από console applications, δοκίμασε στη γραμμή εντολών να γυρίζεις την κωδικοσελίδα της κονσόλας σε 1253 πριν τρέξεις το πρόγραμμά σου.

 

Π.χ. αν το εκτελέσιμο του προγράμματός σου ονομάζεται myprog.exe, ανοίγεις ένα παράθυρο γραμμής εντολών, πας με cd στον φάκελο που περιέχει το εκτελέσιμο και γράφεις...

chcp 1253
myprog.exe
Όμως για να λειτουργήσει αυτό, θα πρέπει να ορίσεις στο παράθυρο της κονσόλας μια γραμματοσειρά διαφορετική της "raster" που έχει για default. Είτε η Consolas, είτε η Lucida Console (που υπάρχουν ως διαθέσιμες επιλογές) κάνουν. Για να αλλάξεις την γραμματοσειρά της κονσόλας, όταν ανοίξεις ένα παράθυρο γραμμής εντολών (δλδ κονσόλα), κάνε κλικ στην πάνω αριστερή γωνία του και κατόπιν διάλεξε "Ιδιότητες". Οι επιλογές για την γραμματοσειρά βρίσκονται στην αντίστοιχη καρτέλα ("Γραμματοσειρά").

 

ΥΓ1. Διαβάζω μόλις τώρα στην σχετική σελίδα της Microsoft, πως στα Windows 8 (και Vista) ως κωδικοσελίδα για ελληνικά προτείνεται η 869, ενώ η 1253 δεν αναφέρεται καθόλου. Αυτά που σου γράφω εγώ παραπάνω, είναι δοκιμασμένα σε Windows XP και σε Windows 7, αλλά μιας και δεν έχω αυτή την στιγμή πρόσβαση σε Windows 8 (ούτε σε Vista) δεν μπορώ να τα δοκιμάσω.

 

ΥΓ2. Σε Windows XP και σε Windows 7, όπου το έχω δοκιμάσει και προσωπικά με επιτυχία, μπορείς να αλλάξεις την default κωδικοσελίδα της κονσόλας, αλλάζοντας στο μητρώο την σχετική τιμή του κλειδιού:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP]
π.χ. στο screenshot από Windows XP που παραθέτω παρακάτω σε spoiler, έχω αλλαγμένη την default κωδικοσελίδα σε 1253...

 

 

 

Αυτό, σε συνδυασμό με την αλλαγή της γραμματοσειράς της κονσόλας από raster σε Lucida Console (ή σε Consolas) μας επιτρέπει να τυπώνουμε ελληνικά μηνύματα στην κονσόλα μέσα από console applications, χωρίς να χρειάζεται να κάνουμε τίποτε άλλο.

Π.χ. γράφουμε απλώς:

puts( "Με λένε Αρτέμη" );

και τυπώνεται κανονικά στην κονσόλα.

 

ΠΡΟΣΟΧΗ: Επειδή είσαι σε Windows 8 από ότι καταλαβαίνω από τα screenshots σου, MHN πειράξεις το μητρώο πριν βεβαιωθείς πως θα δουλέψει (google is your friend). Επίσης, ΜΗΝ βάλεις στο μητρώο για κωδικοσελίδα την 65001 (όπως προτείνουν πολλά links στο Google για και καλά UTF8 support). Όταν το έκανα εγώ σε Windows XP, τα Windows δεν ξανα-μπούταραν (αναγκάστηκα να χρησιμοποιήσω 3rd party εργαλεία για να ξανα-μπουτάρω και να επαναφέρω το μητρώο).

 

Μπορείς όμως να πειραματιστείς με ασφάλεια με την εντολή chcp σε ένα παράθυρο γραμμής εντολών.

 

Disclaimer: Οποιαδήποτε αλλαγή στο μητρώο είναι επικίνδυνη και μπορεί να σταματήσει την ομαλή λειτουργία των Windows, ακόμα και να τα κάνει να μην μπουτάρουν. Ότι κάνεις, αν κάνεις, θα το κάνεις με δική σου ευθύνη.

 

Μαλιστα... κατάλαβα φίλε ! Ευχαριστω πολύ ! Και οσο για μεγαλη προσοχη ετσι ειναι.....

Δημοσ.

Τίποτα, να είσαι καλά :)

 

Αυτά δυστυχώς είναι θέματα που τα "κουβαλάνε" τα Windows στην κονσόλα τους από την εποχή του dos. Αν δεν θες να ασχοληθείς με όλα αυτά, γράφε τώρα στην αρχή τα μηνύματά σου στα αγγλικά ή έστω σε greeklish, κι αργότερα όταν ασχοληθείς με GUI θα μπορείς να χρησιμοποιείς ελληνικά χωρίς να σε απασχολεί η κονσόλα (εκτός αν χρειαστεί να τυπώσεις και πάλι στην κονσόλα μέσα από το πρόγραμμά σου).

Δημοσ.

παιδια μιας και σας εχω εδω μια τελευτε τελευτεα ερωτιση. Πηγα να κανω ενα ακομα λιγο πιο δυσκολο προγραμμα. Εχει γραφτει σωστα και ειναι ολα ενταξει. απλα μου λεει οτι ενας κωδικας που χρεισημοποιο δεν ειναι ασφαλεις. Πως μπορω αυτο να το παρακαμψω ? εχω εδω μια φωτο: http://prntscr.com/51kgj5

Δημοσ.

Είναι ιδιοτροπία του VS... μπορείς να παρακάμψεις τέτοιου είδους warnings με pragma directives στον προ-επεξεργαστή, αλλά όπως σου έγραψαν και παραπάνω, καλύτερα να αφήσεις το VS και να ξεκινήσεις με Pelles C... ειδικά αν ασχολείσαι με C programming.

Δημοσ.

Είναι ιδιοτροπία του VS... μπορείς να παρακάμψεις τέτοιου είδους warnings με pragma directives στον προ-επεξεργαστή, αλλά όπως σου έγραψαν και παραπάνω, καλύτερα να αφήσεις το VS και να ξεκινήσεις με Pelles C... ειδικά αν ασχολείσαι με C programming.

το προβλημα ειναι οτι και στο pelles C μου βγαζει τα ειδια πραγματα.

Δημοσ.

το προβλημα ειναι οτι και στο pelles C μου βγαζει τα ειδια πραγματα.

Περίεργο, σε μένα που μόλις το δοκίμασα, η Pelles C δεν βγάζει τέτοιου είδους προειδοποίηση, παρόλο που είναι από μαμά αφημένη στο C11 πρότυπο της γλώσσας. Ακόμα κι όταν της ανεβάζω το επίπεδο των προειδοποιήσεων, και πάλι δεν μου βγάζει τέτοιου είδους προειδοποίηση (με ανεβασμένο επίπεδο μου λέει μονάχα πως δεν χρησιμοποιώ το αποτέλεσμα της scanf).

 

Μπορείς να ανεβάσεις screenshot από την Pelles C που να σου λέει πως η scanf είναι deprecated; Από όσο γνωρίζω, η scanf δεν έχει γίνει deprecated στην C11. Απλά, έχει προστεθεί και η χρήση των πιο ασφαλών συναρτήσεων που τελειώνουν σε _s, αλλά είναι προαιρετική η συμπερίληψή τους. Από τη στιγμή που η Pelles C είναι strictly ISO C compiler, μου κάνει πολύ μεγάλη εντύπωση το να σου βγάζει προειδοποίηση ότι και καλά είναι deprecated η scanf.

 

Το concept των _s συναρτήσεων το λανσάρισε η Microsoft στο VS, και πέρασαν αρκετά χρόνια μέχρι να το αποδεχτεί, έστω και ως προαιρετικό, η επιτροπή της C στην C11 αναθεώρηση της γλώσσας. Μάλιστα, από ότι θυμάμαι, οι προαιρετικές _s συναρτήσεις στην ISO C11 διαφέρουν κιόλας ως προς τις παραμέτρους τους συγκριτικά με την αρχική υλοποίηση της Microsoft.

 

Παρόλο που είμαι σχεδόν σίγουρος πως αποκλείεται η Pelles C να σου βγάζει deprecated την scanf (λέω σχεδόν, για να αφήσω ένα περιθώριο μιας και δεν την έχω δοκιμάσει σε Windows 8) μπορείς να της αλλάξεις το πρότυπο αναθεώρησης από C11 σε C99, από το μενού: Έργο -> Επιλογές έργου | Μεταγλώττιση [Πρότυπο αναθεώρησης C] ... το VS δεν υποστηρίζει καν C11... υποστηρίζει κουτσουρεμένο το πρότυπο C99 (δηλαδή με ελλείψεις) και πλήρως το πρότυπο C89.

 

Αυτός είναι και ο βασικός λόγος που σου πρότεινα να μην χρησιμοποιείς το VS αν πρόκειται να ασχοληθείς με C. Και επιμένω, γιατί διαπιστώνω πως επιμένεις στο VS (ήδη τα stdafx.h και _tmain() που χρησιμοποιείς ΔΕΝ είναι στάνταρ C).

 

ΥΓ. Μια 3η επιλογή για στάνταρ C είναι το mingw/ming-w64/tdm gcc toolchain, το οποίο το χρησιμοποιούν πολλά δημοφιλή IDEs, με πολύ γνωστό ανάμεσά τους το cross-platform (εσχάτως και portable) Code::Blocks.

Δημοσ.

ορίστε: http://prntscr.com/51v28bκαι http://prntscr.com/51v2d7 μπορει να μην ειναι προβλημα scanf εχεις δικιο. ΕΙμαι ψαρακας φιλε :) αυτο ειναι το προβλημα(πρωτη φωτο) και αυτος ειναι ο κωδικας(δευτερη φωτο).

Δημοσ.

...

ΕΙμαι ψαρακας φιλε :) αυτο ειναι το προβλημα(πρωτη φωτο) και αυτος ειναι ο κωδικας(δευτερη φωτο).

Ok, εφόσον ξεκινάς τώρα, επιμένω να σου προτείνω να αφήσεις το VS και να πας είτε σε Pelles-C, είτε σε Code::Blocks (κατά την άποψή μου, η Pelles-C είναι πιο κατάλληλη γιατί είναι αποκλειστικά για C).

 

Δεν ξέρω από που διαβάζεις για να μάθεις C, αλλά προσπάθησε να βρεις κάποια πηγή που να καλύπτει στάνταρ C (τουλάχιστον ISO C90, ή ακόμα καλύτερα και ISO C99).

 

H _tmain() είναι VS specific πράγμα, οπότε είναι απολύτως φυσιολογικό η Pelles-C (και οποιοσδήποτε άλλος compiler) να βαράει errors. Η ρουτίνα εισόδου στην C είναι η main() και συντάσσεται είτε ως...

int main( void )
{
  ...
}
όταν το πρόγραμμά σου δεν πρόκειται να χρησιμοποιήσει ορίσματα γραμμής εντολών (σε αυτή την κατηγορία ανήκεις εσύ προς το παρόν),

 

είτε ως...

int main( int argc, char *argv[] )
{
  ...
}
όταν το πρόγραμμά σου πρόκειται να χρησιμοποιήσει ορίσματα γραμμής εντολών (command line arguments).

 

Τώρα, σε ότι αφορά το Code::Blocks, το λάθος που σου βγάζει είναι πως δεν έχεις σετάρει σωστά τον compiler. Υποθέτω πως από τις 3 διαθέσιμες επιλογές που είχες για κατέβασμα στο λινκ που έδωσα πριν, μάλλον διάλεξες την 1η η οποία ΔΕΝ έχει compiler, αλλά μονάχα το IDE. Αν αποφασίσεις τελικά να χρησιμοποιήσεις Code::Blocks αντί για Pelles C, κατέβασε & εγκατέστησε κάποια από τις άλλες 2 επιλογές, οι οποίες περιλαμβάνουν το tdm-gcc toolchain και το σετάρουν αυτόματα. Στα εξηγεί λεπτομερώς στο λινκ που σου έδωσα, ακριβώς κάτω από το πίνακα με τα downloads.

 

ΥΓ. Η Pelles-C υποστηρίζει και Micorsoft extensions (έχει και δικά της) οπότε αν τα ενεργοποιήσεις ίσως καταλαβαίνει την _tmain()... δεν θυμάμαι καθόλου. Δεν έχεις λόγο όμως να χρησιμοποιήσεις μη-στάνταρ extensions εφόσον τώρα ξεκινάς.

Δημοσ.

Μελεταω απο παλιο βιβλιο. Ειναι απο την ομάδα Waite Mitchell Waite και Stephen Prata. οκ. θα ακολουθίσω τις συμβουλες σου κατα γραμμα και θα σου πω πως πηγε στο Pelles C(μαλλον θα χρεισημοπειο Pelles C αφου λες και συ οτι ειναι οτι καλητερο για τωρα.


Ευχαριστώ πολύ !!! Θα κανω μια ακομα ερωτιση :) σε έχω καταχραστεί φιλε μου :)

 

Αυτο ειναι το αρχικο προγραμμα:

#include "stdio.h"
#include "stdlib.h"


int main( int argc, char *argv[] )
{
    float weight, value;
    char beep;
    beep = '\007';
    printf(" Thes na 3ereis to varos sou se xrusafi ??");
    printf("Parakalw dwse to varos sou se livres,");
    printf(" kai 8a doume.\n");
    scanf("%f", &weight);
    value = 117070 * weight * 14.5833 ;
    printf(" %c to varos sou a3izei se xruso €%.2f%c. \n",
        beep, value, beep);
    printf(" A3izeis polla se xruso loipon !!! An i timh tou xrusou pesei, ");
    printf(" tote trwge perissotero\n gia na daitiriseis tin a3ia sou !!! \n");
    system("Pause");
    return 0;
}
 

Η ερωτιση μου: θελω να αλλαξω την γραμμη value = 117070 * weight * 14.5833 ;  και να αλλαξω το value = 14.5833 και να βαλω τον αριθμο των ουγγιων που υπαρχουν στο κιλο και οχι στη λιβρα. Και εμπλεξα τα μπουτια μου. ΓΙνετε χαμος. Και θελω να ρωτισο αμα πρεπει να αλλαξω μονο αυτο οταν αλλαζω το 14.5833 η και κατι αλλο. Αμα ειναι και κατι αλλο ναι αλλιως εκανα καπιο λαθος στους υπολογισμους.

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

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

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

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

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

Σύνδεση

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

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

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