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

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

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

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

Δημοσίευσηαπό Star_Light » 16 Ιουν 2011, 01:57

stamatiou έγραψε:Βρε παιδιά, στην C τι ρόλο βαρά το #define;!
Ευχαριστώ πολύ...


Αυτα που σου ειπε ο Qdata στο προηγουμενο νήμα.

Αναφέρεται σαν οδηγία προεπεξεργαστή.
Ο προεπεξεργαστής ειναι ένα πρόγραμμα το οποιο
κανει κάποιες εργασίες-προετοιμασιες στον C μεταγλωττιστη
πριν μεταγλωττισεις. Ενα είδος εργασιών είναι οτι σου είπε ο Qdata στο προηγούμενο νήμα.
(Αντικατάσταση μακροεντολών)
Ένα άλλο είδος εργασιών είναι να μπορείς να περιλαμβάνεις με την #include
αρχεία επικεφαλιδων. Γενικά οπου βλέπεις # μπροστα να ξερεις πως βάζει ο προεπεξεργαστης το χερι του
πριν αναλάβει ο compiler.
Γνώσεις ⇛ 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/C++

Δημοσίευσηαπό migf1 » 16 Ιουν 2011, 10:16

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

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

Δημοσίευσηαπό migf1 » 16 Ιουν 2011, 17:52

Να δώσω κώδικα τελικά, ή όχι ακόμα;

migf1 έγραψε:Είναι... πονηρούλα αυτή η άσκηση για αρχάριο στον προγραμματισμό. Την έλυσε κανείς μέχρι τώρα να τεστάρουμε τον κώδικά του;

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

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

Δημοσίευσηαπό clepto » 16 Ιουν 2011, 19:37

εγώ θα ήθελα να τον δω...αν δεν θελουν οι άλλοι στείλε τον σε πμ
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

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

Δημοσίευσηαπό Qdata » 16 Ιουν 2011, 19:43

migf1 έγραψε:Να δώσω κώδικα τελικά, ή όχι ακόμα;


clepto έγραψε:εγώ θα ήθελα να τον δω...αν δεν θελουν οι άλλοι στείλε τον σε πμ


Βάλτον σε
Κώδικας: Επιλογή όλων
[spoiler][/spoiler]
και όποιος θέλει το ανοίγει! :)
Linux User: #530165
Γνώσεις ⇛ Linux: Μέτριο ┃ Προγραμματισμός: Ναι ┃ Αγγλικά: Καλά
Λειτουργικό ⇛ Ubuntu 11.04 32bit σε Intel(R) Atom(TM) CPU N270 @ 1.60GHz
(Notebook) Προδιαγραφές ⇛ 2x Intel(R) Atom(TM) CPU N270 @ 1.60GHz │ 1016MB │ HDA-Intel - HDA Intel -- USB-Audio - USB AUDIO│ 1024x600 pixels
Νέος στο Linux?Οδηγοί - How to - Tutorials
Qdata
powerTUX
powerTUX
 
Δημοσιεύσεις: 1875
Εγγραφή: 18 Ιουν 2010, 19:40
Τοποθεσία: Σέρρες
IRC: dimos
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 16 Ιουν 2011, 19:55

Σωστός !!!!!!!!!!!

Σε spoiler λοιπόν :)

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

#include <stdio.h>
#include <stdlib.h>

int main( void )
{
int lim=0, num=0, min=0; // limit, number, minimum
register int i;

printf("How many numbers? ");
fflush(stdin); scanf("%d", &lim);

for (i=0; i < lim; i++)
{
printf("enter #%d: ", i+1);
fflush(stdin); scanf("%d", &num);
if (i == 0 || num < min)
min = num;
}
printf("the smallest of the numbers you entered is: %d\n", min);

fflush(stdin); getchar();
exit(0);
}


ΥΓ. Σε ότι χρειάζεστε διευκρίνηση, ρωτήστε έτσι;

Qdata έγραψε:
migf1 έγραψε:Να δώσω κώδικα τελικά, ή όχι ακόμα;


clepto έγραψε:εγώ θα ήθελα να τον δω...αν δεν θελουν οι άλλοι στείλε τον σε πμ


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

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

Δημοσίευσηαπό simosx » 16 Ιουν 2011, 20:28

Off topic:
Στις 10μμ θα είμαστε στο IRC στο κανάλι #ubuntu-gr-meetings για το μάθημα σε Git.
Οδηγίες IRC στο http://wiki.ubuntu-gr.org/Community/IRC
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 18 Ιουν 2011, 00:02

Υποθέτω πως ήταν πλήρως κατανοητός ο κώδικας, μιας και δεν χρειάστηκε καμία διευκρίνηση :)

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

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

#include <stdio.h>
#include <stdlib.h>

#define myexit(x) printf("\npress ENTER to exit..."); fflush(stdin); getchar(); exit((x))

//-------------------------------------------------------------------------------------
// Διαβάζει ακέραιους από τον χρήστη μέχρι να εισαχθεί η τιμή που ορίζεται στη
// μεταβλητή stop, και κατόπιν τυπώνει το πλήθος, το άθροισμα και τον μέσο όρο
// των ακεραίων, καθώς επίσης και το ποιος ήταν ο ελάχιστος και ποιος ο μέγιστος
//
int main( void )
{
const long int stop = 0, num = -1; // το num ποτέ ίδιο με το stop εδώ πέρα
long int min, max, sum=0, avg=0;
register int i; // μετρητής πλήθους

printf("(enter %d to stop inputing)\n", stop);
for (i=0; ; i++) // infinite loop !!!
{
printf("number %-3d: ", i+1);
fflush(stdin); scanf("%d", &num); // διάβασμα του num
if (num == stop) // τερματισμός του loop !!!
break;
if (i == 0) // μονο την 1η φορά...
max = min = num; // αρχικοποίηση των min, max
else if ( num < min )
min = num;
else
max = num;
sum += num; // ενημέρωση του αθροίσματος
}

if ( i == 0 ) {
puts("You did not enter any number");
myexit(0);
}

printf("\nYou entered %d number(s)\n\n", i);
printf("Smallest: %d\n", min);
printf("Largest : %d\n", max);
printf("Sum : %d\n", sum);
printf("Average : %d\n", sum/i);

myexit(0);
}


migf1 έγραψε:Σωστός !!!!!!!!!!!

Σε spoiler λοιπόν :)

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

#include <stdio.h>
#include <stdlib.h>

int main( void )
{
int lim=0, num=0, min=0; // limit, number, minimum
register int i;

printf("How many numbers? ");
fflush(stdin); scanf("%d", &lim);

for (i=0; i < lim; i++)
{
printf("enter #%d: ", i+1);
fflush(stdin); scanf("%d", &num);
if (i == 0 || num < min)
min = num;
}
printf("the smallest of the numbers you entered is: %d\n", min);

fflush(stdin); getchar();
exit(0);
}


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

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

Δημοσίευσηαπό clepto » 18 Ιουν 2011, 01:48

καμία άλλη άσκηση έχεις να μας δώσεις; :)
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 18 Ιουν 2011, 02:16

Αφού μόνος μου τις λύνω :lol:

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

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

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

cron