Τα πάντα για την C

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: Τα πάντα για την C

Δημοσίευσηαπό Star_Light » 27 Φεβ 2012, 20:00

ΚΑΛΗΣΠΕΡΑ και απο μενα στην παρέα μας.... χρονια πολλα σε ολους καλη σαρακοστη να έχουμε παιδια...
μας τα χαλασε λιγο ο καιρος σημερα??? αν και δεν βγηκα καθολου σημερα αλλα ακουω εξω που λυσομανάει μονο χθες πηγα στου Ψυρρη και προχθες...
πολυ καλα ηταν ειχε κοσμο... ειχε τζερτζελο αρκετο... Λοιπον έχω λυσει την 8 απο τα Programming Projects του chapter 2

Μορφοποιημένος Κώδικας: Επιλογή όλων
#include<stdio.h>
int main(void)

{
float amount_of_loan , monthly_payment , interest_rate , monthly_interest_rate;
float balance;

printf(" Enter amount of loan : ");
scanf("%f" , &amount_of_loan);

printf(" Enter interest rate : ");
scanf("%f", &interest_rate);

printf(" Enter monthly payment : ");
scanf("%f" , &monthly_payment);

interest_rate= interest_rate / 100 ;

monthly_interest_rate = interest_rate / 12;

balance = amount_of_loan - monthly_payment + amount_of_loan * monthly_interest_rate;

printf(" Balance remaining after 1st payment : %.3f" , balance );

amount_of_loan = balance;

balance = amount_of_loan - monthly_payment + amount_of_loan * monthly_interest_rate;

puts("\n");

printf(" Balance remaining after 2nd payment : %.3f" , balance );

amount_of_loan = balance ;

balance = amount_of_loan - monthly_payment + amount_of_loan * monthly_interest_rate;

puts("\n");

printf(" Balance remaining after 3rd payment : %.3f" , balance );

return 0;
}


Kαι σε λιγο θα ποστάρω και την 1.... δεν ξέρω αμα λυσω αλλες απο εδω καθως ψηνομαι να μπω επιτελους 3 κεφάλαιο!

Ευχαριστω και τον ηλια που με έπεισε τελικα να κοιτάξω τα hints οπως και για τις επεξηγήσεις του !

Μια ερωτηση μονο....

εδω ->

Κώδικας: Επιλογή όλων

printf(" Enter amount of loan : ");
scanf("%f" , &amount_of_loan);
printf(" Enter interest rate : ");
scanf("%f", &interest_rate);
προχωρά η printf στην επόμενη γραμμή αν και δεν εχει το '\n' λογω της scanf ????
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Star_Light » 27 Φεβ 2012, 20:07

Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 28 Φεβ 2012, 13:23

Star_Light έγραψε:
Μια ερωτηση μονο....

εδω ->

Κώδικας: Επιλογή όλων

printf(" Enter amount of loan : ");
scanf("%f" , &amount_of_loan);
printf(" Enter interest rate : ");
scanf("%f", &interest_rate);
προχωρά η printf στην επόμενη γραμμή αν και δεν εχει το '\n' λογω της scanf ????

Όχι δεν προχωράει η printf() στην επόμενη γραμμή, μένει στη γραμμή της και περιμένει είσοδο. Στην είσοδο όμως αναγκαστικά ο χρήστης θα πατήσει '\n' στο τέλος για να σηματοδοτήσει λήξη εισόδου, οπότε ο δρομέας θα πάει έτσι κι αλλιώς στην επόμενη γραμμή της κονσόλας (τερματικού).

Επομένως είναι περιττό να μπει '\n' στην printf() όταν αμέσως μετά περιμένουμε είσοδο ;)

ΥΓ. Στην τελευταία σου άσκηση, με τα αστεράκια, μπορείς να αντικαταστήσεις όλα τα printf() με puts()... για απλό τύπωμα string με αλλαγή γραμμής η puts() εκτελείται (πολύ) ταχύτερα.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Star_Light » 28 Φεβ 2012, 13:49

OK ;)
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Star_Light » 28 Φεβ 2012, 14:34

Στο 3ο κεφάλαιο λέει

%d specifies that printf is to convert an int value from binary to a string of decimal digits

Σελ. 37 συγκεκριμένα... αυτο το binary που λεει δεν καταλαβαινω τι εννοει....

btw το format string της πριντφ δεν περιέχει μέσα του και τις variables ή τις οποιες άλλες expressions για εκτύπωση ετσι?
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Star_Light » 28 Φεβ 2012, 15:16

btw στην C ένας αριθμός ειναι επισης χαρακτηρας. 'Η καλυτερα μια σταθερά πχ το 3.
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 28 Φεβ 2012, 18:47

Star_Light έγραψε:Στο 3ο κεφάλαιο λέει

%d specifies that printf is to convert an int value from binary to a string of decimal digits

