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

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

Δημοσ.

Καλησπερα, κοιταω τα θεματα 2012-2013 της εξεταστικης της σχολης μου καθως αυριο δινω, και εχω 2 αποριες σε 2 ασκησεις:

 

1)

Ασκηση 2
η
(25%)
Τι θα εμφανισει το παρακατω προγραμμα;
int main()

{

char c;
for(c='a';c<'g';++c)
{
switch (c)
{
case('a'): c+=2;
case('c'): c+=1;
case('d'): c++;
printf("%c\n",c--);
default:c++;
}
}
printf("***%c",c);
return 0;
}

Θα εμφανισει το εξης;

C

***G

 

Αν οχι, θα μπορουσε να μου το εξηγησει καποιος;

 

Και 2)

 

β) Φτιαξτε μια συναρτηση instert_point που θα παιρν
ει ως παραμετρους 2 δεκαδικους διπλης
ακριβειας,θα δημιουργει ένα δεικτη σε point θα τον
αρχικοποιει με τους δοσμενους αριθμους και
θα τον επιστρεφει
 
το boldαρισμενο δεν καταλαβαινω κυριως αυτο με την αρχικοποιηση αν μπορουσε να το εξηγησει καποιος.
  • Moderators
Δημοσ.

Το 1ο μπορείς να το βάλεις σε έναν debugger και να το πας βήμα-βήμα.

Το 2ο σου λέει να φτιάξεις έναν πίνακα από 2 float στον οποίο θα βάζεις τις 2 παραμέτρους.

Δημοσ.

Ναι το καταλαβα το 2ο οτι θελει αυτο, το boldαρισμενο δεν καταλαβαινω ακριβως.

 

Θα ειναι δηλαδη αυτο;

 

struck point *insert_point(float x, float y);

 

return *insert_point;

Δημοσ.

1]

LOOP    c
===================
 0    'a' ->
      (case('a')) 'c' ->
      (case('c')) 'd' ->
      (case('d')) 'e' -> printf("%c\n", 'e'); -> 'd' ->
      (default) 'e'
 1    'f' ->
      (default) 'g'
 2    'h' ->
  -- exit loop --

printf("***%c\n", 'h');

2] Εννοεί (χοντρικά):

struct Point *insert_point(double x, double y)
{// Αρχή bold-αρισμένου
    struct Point *my_point = δέσμευση ανάλογης μνήμης;
    my_point->x = x;
    my_point->y = y;
    return my_point
}// Τέλος bold-αρισμένου

Το return που έγραψες δεν έχει νόημα.

  • Like 1
Δημοσ.

οκ καταλαβα το 2ο, οσον αφορα το 1ο, δυο ερωτησεις:

 

Σε αυτο

for(c='a';c<'g';++c)

ουσιαστικα στην πρωτη επαναληψη δεν γινεται c='b' ή οχι; Επειδη ειναι ++c ρωταω και οχι c++.

 

Επισης για τον ιδιο λογο παει c='h' στο τελος επειδη φτανει στο απο πανω σημειο, αυξανει το c και μετα ελεγχει αν c<'g' σωστα;

Δημοσ.

οκ καταλαβα το 2ο, οσον αφορα το 1ο, δυο ερωτησεις:

 

Σε αυτο

for(c='a';c<'g';++c)

ουσιαστικα στην πρωτη επαναληψη δεν γινεται c='b' ή οχι; Επειδη ειναι ++c ρωταω και οχι c++.

 

Επισης για τον ιδιο λογο παει c='h' στο τελος επειδη φτανει στο απο πανω σημειο, αυξανει το c και μετα ελεγχει αν c<'g' σωστα;

Δεν παίζει ρόλο αν είναι ++c ή c++ σε αυτή την περίπτωση.

Η αύξηση του c λόγω το ++c θα γίνει στο τέλος του loop.

Δημοσ.

οκ καταλαβα, το ιδιο και στο printf που εχει c--, πρωτα το εμφανιζει σαν c και μετα γινεται η μειωση ετσι;

Σωστά. Εδώ όμως παίζει ρόλο αν είναι post ή pre.

Αν είχες --c, τότε πρώτα θα μείωνες και μετά θα εκτύπωνες.

  • Moderators
Δημοσ.

Μία μεταβλητή char δε σημαίνει ότι είναι χαρακτήρας. Είναι, όπως λέει και η Wikipedia "smallest addressable unit of the machine that can contain basic character set. It is an integer type." Συνήθως οι chars μπορούν να πάρουν τιμές από 0 έως 255. Εσύ τους βλέπεις ως χαρακτήρες γιατί όταν πας να τους εκτυπώσεις γίνεται μετατροπή σύμφωνα με το ASCII.

  • Like 1
Δημοσ.

 

 

Ασκήσεις που σε κάνουν να θέλεις να βγάλεις τα μάτια σου. Αντί να μαθαίνουν κάτι σε actual προγραμματισμό, να αναλώνονται σε οπλοασκήσεις με char που δεν ισχύουν σε "καμία" άλλη γλώσσα, γράφοντας κακό κώδικα που είναι λόγος για να πιάσεις τον συγγραφέα να του πεις τι δεν πρέπει να κάνει απλά και μόνο επειδή μπορεί.

 

 

  • Like 3

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

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

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

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

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

Σύνδεση

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

Συνδεθείτε τώρα
  • Δημιουργία νέου...