Παραδείγματα & Ασκήσεις στην C

...ασύγχρονα μαθήματα γλώσσας C

Re: Προγράμματα & παραδείγματα στην C

Δημοσίευσηαπό migf1 » 05 Ιούλ 2011, 17:57

Για να είμαι ειλικρινής, δεν σε πολυ-πιάνω με τα if γιατί και ο δικός μου κώδικας πήχτρα στα if-else είναι!

Anyway, στον κώδικά σου γράφεις...
Κώδικας: Επιλογή όλων

char filename[32];
...
filename = argv[1];

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

Re: Προγράμματα & παραδείγματα στην C

Δημοσίευσηαπό linuxs » 05 Ιούλ 2011, 18:12

Αν σου πω οτι μου φαίνεται παράξενο...και να πείς οτι τώρα ξεκίνησα την C!!!! Έχεις δίκιο όμως σε ευχαριστώ...

Αυτό που εννοούσα είναι να πάει κάποιος και να πεί για να είναι αριθμός θα είναι απο το 0 -9. Άρα αυτό θα τσεκάρω!

Κώδικας: Επιλογή όλων
if( (buf==0) || (buf==1) || (buf==2) || (buf==3) || (buf==4) || (buf==5) || ... || (buf==8) || (buf==9) ) {
...
}

και αυτό είναι το εύκολο για τους χαρακτήρες /σύμβολα θα ήταν...ΠΟΛΥ κουραστικό!!! Απλά υπήρχε και αυτή η περιπτωση και το ανέφερα. :/
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: Προγράμματα & παραδείγματα στην C

Δημοσίευσηαπό Star_Light » 05 Ιούλ 2011, 20:13

Off topic:
ΙΣΩς ΕΧΕτε δικιο ρε παιδια!! ΤΙ απογοητευομαι!!! Ευχαριστω για το κουραγιο προγραμματισταραδες συναδελφοι!!! Λοιπον τελειωσα τα αγγλικα τωρα γιατι εχω και αυτον τον βραχνα δινω τον δεκεβριο για lower και παω να παρω κανα παγωτακι και να αραξω στο θρεντ με τους δεικτες θα με δειτε εκει!!! Κατι αλλο.... ενας προγραμματιστης δεν μπορει να ειναι και αναλυτης???? Αναλυτης ειναι ο μηχανικος λογισμικου??? τι χρειαζεται για αυτο??? UML?
Γνώσεις ⇛ 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 » 05 Ιούλ 2011, 20:17

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

Re: Προγράμματα & παραδείγματα στην C

Δημοσίευσηαπό linuxs » 05 Ιούλ 2011, 20:53

Star_Light έγραψε:Off topic:
ΙΣΩς ΕΧΕτε δικιο ρε παιδια!! ΤΙ απογοητευομαι!!! Ευχαριστω για το κουραγιο προγραμματισταραδες συναδελφοι!!! Λοιπον τελειωσα τα αγγλικα τωρα γιατι εχω και αυτον τον βραχνα δινω τον δεκεβριο για lower και παω να παρω κανα παγωτακι και να αραξω στο θρεντ με τους δεικτες θα με δειτε εκει!!! Κατι αλλο.... ενας προγραμματιστης δεν μπορει να ειναι και αναλυτης???? Αναλυτης ειναι ο μηχανικος λογισμικου??? τι χρειαζεται για αυτο??? UML?


Όταν λες αναλυτής? :/

έγραψε:Εγώ για παράδειγμα είμαι θεωρητικού...αλλο που μου αρέσει και ασχολούμε με πρακτική! :P
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: Προγράμματα & παραδείγματα στην C

Δημοσίευσηαπό migf1 » 05 Ιούλ 2011, 21:05

Off topic:
Οι αναλυτές έχουν μεγαλύτερο θεωρητικό υπόβαθρο (θεωρητική πληροφορική = computer science) οι μηχανικοί έχουν μεγαλύτερο πρακτικό υπόβαθρο (μηχανικός υπολογιστών = software engineering)

