THMMY.gr

Μαθήματα Βασικού Κύκλου => Δομημένος Προγραμματισμός => Topic started by: evageliav on April 05, 2008, 11:40:32 am



Title: Απορίες στην "C"
Post by: evageliav on April 05, 2008, 11:40:32 am
Ποιά είναι η διαφορά της πρότασης:
int k ;  με την signed int k ;, δεδομένου οτι στην πρώτη πρόταση δε δηλώνουμε τύπο ,δε περιορίζουμε τη μεταβλητή ,άρα είναι γενικώς  προσημασμένη ,ή μήπως δεν είναι έτσι ;

Επίσης εναλλακτικά  μπορούμε να χρησιμοποιούμε τον τύπο char ή int  αφού και οι δυο αναφέρονται σε ακέραιους με τη διαφορά οτι ο ένας δεσμεύει 1 και ο άλλος 2 bytes ;



Title: Re: Απορίες στην "C"
Post by: MARIOS on April 05, 2008, 11:55:17 am
βασικά το char δεσμεύει θέσεις μνήμης για μεταβλητές όχι ακεραίους αλλά χαρακτήρες ενώ το int για ακεραίους


Title: Re: Απορίες στην "C"
Post by: elen// on April 05, 2008, 12:31:36 pm
απο τις σημειωσεις μεχρι που πρεπει να διαβασουμε για να κανουμε την εργασια?ευχαριστω


Title: Re: Απορίες στην "C"
Post by: Nessa NetMonster on April 05, 2008, 13:03:44 pm
βασικά το char δεσμεύει θέσεις μνήμης για μεταβλητές όχι ακεραίους αλλά χαρακτήρες ενώ το int για ακεραίους

Και οι χαρακτήρες ουσιαστικά είναι νούμερα (δες τον πίνακα ASCII για να δεις ποια νούμερα είναι). Μπορείς να χρησιμοποιήσεις και τους δύο τρόπους για να αναφερθείς στην τιμή ενός char. Πχ η συνθήκη (c<'1' || c>'5') είναι ισοδύναμη με την (c<49 || c>53).


Title: Re: Απορίες στην "C"
Post by: MARIOS on April 05, 2008, 13:34:30 pm
βασικά το char δεσμεύει θέσεις μνήμης για μεταβλητές όχι ακεραίους αλλά χαρακτήρες ενώ το int για ακεραίους

Και οι χαρακτήρες ουσιαστικά είναι νούμερα (δες τον πίνακα ASCII για να δεις ποια νούμερα είναι). Μπορείς να χρησιμοποιήσεις και τους δύο τρόπους για να αναφερθείς στην τιμή ενός char. Πχ η συνθήκη (c<'1' || c>'5') είναι ισοδύναμη με την (c<49 || c>53).

ναι σίγουρα αλλά τότε το char δεν χρειάζετε να υπάρχει...απλώς αυτο που ενοούσα εγώ (ή μάλλον ήθελα να εννοήσω  :P) είνια ότι όταν χρησιμοποιείς strings πχ, δεν τα χρησιμοποιείς με νούμερα αλλά με τους έτοιμους χαρακτήρες.


Title: Re: Απορίες στην "C"
Post by: evageliav on April 05, 2008, 13:58:59 pm
απο τις σημειωσεις μεχρι που πρεπει να διαβασουμε για να κανουμε την εργασια?ευχαριστω


Από τις σημειώσεις μέχρι σελ 34(μέχρι τέλος των συναρτήσεων)


Title: deleted
Post by: BOBoMASTORAS on April 05, 2008, 15:27:36 pm
deleted


Title: Re: Απορίες στην "C"
Post by: evageliav on April 06, 2008, 16:08:45 pm
H έκφραση : for(i=0;i<=k;i++)  ισοδυναμεί με την for(i=0&&i<=k&&i++) ;

Eπίσης γιατί χρειάζεται στην έκφραση  void fun1(void);  το void μέσα στην παρένθεση; Αφού δηλώνουμε οτι η συνάρτηση είναι  τύπου void, δεν επιστρέφει τιμές,δεν αρκεί void fun1() ;  (παράδειγμα σελ 29 φυλλαδίου)


Title: Re: Απορίες στην "C"
Post by: Junior on April 06, 2008, 16:32:59 pm
H έκφραση : for(i=0;i<=k;i++)  ισοδυναμεί με την for(i=0&&i<=k&&i++) ;

Όχι. Η μόνη συνθήκη στην πρώτη έκφραση είναι το i<=k
Το i=0 είναι μια εντολή που τρέχει πριν την πρώτη εκτέλεση των εντολών του βρόχου
Το i++ είναι μια εντολή που τρέχει στο τέλος κάθε επανάληψης του βρόχου

