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

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

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

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

Δημοσίευσηαπό migf1 » 04 Αύγ 2011, 21:14

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

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

Δημοσίευσηαπό Star_Light » 05 Αύγ 2011, 01:25

migf1 έγραψε:Αφού τα αρχικοποιείς σε 0 κάθε φορά που μπαίνεις στο for loop :P


lol. Σωστα

Αλλα Βεβαια οταν στο παραδειγμα αφηνε το ενα σκετο int x=0;

και το αλλο static int y=0; στο τελος του loop το χ εμφανιζοταν ολες τις φορες 0 ενω το y το αυξανε κανονικα... 1 2 3 4.
Γνώσεις ⇛ 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 » 05 Αύγ 2011, 01:38

Στο παρακάτω απαντούσα προηγουμένως...
έγραψε:αν δεν εβαζα static μου διεγραφε τις μεταβλητες.... την επομενη φορα που θα μπει δηλαδη στην for θα έχει καταργηθεί η προηγουμενη αυξηση της x (x++) αυτο για ποιον ακριβως λογο γινεται?


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

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

Δημοσίευσηαπό stamatiou » 05 Αύγ 2011, 16:11

Ελπίζω να μην νεκρωθηκε το θέμα!! :lol:
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 05 Αύγ 2011, 16:13

Εγώ κάνω διαλειμματάκι :)

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

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

Δημοσίευσηαπό migf1 » 05 Αύγ 2011, 17:17

Εγώ χτες έλυσα κι αυτήν εδώ: http://www.greekcodes.gr/index.php/exer ... 9-05-46-33 (πολύ έξυπνη άσκηση ! )
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

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

Δημοσίευσηαπό Star_Light » 05 Αύγ 2011, 17:48

stamatiou έγραψε:Ελπίζω να μην νεκρωθηκε το θέμα!! :lol:


ουτε καν! Ειμαστε εδω καθημερινα... παροντες... στην πρωτη γραμμη της 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/C++

Δημοσίευσηαπό Qdata » 05 Αύγ 2011, 19:19

Σήμερα που προσπαθούσα να λύσω αυτή την άσκηση: viewtopic.php?p=201525#p201525 o compiler μου πετούσε σφάλματα.Ας κάνουμε πιο απλό τον κώδικα και σας δίνω ένα παράδειγμα:

Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <string.h>

main()
{
char lex[100],lexi[100];
int len,lent;
printf("Δώστε την πρώτη λέξη: ");
gets(lex);
printf("Δώστε την δεύτερη λέξη: ");
gets(lexi);
len = strlen(lex);
lent = strlen(lexi);
if(len == lent)
printf("OK!");
else
printf("Θα πρέπει οι λέξεις να έχουν την ίδια έκταση χαρακτήρων!");
}


Κώδικας: Επιλογή όλων
$ gcc str.c -o str
/tmp/ccf6KywY.o: In function `main':
str.c:(.text+0x33): warning: the `gets' function is dangerous and should not be used.


Εικόνα
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 » 05 Αύγ 2011, 19:34

:lol: φοβερή η εικόνα στο τέλος του ποστ :lol:

Βασικά ο gcc σε προειδοποιεί, επειδή η gets() είναι καταργημένη συνάρτηση, επειδή σε αφήνει να διαβάσεις μέσα στο string περισσότερους χαρακτήρες από όσους έχεις ορίσει να χωράει το string σου.

Για να μην παιδεύεσαι, κάνε copy πάνω από την main σου αυτήν εδώ τη συνάρτηση, που σε αναγκάζει να της περάσεις στα ορίσματά της και το μέγιστο μήκος που έχεις ορίσει για το string που τη βάζεις να διαβάζει, και χρησιμοποίησε αυτήν αντί για την gets().

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

/* --------------------------------------------------------------------------------
* read from stdin up to len-1 chars in s or until ENTER is pressed null-terminate s,
* replacing '\n' if neccessary
*/
char *s_get(char *s, size_t len)
{
char *cp;
for (cp=s; (*cp=getc(stdin)) != '\n' && (cp-s) < len-1; cp++ )
; // for-loop with empty body
*cp = '\0'; // null-terminate

return s;
}

Ή μπορείς να μη ζητάς καθόλου τα strings από την κύρια είσοδο, βάλτα μόνος σου στην αρχή της main:

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

int main( void )
{
char s1[] = "abcd", s2[] = "cdab";
...
return 0;
}

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

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

Δημοσίευσηαπό Star_Light » 05 Αύγ 2011, 19:38

οΠΟΙΟς θελει ασκησεις για τα scopes ελυσα μια καλη πριν απο λιγο...

hehehehe :D
Γνώσεις ⇛ 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
Εκτύπωση

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

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