Σελ. 37 συγκεκριμένα... αυτο το binary που λεει δεν καταλαβαινω τι εννοει....

Όλοι οι αριθμοί εσωτερικά αποθηκεύονται σε δυαδική μορφή (binary format). Η printf() αναλαμβάνει να μετατρέψει όποιον αριθμό της πεις (ανάλογα δηλαδή τον format-specifier που θα χρησιμοποιήσεις) από δυαδική μορφή που είναι αποθηκευμένος, σε μια σειρά συνεχόμενων χαρακτήρων της αριθμητικής βάσης που αντιστοιχεί στον format-specifier και να τους τυπώσει στην οθόνη. Αυτό σου λέει.

Ο format-specifier %d αναλαμβάνει να μετατρέψει έναν αριθμό από τη δυαδική μορφή στην οποία είναι αποθηκευμένος εσωτερικά, σε μια σειρά χαρακτήρων (string) από δεκαδικά ψηφία... αυτά που τυπώνει στην οθόνη δηλαδή.

έγραψε:btw το format string της πριντφ δεν περιέχει μέσα του και τις variables ή τις οποιες άλλες expressions για εκτύπωση ετσι?

Τι εννοείς;
Τελευταία επεξεργασία από migf1 και 28 Φεβ 2012, 18:56, έχει επεξεργασθεί 2 φορά/ες συνολικά
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 28 Φεβ 2012, 18:52

Star_Light έγραψε:btw στην C ένας αριθμός ειναι επισης χαρακτηρας. 'Η καλυτερα μια σταθερά πχ το 3.

Όχι, δεν ισχύει αυτό. Το ανάποδο ισχύει, πως δηλαδή ένα χαρακτήρας είναι και αριθμός (το ASCII code του) αλλά οι μόνοι αριθμοί που είναι και χαρακτήρες (αντιστοιχούν δηλαδή σε κάποιον χαρακτήρα) είναι μόνο όσοι βρίσκονται στο εύρος τιμών 0 έως 255 (όσα τα κουτάκια δηλαδή του ASCII table).

Εκτός αν δεν κατάλαβα τι εννοείς.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Star_Light » 28 Φεβ 2012, 19:13

migf1 έγραψε:
Όχι, δεν ισχύει αυτό. Το ανάποδο ισχύει, πως δηλαδή ένα χαρακτήρας είναι και αριθμός (το ASCII code του) αλλά οι μόνοι αριθμοί που είναι και χαρακτήρες (αντιστοιχούν δηλαδή σε κάποιον χαρακτήρα) είναι μόνο όσοι βρίσκονται στο εύρος τιμών 0 έως 255 (όσα τα κουτάκια δηλαδή του ASCII table).

Εκτός αν δεν κατάλαβα τι εννοείς.


Τσεκαρε στην σελιδα 39! Απλα θεώρησα πως αν έχεις ενα %4d εφοσον λεει πως αυτο θέλει 4 χαρακτήρες τοτε το _123 ( _ = κενό) ειναι 4 χαρακτήρες
ετσι τους λεει μεσα.... Υπεθεσα λοιπον πως ετσι τους αντιμετωπιζει η C
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Star_Light » 28 Φεβ 2012, 19:17

migf1 έγραψε:
Όλοι οι αριθμοί εσωτερικά αποθηκεύονται σε δυαδική μορφή (binary format). Η printf() αναλαμβάνει να μετατρέψει όποιον αριθμό της πεις (ανάλογα δηλαδή τον format-specifier που θα χρησιμοποιήσεις) από δυαδική μορφή που είναι αποθηκευμένος, σε μια σειρά συνεχόμενων χαρακτήρων της αριθμητικής βάσης που αντιστοιχεί στον format-specifier και να τους τυπώσει στην οθόνη. Αυτό σου λέει.

Ο format-specifier %d αναλαμβάνει να μετατρέψει έναν αριθμό από τη δυαδική μορφή στην οποία είναι αποθηκευμένος εσωτερικά, σε μια σειρά χαρακτήρων (string) από δεκαδικά ψηφία... αυτά που τυπώνει στην οθόνη δηλαδή.

Ναι βασικα καταλαβα επειδη ολα σε εναν ΗΥ ειναι στο δυαδικο οκ. Το πως το αναπαριστούμε στην οθονη ειναι αλλη υποθεση. Δεν υπαρχει ουτε 15 ουτε ABCD... στον ΗΥ

migf1 έγραψε:
Τι εννοείς;


Τιποτα... το βρηκα... απλα ηθελα να δω ποιο ακριβως ειναι το format string της printf και τελικα ειναι οτι περικλείεται στα εισαγωγικά τα αλλα μετα το κομμα ειναι είτε εκφράσεις είτε μεταβλητες. ΝΟμιζω
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι

cron