Αυτή η σύνταξη υπάρχει γιατί βολεύει πάρα πολύ. Είνα πάρα πολύ συνηθισμένο να θέλουμε να τρέξει ένα σύνολο εντολών k φορές και μια παράμετρος να παίρνει τιμές πρώτα 0 μετά 1 μετά 2... μέχρι k-1. Αυτό γίνεται γράφοντας απλά for(i=0;i<=k;i++)

Eπίσης γιατί χρειάζεται στην έκφραση  void fun1(void);  το void μέσα στην παρένθεση; Αφού δηλώνουμε οτι η συνάρτηση είναι  τύπου void, δεν επιστρέφει τιμές,δεν αρκεί void fun1() ;  (παράδειγμα σελ 29 φυλλαδίου)

Το πρώτο void όπως λες αναφέρεται στον τύπο μεταβλητής που επιστρέφει η συνάρτηση, δηλαδή στην έξοδο (void σημαίνει δεν επιστρέφει τίποτα).
Το δεύτερο void αναφέρεται στις μεταβλητές εισόδου της συνάρτησης. Επειδή δεν παίρνει καμιά είσοδο, γράφουμε void.


Title: Re: Απορίες στην "C"
Post by: AgentCain on April 06, 2008, 16:36:59 pm
Στη σελίδα 28, γράφει στη μέση της σελίδας

"Μια συνάρτηση μπορεί να μην επιστρέφει τιμή ή ακόμη μπορεί και να μην δέχεται ορίσματα. Στις περιπτώσεις αυτές στη θέση της παραμέτρου "προσδιοριστής_τύπου" και στη θέση του καταλόγου τυπικών παραμέτρων θα πρέπει να υπάρχει η λέξη void."

Φαντάζομαι ότι η απάντηση σε αυτό που ρωτάς σχετίζεται κυρίως με τον εκάστοτε compiler.
Ο κάθε ένας έχει τις δικές του ιδιοτροπίες.
Καλύτερα να ρωτήσεις τον καθηγητή σχετικά.


Title: Re: Απορίες στην "C"
Post by: Wanderer on April 06, 2008, 16:47:40 pm
Μια παρατήρηση πάνω σε αυτό: προσωπικά βρίσκω χρήσιμο να χρησιμοποιώ τον εξής τρόπο γραφής της for:

for(int i=0;i<=k;i++) Λειτουργεί με τον ίδιο ακριβώς τρόπο όπως θα λειτουργούσε και η δικιά σου, με την διαφορά πως δεν χρειάζεται να δηλώσουμε την i σαν μεταβλητή, διότι τη δημιουργούμε τη στιγμή της επανάληψης και μετά το πέρας του βρόγχου καταστρέφεται. Δυστυχώς όμως αυτή η μέθοδος δεν δουλεύει στη Borland C++. Βγάζει σφάλμα.

Επίσης, δεν ξέρω γιατί, η συνθήκη i<=k μου έβγαζε λανθασμένα αποτελέσματα. Ένας εναλλακτικός τρόπος γραφής είναι i<(k+1)


Title: Re: Απορίες στην "C"
Post by: Junior on April 06, 2008, 16:52:41 pm
Μια παρατήρηση πάνω σε αυτό: προσωπικά βρίσκω χρήσιμο να χρησιμοποιώ τον εξής τρόπο γραφής της for:

for(int i=0;i<=k;i++) Λειτουργεί με τον ίδιο ακριβώς τρόπο όπως θα λειτουργούσε και η δικιά σου, με την διαφορά πως δεν χρειάζεται να δηλώσουμε την i σαν μεταβλητή, διότι τη δημιουργούμε τη στιγμή της επανάληψης και μετά το πέρας του βρόγχου καταστρέφεται.

Έτσι όμως κατά 99% θα την πατήσεις και θα σου δημιουργήσει σφάλμα στο επόμενο for που θα κάνεις, γιατί θα ξαναορίσεις τη μεταβλητή i!
Αφού την πάτησα εκατομμύρια φορές υιοθέτησα τον άλλο τρόπο (να ορίζω πρώτα το i και μετά να ξεκινάω το for)


Title: Re: Απορίες στην "C"
Post by: Wanderer on April 06, 2008, 16:55:25 pm
Δυστυχώς όμως αυτή η μέθοδος δεν δουλεύει στη Borland C++. Βγάζει σφάλμα.
Όμως στον DevC++ αυτό που λέω δουλεύει μια χαρά ;) Τώρα όπως βολεύει τον καθένα :P


Title: deleted
Post by: BOBoMASTORAS on April 06, 2008, 16:57:03 pm
deleted


