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

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

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

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

Δημοσίευσηαπό Star_Light » 03 Αύγ 2011, 22:14

παλι καλα που ειναι μπερδεμενο το const σε δεικτες και οχι το μυαλο μου παλι!
Αυτο που σου ειπα πριν μου απαντησεις παντως ειναι σωστο??? σαν συμπερασμα?

Λοιπον .... σε καθε CASE αναλογα με την επιλογη του χρηστη θα βαζω να γινεται κληση της αντιστοιχης συναρτησης

και μεσα σε αυτες τις συναρτησεις μπορουμε να βαλουμε μετα και δεικτες ωστε να τα συνδυασουμε ολα
Γνώσεις ⇛ 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 » 03 Αύγ 2011, 23:17

Δεν πολυ-κατάλαβα τι ρώτησες, ειδικά το τι εννοείς όταν λες να "ανανεώνεις τη μνήμη". Δεν σε καλύπτει η προηγούμενη μου απάντηση;

Έκανα κι ένα κεφάλι καζάνι τώρα, γιατί είμαι πάνω από μισή ώρα και προσπαθώ να βρω πως θα μειώσω όσο το δυνατόν περισσότερους χαρακτήρες στο κώδικα αυτής εδώ της συνάρτησης που έφτιαξα: http://codegolf.stackexchange.com/quest ... /3314#3314 (εγώ είμαι αυτός ο Harry K εκεί).

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

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

Δημοσίευσηαπό Star_Light » 03 Αύγ 2011, 23:29

λοιπον αντε να ξεκουρασουμε τον migf1 και να μια πιθανη λυση και της 2ης ασκησης χωρίς την 3η συνάρτηση (των δυνάμεων) :P

Spoiler: show
Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <math.h>
#define N 3
int x,y,z;
int maximum;
int minimum;
int max(int x,int y, int maximum);
int min(int x, int y, int minimum); // Orismos metavlitwn programmatos

int main()
{
char option[N];
char ch;

printf("\tKalws irthate se ena aplo programma tis C\t");
printf("\n");
printf("Ti thelete na kanei to programma? oi epiloges sas einai: \n");
printf("A gia euresi megistou arithmou\n");
printf("B gia euresi elaxistou arithmou\t");
printf("\n");
fgets(option,N,stdin);
sscanf(option,"%c",&ch);
printf("Dwste ton arithmo x: ");
scanf("%d",&x);
printf("Dwste ton arithmo y: ");
scanf("%d",&y);

switch(ch)
{
case 'A': maximum=max(x,y,z);
printf("To apotelesma einai: %d \n",maximum);
break;
case 'B': minimum=min(x,y,z);
printf("To apotelesma einai: %d\n",minimum);
break;
default:
;
}


return 0;
}int max(int x,int y,int maximum)
{

maximum=x;

if(maximum>y)
return maximum;

else
return y;
}int min(int x, int y, int minimum)
{

minimum=x;

if(minimum<y)
return minimum;

else
return y;

}

/* =====================================
*
* Bugs : O kwdikas den doulevei me peza

======================================== */


χαρακτηριστικο ειναι οτι εχω δηλωσει τις μεταβλητες που χρησιμοποιω σαν μεταβλητές προγράμματος ωστε να μην χρειαζεται μετα να μπερδευομαι ποιες εχω ορισει και που. Τις δηλωνω μια και καλη και εξω απο την κεντρικη main επομενως παιζουν σε ΟΛΟ το προγραμμα... μια αρκετα βολικη τεχνικη την οποια ανακαλυψα αποψε :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
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 03 Αύγ 2011, 23:38

Δεν είναι καθόλου καλό να χρησιμοποιείς καθολικές μεταβλητές, έτσι λέγονται (global variables). Μεταξύ άλλων, δεν είναι thread safe. Ρίξε μια ματιά κι εδώ: http://stackoverflow.com/questions/1761 ... iable-in-c
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

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

Δημοσίευσηαπό Star_Light » 03 Αύγ 2011, 23:39

migf1 έγραψε:Δεν είναι καθόλου καλό να χρησιμοποιείς καθολικές μεταβλητές, έτσι λέγονται (global variables). Μεταξύ άλλων, δεν είναι thread safe. Ρίξε μια ματιά κι εδώ: http://stackoverflow.com/questions/1761 ... iable-in-c


οκ! Αλλα το διορθωσα πριν ακομη καψω κανεναν loool
γιατι ειπα πως το ανακαλυψα αποψε :D

Kριμα παντως και χαρηκα.... :/
Γνώσεις ⇛ 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++

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

http://c2.com/cgi/wiki?GlobalVariablesAreBad

βρηκα και αυτο για τις καθολικες και για ποιο λογο δεν πρεπει να χρησιμοποιουνται οταν δεν ειναι αναγκαιο.

Διαβασα αυτο που εδωσες αλλα επειδη εχω κανει ενα κεφαλι καζανι απο το πρωι και με την πτυχιακη και τα αγγλικα της....

ομολογω δεν καταλαβα και πολλα...
Γνώσεις ⇛ 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++

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

βασικα παιζει να καταλαβα... ενας λογος ισως ειναι και το μπερδεμα που μπορει να δημιουργηθει αμα βάλεις και αλλες μεταβλητες σε καποια αλλα σημεια του προγραμματος.... πχ αυτος ο κωδικας με μπερδεψε ως προς τα αποτελεσματα του

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

int x=1234;
double y=1.234567;

void function_1()
{
printf("Apo tin function_1: \n ",x,y);
}

int main()
{
int x=4321;
function_1();
printf("Mesa sto kurio tmima: \n " ,x ,y );
{
double y=7.654321;
function_1();
printf("Mesa sto entheto tmima: \n" ,x,y);
}
return 0;
}


βεβαια και παλι μπορει να πει καποιος πως ξερεις ποιες θα χρησιμοποιησεις τις βαζεις εξαρχης και τελειωσε αλλα για να μου λες εσυ οτι οντως ειναι κακο αποκλειεται να χεις αδικο.
Γνώσεις ⇛ 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 » 04 Αύγ 2011, 18:09

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

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

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

ok καταλαβα... σαν την εντολη goto ενα πραγμα.
Γνώσεις ⇛ 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++

Δημοσίευσηαπό Star_Light » 04 Αύγ 2011, 20:31

να ρωτησω κατι για τα scopes των μεταβλητων ...

λοιπον εδω

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

#include<stdio.h>

/*int x=1;
int y=2;*/

void function_1()
{

}

int main()
{
int i;

for(i=0; i<3; i++)
{
static int x=0;
static int y=0;

printf("%2d%4d",x++,y++);
}

return 0;
}


αν δεν εβαζα static μου διεγραφε τις μεταβλητες.... την επομενη φορα που θα μπει δηλαδη στην for θα έχει καταργηθεί η προηγουμενη αυξηση της x (x++) αυτο για ποιον ακριβως λογο γινεται? μου θυμιζει αρκετα συμπεριφορα συναρτησης αυτο ενω το for δεν ειναι συναρτηση... Το static το εχω καταλαβει παντως εκανα πριν και παραδειγματα μονος μου.
Γνώσεις ⇛ 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
Εκτύπωση

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

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