Να επεκτείνω λιγάκι την άσκηση του φίλου linuxs:
α) προσθέστε και καταμέτρηση των λέξεων που υπάρχουν στο αρχείο (λίγο ζόρικο ;) ) διαχωρισμένες από χαρακτήρες που κάνουν TRUE το macro: isspace(c) της <stdlib.h>
β) προσθέστε και καταμέτρηση γραμμών, σημείων στίξης, μη κενών χαρακτήρων και κεφαλαίων γραμμάτων (hint: <stdlib.h>)
γ) αν ο χρήστης δεν δώσει το όνομα του αρχείου στο command line, ζητήστε το μέσα στο πρόγραμμα.

Αν ζοριστείτε πολύ, εδώ είναι ο κώδικας:
Spoiler: show
Κώδικας: Επιλογή όλων

#include <stdio.h>
#include <stdlib.h> // for exit()
#include <ctype.h> // for isspace(), etc
#include <string.h> // for strncpy(), etc

#define MAXINBUF 255+1

// ---------------------------------------------------------------------------------
int main( int argc, char *argv[] )
{
int c, addword = 1; // addword is boolean
unsigned long int nchars=0, nwords=0, nlines=0;
unsigned long int nblanks=0, npunct=0, ndigits=0, nalpha=0, nupper=0;
char filename[MAXINBUF] = "";
FILE *fp = NULL;

if ( argc > 1) // 1st argument exists
strncpy(filename, argv[1], MAXINBUF); // use it as filename
else { // no command line arguments
printf("filename to inspect: "); // ask user for filename
fgets(filename, MAXINBUF, stdin); // read filename
filename[ strlen(filename)-1 ] = '\0'; // remove '\n' from the end
}

fp = fopen(filename, "r");
if ( !fp ) {
puts("*** could not open file, aborting program...");
exit( EXIT_FAILURE );
}

while ( (c=fgetc(fp)) != EOF )
{
nchars++;
if ( isspace(c) ) {
addword = 1;
nblanks++;
}
else if( addword ) {
++nwords;
addword = 0;
}
if ( c == '\n')
nlines++;
else if ( isalpha(c) )
nalpha++;
else if ( isdigit(c) )
ndigits++;
else if ( ispunct(c) )
npunct++;
else if ( isupper(c) )
nupper++;

}
fclose(fp);

if ( nchars == 0 )
printf("%s:\tempty file\n", filename);
else {
printf( "File: %s\n\t%12lu lines\n\t%12lu words\n",
filename, nlines+1, nwords );
printf( "\ncharacter analysis:\n\t%12s: %lu (including crlf)\n",
"total", nchars );
printf("\t%12s: %lu\n", "blanks", nblanks);
printf("\t%12s: %lu\n", "digits", ndigits);
printf("\t%12s: %lu\n", "letters", nalpha);
printf("\t%12s: %lu\n", "upper-case", nupper);
printf("\t%12s: %lu\n", "punctuation", npunct);
}

exit( EXIT_SUCCESS );
}

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

Re: Προγράμματα & παραδείγματα στην C

Δημοσίευσηαπό linuxs » 05 Ιούλ 2011, 21:24

είμαι demi. έτσι όπως είναι? εννοείς σαν θεωρία? :/ οτι πεις φίλε μου, δεν ξέρω...
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: Προγράμματα & παραδείγματα στην C

Δημοσίευσηαπό migf1 » 05 Ιούλ 2011, 21:28

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

Re: Προγράμματα & παραδείγματα στην C

Δημοσίευσηαπό linuxs » 05 Ιούλ 2011, 22:07

οκ! δώσε μου λίγο χρόνο... :/
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: Προγράμματα & παραδείγματα στην C

Δημοσίευσηαπό linuxs » 05 Ιούλ 2011, 22:35

Off topic:
migf1 γνωρίζεις assembly η συναρτησιακό προγραμματισμό? :/
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

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

  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Μαθήματα C