Title: Re: Απορίες στην "C"
Post by: AgentCain on April 06, 2008, 16:57:43 pm
Και γω με τη σειρά μου παρατήρησα κάτι περίεργο.
Σε μια επανάληψη do while που έγραψα με στόχο τον έλεγχο των δεδομένων μου έβγαζε warning ότι "η συνθήκη είναι πάντα false".
Βέβαια το πρόγραμμα ΚΑΙ ο έλεγχος δούλεψαν όπως έπρεπε.

wanderer
Όχι ότι έχει σχέση, αλλά αν δηλώσεις τη μεταβλητή με αυτό τον τρόπο και η επανάληψή σου βρίσκεται μέσα σε μια άλλη επανάληψη, το πρόγραμμα σε γενικές γραμμές καθυστερεί ή όχι?


Title: Re: Απορίες στην "C"
Post by: Wanderer on April 06, 2008, 17:05:21 pm
Bob Μάστορα δίκιο έχεις, απλά ούτως ή άλλως οι compilers με τους οποίους δουλεύουμε στη C είναι για C++. Αλλά εντάξει, για καθαρή C είναι λάθος :P

wanderer
Όχι ότι έχει σχέση, αλλά αν δηλώσεις τη μεταβλητή με αυτό τον τρόπο και η επανάληψή σου βρίσκεται μέσα σε μια άλλη επανάληψη, το πρόγραμμα σε γενικές γραμμές καθυστερεί ή όχι?
Δεν νομίζω ότι έχει μεγάλη σημασία.. αλλά ας απαντήσει κάποιος πιο σχετικός. Γενικά νομίζω ότι αυτός ο τρόπος προτιμάται επειδή μπορείς να γράφεις γρήγορα κώδικα επανάληψης οποιαδήποτε στιγμή χωρίς να χρειάζεται να δηλώνεις μεταβλητές. Και μετά καταστρέφονται όταν τελειώνει η επανάληψη.
Εννοείται ότι για τις εργασίες στα πλαίσια του μαθήματος καμία αντιληπτή καθυστέρηση δεν θα υπάρξει!


Title: deleted
Post by: BOBoMASTORAS on April 07, 2008, 19:39:11 pm
deleted


Title: Re: Απορίες στην "C"
Post by: Πιστολέρο on April 07, 2008, 22:37:56 pm
Οταν γράφω printf ("μια πρόταση στα ελληνικά") στο visual studio, η κονσόλα κατά την εκτέλεση μου βγάζει κινέζικα.Πώς διορθώνεται αυτο??


Title: Re: Απορίες στην "C"
Post by: OtiNaNAi on April 07, 2008, 23:31:25 pm
Οταν γράφω printf ("μια πρόταση στα ελληνικά") στο visual studio, η κονσόλα κατά την εκτέλεση μου βγάζει κινέζικα.Πώς διορθώνεται αυτο??

η κονσολα αναγνωριζει μονο λατινικους χαρακτηρες οποτε χρησιμοποίησε greeklish


Title: Re: Απορίες στην "C"
Post by: sarovios on April 08, 2008, 15:35:41 pm
μπορει να μου πει καποιος σε αυτο το προγραμμα οταν βαζω χ=9 Υ=4 και Ζ=3 γιατι μου βγαζει αποτελεσμα 7220?
#include <stdio.h>

void main()
{
int x,y,z;
printf ("Dose X\n");
scanf ("%d",&x);
printf ("Dose Y\n");
scanf ("%d",&y);
printf ("Dose Z\n");
scanf ("%d",&z);
if(x==y+z)
printf ("X=Y+Z");
else
printf ("%d",&x);
}
Δε θα επρεπε να βγαζει 7?


Title: Re: Απορίες στην "C"
Post by: aliakmwn on April 08, 2008, 15:39:21 pm
Αυτο:

if(x==y+z)

δοκιμασε να το γραψεις:

if(x==(y+z))

Δεν ξερω αν θα βοηθησει...


Title: Re: Απορίες στην "C"
Post by: Καμένος on April 08, 2008, 15:42:18 pm
Δοκίμασε if (x==(y+z))..

Επίσης γιατί να σου βγάλει αποτέλεσμα 7?
Όταν x=y+z εκτύπώνεις "Χ=Υ+Ζ"
και όταν δεν είναι εκτυπώνεις το x

Με τις εισόδους x=9, y=4 και z=3 θα εκτυπώσει 9
Αν το x=7, y=4 και z=3 θα εκτυπώσει "Χ=Υ+Ζ"

edit.. Με πρόλαβες..


Title: Re: Απορίες στην "C"
Post by: Wanderer on April 08, 2008, 15:44:10 pm
Κατ'αρχάς εννοείς μάλλον 9, όχι 7 (αφού 7 δίνεις τιμή στο Χ).

Επίσης στην printf δεν βάζουμε το & μπροστά από την μεταβλητή, διότι έτσι θα εκτυπώσει τη διεύθυνση της μεταβλητής και όχι την τιμή της.

Και κάτι άσχετο με το πρόβλημα σου αλλά έχει να κάνει με την ορθότητα του κώδικα: σε περίπτωση που έβγαιναν ίσα το χ με το y+z, δεν είναι σωστή η σύνταξη της printf("X=Y+Z"), πρέπει να το γράψεις:
  printf("%s","X=Y+Z") αν θες να σου εμφανίσει το string ή prinf("%d",y+z) για την τιμή.


Title: Re: Απορίες στην "C"
Post by: Καμένος on April 08, 2008, 15:44:54 pm
Σωστός.. Γι αυτό εκτυπώνει το 7220..


Title: Re: Απορίες στην "C"
Post by: vasso on April 08, 2008, 15:48:10 pm
Και κάτι άσχετο με το πρόβλημα σου αλλά έχει να κάνει με την ορθότητα του κώδικα: σε περίπτωση που έβγαιναν ίσα το χ με το y+z, δεν είναι σωστή η σύνταξη της printf("X=Y+Z"), πρέπει να το γράψεις:
  printf("%s","X=Y+Z") αν θες να σου εμφανίσει το string ή prinf("%d",y+z) για την τιμή.

δεν νομίζω ότι είναι απαραίτητο αυτό. Στην σύνταξη της printf βάζαμε το κείμενο σε αυτάκια και μόνο όταν είχαμε κάποιο string αποθηκευμένο σε πίνακα χρησιμοποιούσαμε το %s. Αλλιώς θα έπρεπε κάθε φορά πριν το , μέσα στην παρένθεσή της να έχουμε μόνο %* )


Title: Re: Απορίες στην "C"
Post by: Καμένος on April 08, 2008, 15:51:11 pm
Και κάτι άσχετο με το πρόβλημα σου αλλά έχει να κάνει με την ορθότητα του κώδικα: σε περίπτωση που έβγαιναν ίσα το χ με το y+z, δεν είναι σωστή η σύνταξη της printf("X=Y+Z"), πρέπει να το γράψεις:
  printf("%s","X=Y+Z") αν θες να σου εμφανίσει το string ή prinf("%d",y+z) για την τιμή.



δεν νομίζω ότι είναι απαραίτητο αυτό. Στην σύνταξη της printf βάζαμε το κείμενο σε αυτάκια και μόνο όταν είχαμε κάποιο string αποθηκευμένο σε πίνακα χρησιμοποιούσαμε το %s. Αλλιώς θα έπρεπε κάθε φορά πριν το , μέσα στην παρένθεσή της να έχουμε μόνο %* )

Όντως... Αχχχ τη ξεχάσαμε τη C.. Ε με τόση cout...


Title: Re: Απορίες στην "C"
Post by: sarovios on April 08, 2008, 15:51:24 pm
οκ ευχαριστω,δουλεψε


Title: Re: Απορίες στην "C"
Post by: vasso on April 08, 2008, 15:54:14 pm
Τ

T? όπως Τάσος; Τρανσυλβανία; Τεραμπάιτ; Τι να εννοεί ο ποιητής;


Title: Re: Απορίες στην "C"
Post by: Nessa NetMonster on April 08, 2008, 15:55:46 pm
Πού ήταν το λάθος τελικά;

Δεν πρόλαβα να πω τη γνώμη μου για να βοηθήσω, αλλά νομίζω ότι ήταν εδώ:
printf ("%d",&x);

Δε χρειαζόταν το &... σωστά;


Title: Re: Απορίες στην "C"
Post by: Wanderer on April 08, 2008, 15:56:19 pm
Είχα στο μυαλό μου αρχικά ότι θέλει να εμφανίσει το αριθμητικό αποτέλεσμα :P όντως έχεις δίκιο ότι δεν χρειάζεται αναγκαστικά το "%s" για να εκτυπώσεις μία φράση. Περισσότερο το έγραψα για να δει και τη διαφορά.

edit: όχι, εννοεί Τ+κατα λάθος πάτημα του "post" :D θα το διαγράψω οσονούπω :P


Title: Re: Απορίες στην "C"
Post by: vasso on April 08, 2008, 15:57:38 pm
ναι.. έτσι


Title: deleted
Post by: BOBoMASTORAS on April 08, 2008, 16:42:14 pm
deleted


Title: Re: Απορίες στην "C"
Post by: aliakmwn on April 08, 2008, 16:55:46 pm
Ή μπορεις να δεις στο ethmmy, στο μαθημα Δομημενος Προγραμματισμος, οπου μεσα στο Υλικο ο Κορτεσης εχει ανεβασει κατι αρχειακια για ελληνικα στο DOS.
Dεν ξερω αν δουλευουν, απλα τα εχω δει.


Title: Re: Απορίες στην "C"
Post by: LegalizeMe on April 08, 2008, 17:44:53 pm
φίλε εμένα ούτε με τα εν λόγω αρχειάκια δεν δούλεψαν οι ελληνικοί χαρακτήρες.
..και επειδή βαρέθηκα να την ψάχνω χωρίς αποτέλεσμα ενώ έχω έτοιμο τον κώδικά μου, μάλλον θα καταλήξω στα greeklish.
δεν τρώει κανα κόλλημα με τα greeklish έτσι ? (Όχι ο compiler αλλά ο καθηγητής λέω :) )
ας πεί κανένας που παρέδωσε παλιότερα..



Title: Re: Απορίες στην "C"
Post by: apostolos1986 on April 08, 2008, 17:46:35 pm
όχι ρε παιδιά δεν υπάρχει πρόβλημα με τα greeklish...!!


Title: Re: Απορίες στην "C"
Post by: LegalizeMe on April 08, 2008, 17:50:44 pm
 :D ok loipon file thank you
(οκ λοιπόν φίλε θένκ γιου)


Title: Re: Απορίες στην "C"
Post by: Papatanasis on April 08, 2008, 17:52:18 pm
Ξερει κανεις ποια ειναι η συναρτηση της ακεραιας διαιρεσης?


Title: Re: Απορίες στην "C"
Post by: Nessa NetMonster on April 08, 2008, 18:00:55 pm
%

Edit: Συγγνώμη, φαίνεται ότι αυτό είναι το mod ^tomato^


Title: Re: Απορίες στην "C"
Post by: Papatanasis on April 08, 2008, 18:03:58 pm
%
Δηλαδη αυτο αντιστοιχει με το div που ειχαμε μαθει στο λυκειο?


Title: deleted
Post by: BOBoMASTORAS on April 08, 2008, 18:07:28 pm
deleted


Title: Re: Απορίες στην "C"
Post by: Papatanasis on April 08, 2008, 18:17:11 pm
Αν ομως εχω διαιρεση μεταξυ ενος ακεραιου και ενος πραγματικου,τοτε τι αποτελεσμα θα εχω με το / ?
Γιατι εγω θελω να κρατησω το ακεραιο μερος του αποτελεσματος.


Title: Re: Απορίες στην "C"
Post by: Nessa NetMonster on April 08, 2008, 18:30:00 pm
Καταρχάς είμαι βλάκας και ο Bob έχει δίκιο...

Τώρα για να είσαι σίγουρος βάλε floor(a/b).


Title: Re: Απορίες στην "C"
Post by: Papatanasis on April 08, 2008, 18:33:03 pm
Καταρχάς είμαι βλάκας και ο Bob έχει δίκιο...

Τώρα για να είσαι σίγουρος βάλε floor(a/b).

Ελπιζω αυτο να μου βγαλει το ακεραιο μερος!
Thanks παντως!


Title: Re: Απορίες στην "C"
Post by: Emfanever on April 08, 2008, 19:23:32 pm
Καταρχάς είμαι βλάκας και ο Bob έχει δίκιο...

Τώρα για να είσαι σίγουρος βάλε floor(a/b).

Ελπιζω αυτο να μου βγαλει το ακεραιο μερος!
Thanks παντως!
Δεν είμαι σίγουρος αλλά μπορείς επίσης να γράψεις π.χ w=a/b, όπου w μεταβλητή που έχεις δηλώσει ως int και κατά συνέπεια κρατάει το ακέραιο μέρος!


Title: Re: Απορίες στην "C"
Post by: MonteCristo on April 08, 2008, 21:57:21 pm
Καταρχάς είμαι βλάκας και ο Bob έχει δίκιο...

Τώρα για να είσαι σίγουρος βάλε floor(a/b).

Ελπιζω αυτο να μου βγαλει το ακεραιο μερος!
Thanks παντως!
Δεν είμαι σίγουρος αλλά μπορείς επίσης να γράψεις π.χ w=a/b, όπου w μεταβλητή που έχεις δηλώσει ως int και κατά συνέπεια κρατάει το ακέραιο μέρος!

+1


Title: Re: Απορίες στην "C"
Post by: vasso on April 09, 2008, 06:20:09 am
Καταρχάς είμαι βλάκας και ο Bob έχει δίκιο...

Τώρα για να είσαι σίγουρος βάλε floor(a/b).

Ελπιζω αυτο να μου βγαλει το ακεραιο μερος!
Thanks παντως!
Δεν είμαι σίγουρος αλλά μπορείς επίσης να γράψεις π.χ w=a/b, όπου w μεταβλητή που έχεις δηλώσει ως int και κατά συνέπεια κρατάει το ακέραιο μέρος!

Ή όπως είπαμε σε άλλο τόπικ, να κάνεις type casting  στην πράξη δηλαδή

int k;
float m,n;
...
k=(int) m/n;


Title: Re: Απορίες στην "C"
Post by: Aurelius on April 09, 2008, 10:12:18 am
Καταρχάς είμαι βλάκας και ο Bob έχει δίκιο...

Τώρα για να είσαι σίγουρος βάλε floor(a/b).

Ελπιζω αυτο να μου βγαλει το ακεραιο μερος!
Thanks παντως!
Δεν είμαι σίγουρος αλλά μπορείς επίσης να γράψεις π.χ w=a/b, όπου w μεταβλητή που έχεις δηλώσει ως int και κατά συνέπεια κρατάει το ακέραιο μέρος!

Ή όπως είπαμε σε άλλο τόπικ, να κάνεις type casting  στην πράξη δηλαδή

int k;
float m,n;
...
k=(int) m/n;


Το πιο απλο...


Title: deleted
Post by: BOBoMASTORAS on April 09, 2008, 22:16:19 pm
deleted


Title: Re: Απορίες στην "C"
Post by: Aurelius on April 10, 2008, 12:06:42 pm
Καταρχάς είμαι βλάκας και ο Bob έχει δίκιο...

Τώρα για να είσαι σίγουρος βάλε floor(a/b).

Ελπιζω αυτο να μου βγαλει το ακεραιο μερος!
Thanks παντως!
Δεν είμαι σίγουρος αλλά μπορείς επίσης να γράψεις π.χ w=a/b, όπου w μεταβλητή που έχεις δηλώσει ως int και κατά συνέπεια κρατάει το ακέραιο μέρος!

Ή όπως είπαμε σε άλλο τόπικ, να κάνεις type casting  στην πράξη δηλαδή

int k;
float m,n;
...
k=(int) m/n;


Το πιο απλο...

Αφου λεει float m, n.

Μπορει να τα αποθηκευει σε float, οποτε τοτε θελει type casting :P


Title: deleted
Post by: BOBoMASTORAS on April 10, 2008, 14:31:11 pm
deleted


Title: Re: Απορίες στην "C"
Post by: Aurelius on April 10, 2008, 14:35:54 pm
Γιατι ?

Αν ειναι 5.0/3.0, δεν μπορει να θελει να βρει το αντιστοιχο ακεραιο μερος, αν αυτοι ηταν ακεραιοι?


Title: Re: Απορίες στην "C"
Post by: sarovios on April 16, 2008, 19:53:14 pm
To διαφορο για τη c ειναι το ---> !=    ???


Title: Re: Απορίες στην "C"
Post by: stefos on April 16, 2008, 20:06:06 pm
ναι, αυτό είναι αν αναφέρεσαι στη χρήση του μέσα σε συνθήκη.


Title: Re: Απορίες στην "C"
Post by: Nessa NetMonster on April 16, 2008, 22:07:30 pm
Βασικά γι'αυτά που λέγαμε παραπάνω ανακάλυψα το εξής: Αν οι a και b είναι ακέραιοι, τότε η εντολή c=a/b; θα δώσει το ακέραιο μέρος της διαίρεσης ακόμα και αν ο c είναι ορισμένος ως float!

Μα τι στριφνή γλώσσα :(


Title: Re: Απορίες στην "C"
Post by: λήθη on April 17, 2008, 02:04:56 am
Ε ναι..θα πρεπει να κανεις type casting..


Title: Re: Απορίες στην "C"
Post by: Nessa NetMonster on April 17, 2008, 09:36:45 am
Ναι, σωστά, έτσι γίνεται...


Title: Re: Απορίες στην "C"
Post by: Καμένος on April 17, 2008, 10:31:03 am
Βασικά γι'αυτά που λέγαμε παραπάνω ανακάλυψα το εξής: Αν οι a και b είναι ακέραιοι, τότε η εντολή c=a/b; θα δώσει το ακέραιο μέρος της διαίρεσης ακόμα και αν ο c είναι ορισμένος ως float!

Μα τι στριφνή γλώσσα :(

Αφού διαιρείς ακέραιο με ακέραιο θα δώσει αποτέλεσμα ακέραιο. Μετά η C θα κάνει typecasting του αποτελέσματος σε float με το  =, αλλά προφανώς θα έχει ήδη αποκοπεί.


Title: Re: Απορίες στην "C"
Post by: Nessa NetMonster on April 17, 2008, 10:33:52 am
Ενώ άμα βάλεις (float) πριν την πράξη γίνεται.

 ^idiot^ :P


Title: Re: Απορίες στην "C"
Post by: Καμένος on April 17, 2008, 11:10:34 am
Αν βάλεις (float) a/b το float δεν πάει στην πράξη αλλά στο a. Έτσι έχεις διαίρεση float με int με αποτέλεσμα float.


Title: Re: Απορίες στην "C"
Post by: Nessa NetMonster on April 17, 2008, 16:06:45 pm
Ουγκαγκαμπούμ μπουμ γκι... :D


Title: deleted
Post by: BOBoMASTORAS on April 18, 2008, 00:14:47 am
deleted


Title: Re: Απορίες στην "C"
Post by: Nessa NetMonster on April 18, 2008, 00:24:53 am
Αφού αν έχεις float f,g τότε ανάλογα με το αν το i είναι float ή int η i=f/g θα σου βγάλει διαφορετικά αποτελέσματα.


Title: deleted
Post by: BOBoMASTORAS on April 18, 2008, 00:33:07 am
deleted


Title: Re: Απορίες στην "C"
Post by: mAn-_0lis on May 04, 2008, 18:27:30 pm
Ξέρει κανείς πως υψώνουμε ένα αριθμό σε δύναμη στη C;
Έχω την εντύπωση οτι είναι το σύμβολο "^", είναι μεν και το δυαδικο αποκλειστικο OR αλλα όταν βρίσκεται σε πράξεις δε μπορεί να σημαίνει OR αρα ίσως να είναι αυτό.
Ευχαριστώ !


Title: Re: Απορίες στην "C"
Post by: Γιώργος on May 04, 2008, 18:29:12 pm
#include <math.h>

Συνάρτηση: pow(βάση, εκθέτης)


 :)


Title: Re: Απορίες στην "C"
Post by: mAn-_0lis on May 04, 2008, 18:30:41 pm
ευχαριστώ πολύ φίλε! ταχύτατο σε βρίσκω!


Title: Re: Απορίες στην "C"
Post by: dimvam on May 07, 2008, 00:33:02 am
Ρε παιδιά έχω το εξής παράδοξο πρόβλημα!
Ο Compiler μου σέρνεται! Χρησιμοποιώ τον Borland που είχε στο e-thmmy και όταν πάω να γράψω κάτι το εμφανίζει στην οθόνη μετά από 6-7 sec, αργεί να ανοίξει το παράθυρο, αργεί χαρακτηριστικά να κάνει compile κ.ά. Και αυτά χωρίς να πειράξω κάτι! Τι συμβαίνει;
Ο υπόλοιπος υπολογιστής λειτουργεί μια χαρά, χωρίς κανένα πρόβλημα.


Title: Re: Απορίες στην "C"
Post by: vasso on May 07, 2008, 02:15:44 am
Ρε παιδιά έχω το εξής παράδοξο πρόβλημα!
Ο Compiler μου σέρνεται! Χρησιμοποιώ τον Borland που είχε στο e-thmmy και όταν πάω να γράψω κάτι το εμφανίζει στην οθόνη μετά από 6-7 sec, αργεί να ανοίξει το παράθυρο, αργεί χαρακτηριστικά να κάνει compile κ.ά. Και αυτά χωρίς να πειράξω κάτι! Τι συμβαίνει;
Ο υπόλοιπος υπολογιστής λειτουργεί μια χαρά, χωρίς κανένα πρόβλημα.

πέτα τον και βάλε dev. Είναι καμένος από χέρι..


Title: Re: Απορίες στην "C"
Post by: tomshare3 on May 07, 2008, 18:41:44 pm
λοιπον εχω το εξης προβλημα... εκει που το προγραμμα ετρεχε μια χαρα σημερα που δοκιμασα να κανω run μ βγαζει: Linker error: bad object file record in module ****.obj ( >:( >:( >:() και το καλυτερο ειναι οτι το ιδιο βγαζουν πλεον ολα τα προγραμματα που ειχα κανει!! :oΑν καποιος γνωριζει ας βοηθησει!...  ---compile κανει κανονικα!!




Title: deleted
Post by: BOBoMASTORAS on May 07, 2008, 18:46:18 pm
deleted


Title: Re: Απορίες στην "C"
Post by: Papatanasis on May 07, 2008, 18:52:53 pm
Να ρωτησω και εγω κατι.Ποια ειναι η συναρτηση για υψωση σε δυναμη?
Γτ ειχα κανει μια μαλακια σε ενα προγραμμα να γραψω χ=10^20 και μου ειπε ο καθηγητης των εργαστηριων
οτι αυτος ειναι ειδικος ορος!!!!!!!!!!!


Title: Re: Απορίες στην "C"
Post by: zeus90 on May 07, 2008, 18:55:20 pm
Πρέπει να είναι η pow (βάση,εκθέτης)


Title: Re: Απορίες στην "C"
Post by: Papatanasis on May 07, 2008, 18:55:55 pm
thanxxxxxxxx


Title: Re: Απορίες στην "C"
Post by: tomshare3 on May 07, 2008, 19:29:04 pm
Εγκατέστησες πρόσφατα κάποιο καινούριο SDK ?

.NET ή κάποιο compiler που μπορεί να τον εγκατέστησε αυτόματα?

ξανακάνε compile το πρόγραμμα και λογικά θα είσαι εντάξει.



τιποτα απο αυτα.... το πιο περιεργο ειναι οτι οταν αλλαξα τη θεση του αρχειου ετρεξε κανονικα... και οποιοδηποτε αρχειο .c προσπαθω να τρεξω σε εκεινο το φακελο απλα δεν τρεχει!! :D :D :D Καποιο προβλημα θα εχει ο borland και δεν δημιουργει σωστα τα .οbj Τεσπα ευχαριστω παντως!!


Title: Re: [Δομημένος Πρ.] Ύλη που έχει καλυφθεί. 07/08
Post by: vasso on May 09, 2008, 04:32:03 am
Αναφέρθηκε εκτενώς και στην fflash.
Θα χρειαστεί σίγουρα στην επόμενη εργασία είπε......

μία περίληψη για το τι κάνει η fflash? δεν την ανέφερε καν πέρσι και δεν υπάρχει στις σημειώσεις


Title: Re: [Δομημένος Πρ.] Ύλη που έχει καλυφθεί. 07/08
Post by: Emfanever on May 11, 2008, 23:08:00 pm
Αναφέρθηκε εκτενώς και στην fflash.
Θα χρειαστεί σίγουρα στην επόμενη εργασία είπε......

μία περίληψη για το τι κάνει η fflash? δεν την ανέφερε καν πέρσι και δεν υπάρχει στις σημειώσεις
το σωστό είναι fflush
Συντάσσεται fflush(stdin);
και καθαρίζει το default κανάλι εισόδου.

H χρησιμότητά του φαίνεται εδώ.

#include <stdio.h>

void  main()
{
   char i,x;

   for(i=0;i<5;i++)  {
       scanf("%c",&x);
       printf("%c\n",x);
   }
}

Επειδή το enter είναι ακολουθία χαρακτήρων τη για i=2 κ 4 θα αποθηκευτεί στο x το enter.
Με την fflush διορθώνεται!

void  main()
{
   char i,x;

   for(i=0;i<5;i++)  {
       fflush(stdin);
       scanf("%c",&x);
        printf("%c\n",x);
   }
}



Title: Re: [Δομημένος Πρ.] Ύλη που έχει καλυφθεί. 07/08
Post by: vasso on May 12, 2008, 05:48:26 am
και γιατί δεν μας είχε προβληματίσει μέχρι τώρα; μήπως είναι κι αυτό μια δυσλειτουργία του borland ή συμβαίνει μόνο σε τύπο char?


Title: Re: [Δομημένος Πρ.] Ύλη που έχει καλυφθεί. 07/08
Post by: Emfanever on May 12, 2008, 13:59:16 pm
Απ'ότι το δοκίμασα το πρόβλημα υπάρχει μόνο σε τύπο char. Στη συγκεκριμένη εργασία είπε θα χρειαστεί  μάλλον, γιατί αν χρησιμοποιήσεις μεταβλητή
char για απαντήσεις του τύπου Nai (n) Oxi(o) μπορεί να δημιουργηθεί πρόβλημα από προηγούμενα scanf


Title: Re: Απορίες στην "C"
Post by: Aurelius on May 12, 2008, 14:17:26 pm
Παιδες, γενικα το καλυτερο που εχετε να κανετε ειναι το google και κατεβασμα κανα σοβαρο βιβλιο tutorial κτλ.

Το www.cplusplus.com ειναι ενα πολυ καλο σαιτ για να λυσετε τις περισσοτερες αποριες σας πανω σε απλα προβληματακια.

Αν εχετε linux μπορειτε να το κατεβασετε και να το εχετε και τοπικα, χωρις να εχετε συνδεση. Αν δεν εχετε linux μπορειτε ειτε να χρησιμοποιησετε καποιο αντιστοιχο προγραμμα offline browser ή να μας πειτε και να το ανεβασουμε καπου.