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

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

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

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

Δημοσίευσηαπό stamatiou » 12 Ιούλ 2012, 14:50

Τελικά θα ξεκινήσω C++. Έχει κανείς κανένα βιβλίο να προτείνει;
1Γνώσεις→Linux: Αρχάριος┃Προγραμματισμός:Αρχάριος┃Αγγλικά:Μέτριος
2Λειτουργικό→Arch Linxu 32bit
3Προδιαγραφές→2x AMD AthlonX2 DualCore QL-66 ‖ RAM 1751 MiB ‖ Hewlett-Packard 308C - Hewlett-Packard Compaq 615
4Κάρτες γραφικών:ATI RS780M/RS780MN [Radeon HD 3200 Graphics][1002:9612]
5Δίκτυα:eth0:Marvell 88E8042 PCI-E Fast Ethernet Controller [11ab:4357] (rev 10)⋮eth1: Broadcom BCM4312 802.11b/g LP-PHY [14e4:4315](rev 01)
Πρωσοπική Ιστοσελίδα: http://giwrg98.co.cc
Άβαταρ μέλους
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

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

Δημοσίευσηαπό stamatiou » 25 Ιούλ 2012, 12:41

Γνωρίζει κανείς Qt;
1Γνώσεις→Linux: Αρχάριος┃Προγραμματισμός:Αρχάριος┃Αγγλικά:Μέτριος
2Λειτουργικό→Arch Linxu 32bit
3Προδιαγραφές→2x AMD AthlonX2 DualCore QL-66 ‖ RAM 1751 MiB ‖ Hewlett-Packard 308C - Hewlett-Packard Compaq 615
4Κάρτες γραφικών:ATI RS780M/RS780MN [Radeon HD 3200 Graphics][1002:9612]
5Δίκτυα:eth0:Marvell 88E8042 PCI-E Fast Ethernet Controller [11ab:4357] (rev 10)⋮eth1: Broadcom BCM4312 802.11b/g LP-PHY [14e4:4315](rev 01)
Πρωσοπική Ιστοσελίδα: http://giwrg98.co.cc
Άβαταρ μέλους
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

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

Δημοσίευσηαπό stamatiou » 25 Ιούλ 2012, 13:13

Προσπαθώ να κάνω ένα πρόγραμμα σαν τράπεζα που να διαβάζει από αρχείο σε C++, αλλά για κάποιο λόγο δε μου διαβάζει σωστά το αρχείο και βγάζει αυτά τα παράξενα σύμβολα. http://ideone.com/QfRpy
EDIT: Έβαλα και λίγα σχόλια
EDIT: Στον gdb παρατήρησα πως όταν τυπώνω στην πρώτη επανάληψη του loop το dummy->name μου βγαίνει κανονικά ενώ το list->name μου βγαίνει μια ακολουθία από (μάλλον) octal αριθμούς:
Κώδικας: Επιλογή όλων

(gdb) print dummy->name
$2 = "George", '\000' <repeats 114 times>
(gdb) print list->name
$3 = "\370\203\004\b\020ii\r\000\000\000\000u\203\004\b\356\203\004\b\021ii\r\000\000\000\000u\203\004\b\343\203\004\b\323\257k\005\000\000\000\000\321\202\004\b\333\203\004\bP&y\v\000\000\000\000X\203\004\b", '\000' <repeats 32 times>, "x\321\375\267\365u\256\003", '\000' <repeats 16 times>

EDIT: Ορίστε και ο κώδικας στο Github: https://github.com/giwrg98/GBank
1Γνώσεις→Linux: Αρχάριος┃Προγραμματισμός:Αρχάριος┃Αγγλικά:Μέτριος
2Λειτουργικό→Arch Linxu 32bit
3Προδιαγραφές→2x AMD AthlonX2 DualCore QL-66 ‖ RAM 1751 MiB ‖ Hewlett-Packard 308C - Hewlett-Packard Compaq 615
4Κάρτες γραφικών:ATI RS780M/RS780MN [Radeon HD 3200 Graphics][1002:9612]
5Δίκτυα:eth0:Marvell 88E8042 PCI-E Fast Ethernet Controller [11ab:4357] (rev 10)⋮eth1: Broadcom BCM4312 802.11b/g LP-PHY [14e4:4315](rev 01)
Πρωσοπική Ιστοσελίδα: http://giwrg98.co.cc
Άβαταρ μέλους
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

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

Δημοσίευσηαπό light44 » 10 Ιαν 2013, 17:56

Καλησπέρα σε όλους.Θα ήθελα την βοηθειά σας γιατί προσπαθώ πόσο καιρό να λυσω ενα πρόβλημα και δεν μπορώ να βγάλω άκρη.
Είμαι καινούριος στην γλώσσα(περίπου 3 μήνες).

Λοιπόν,στην άσκηση που ζητώ την βοηθειά στην αρχή το πρόγραμμα να ζηταει όνομα,πόσες ζαριές θα τελειώσει το παιχνίδι,να ενημερώνη τον παίκτη για να ρίξει τα ζάρια κ.τ.λ. Αυτά τα έχω κάνει.Το προβλημά μου είναι ότι παρακάτω το πρόγραμμα ζητάει για κάθε ζαριά να φαίνεται το αποτέλεσμα όπως φαίνεται παρακάτω:

____
| |
| * |
| |
“””””
____
| * |
| |
|* |
“””””

| * |
| * |
|* |
“””””
____
|* * |
| |
|* * |
“””””

____
|* * |
| * |
|* * |
“””””
____
|* * |
|* * |
|* * |
“””””

Επίσης στο τελος μου λέει σε κάθε ζαριά να ενημερώνεται το σκορ.Επίσης λέει οταν ολοκληρωθούν οι ζαριές θα ενημερώνει για το τελικό σκορ και για τον νικητή.Κατι εχω κάνει σε αυτο αλλα δεν μου φένετε και πολυ σωστό.
Δεν ξέρω άμα είναι δυσκολη Ή ευκολη αλλά τώρα μαθαίνω την γλώσσα και μπερδέυομαι σε πολλά.
Σας ευχαριστώ πολύ όλους!
light44
babeTUX
babeTUX
 
Δημοσιεύσεις: 3
Εγγραφή: 10 Ιαν 2013, 17:47
Εκτύπωση

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

Δημοσίευσηαπό konnn » 10 Ιαν 2013, 18:07

@light44, καλώς ήρθες στην κοινότητα.

Σκοπός αυτού του forum δεν είναι να λύσουμε ασκήσεις. Δεν είναι σωστό να ζητάς "μασημένη" τροφή.
Μπορείς να μας πεις μέχρι που έχεις φτάσει και που έχεις κολλήσει, έτσι ώστε να σε βοηθήσουν αυτοί που γνωρίζουν ώστε να συνεχίσεις.Μπορείς επίσης να δεις τα ασύγχρονα μαθήματα του φόρουμ και να μάθεις κάτι που μπορεί να σου ξεφεύγει.

1 Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Desktop : Ubuntu 16.04 64bit
a Intel Core i3 CPU 530 2.93GHz ‖ RAM 3824 MiB ‖ Intel DH55HC -
b nVidia Device [10de:1040] (rev a1)
c eth0: Intel 82578DC Gigabit Network Connection
3 Notebook : Ubuntu 16.04 64 bit
a Intel Core i3-2365M CPU @ 1.40GHz ‖ RAM 3854 MiB ‖ LENOVO 20197
b Intel 2nd Generation Core Processor Family Integrated Graphics Controller
c 5 wlan0: Intel Centrino Wireless-N 2230 ⋮ eth0: Realtek RTL8101E/RTL8102E

Αυτόματη υπογραφή.
Άβαταρ μέλους
konnn
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 3568
Εγγραφή: 12 Ιούλ 2010, 17:54
Τοποθεσία: Καλαμάτα
Launchpad: konnn
Εκτύπωση

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

Δημοσίευσηαπό light44 » 12 Ιαν 2013, 01:12

Δεν ζήτησα "μασημένη" τροφή όπως λες ποτέ,τέλος πάντων.

Τα ζάρια τα εμφανίζω με αυτό τον τρόπο,έτσι?

Κώδικας: Επιλογή όλων
char *die(char n) {
switch (n) {
case 1:
return " ---\n"
"| |\n"
"| * |\n"
"| |\n"
" \"\"\" ";
case 2:
return " ---\n"
"| *|\n"
"| |\n"
"|* |\n"
" \"\"\" ";
case 3:
return " ---\n"
"| *|\n"
"| * |\n"
"|* |\n"
" \"\"\" ";
case 4:
return " ---\n"
"|* *|\n"
"| |\n"
"|* *|\n"
" \"\"\" ";
case 5:
return " ---\n"
"|* *|\n"
"| * |\n"
"|* *|\n"
" \"\"\" ";
case 6:
return " ---\n"
"|* *|\n"
"|* *|\n"
"|* *|\n"
" \"\"\" ";
}
}


το προβλημά μου τώρα είναι πως θα κάνω να εμφανίζει τα 2 ζαρια μαζι και το αποτέλεσμα στην πορεία.
Δηλαδή κάθε φορά που τρέχω το πρόγραμμα να μου εμφανίζει 1 ζαριά(2 ζαρίων πάντα) και το αθροισμά των ζαρίων.
light44
babeTUX
babeTUX
 
Δημοσιεύσεις: 3
Εγγραφή: 10 Ιαν 2013, 17:47
Εκτύπωση

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

Δημοσίευσηαπό simosx » 12 Ιαν 2013, 01:25

light44 έγραψε:char *die(char n) {
switch (n) {
case 1:
return " ---\n"
"| |\n"
"| * |\n"
"| |\n"
" \"\"\" ";


Το τυπικό στον προγραμματισμό είναι, σε τέτοια δεδομένα να φτιάχνεις σταθερές (constants), όπως

Κώδικας: Επιλογή όλων
const char* dice_result1 = " ---\n"
"| |\n"
"| * |\n"
"| |\n"
" \"\"\" ";


και μετά στον κώδικα να εκτυπώνεις π.χ.
Κώδικας: Επιλογή όλων
printf(dice_result1);


Προσωπικά θα προτιμούσα τα ζάρια να είναι πιο όμορφα. Άνοιξε τον Πίνακα χαρακτήρων (gucharmap) στο Ubuntu, και ψάξε για χαρακτήρες όπως
Κώδικας: Επιλογή όλων
╔═══╗

(είναι στην ομάδα Common/Κοινό). Μπορείς να σχεδιάσεις όμορφα ζάρια.

Αν θέλεις κάτι ακόμα πιο εύκολο, μπορείς να χρησιμοποιήσεις τους χαρακτήρες Unicode για ζάρια, που είναι ⚀⚁⚂⚃⚄⚅ και αυτό ήταν.
προσωπικό ιστολόγιο ϗ πλανήτης 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

Δημοσίευσηαπό konnn » 12 Ιαν 2013, 01:25

τρέξε τη switch δυο φορές με μια φορ και αντί να επιστρέφει char να τυπώνει char και να επιστρέφει int που αντιστοιχεί σε κάθε case.
Τί λες;
1 Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Desktop : Ubuntu 16.04 64bit
a Intel Core i3 CPU 530 2.93GHz ‖ RAM 3824 MiB ‖ Intel DH55HC -
b nVidia Device [10de:1040] (rev a1)
c eth0: Intel 82578DC Gigabit Network Connection
3 Notebook : Ubuntu 16.04 64 bit
a Intel Core i3-2365M CPU @ 1.40GHz ‖ RAM 3854 MiB ‖ LENOVO 20197
b Intel 2nd Generation Core Processor Family Integrated Graphics Controller
c 5 wlan0: Intel Centrino Wireless-N 2230 ⋮ eth0: Realtek RTL8101E/RTL8102E

Αυτόματη υπογραφή.
Άβαταρ μέλους
konnn
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 3568
Εγγραφή: 12 Ιούλ 2010, 17:54
Τοποθεσία: Καλαμάτα
Launchpad: konnn
Εκτύπωση

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

Δημοσίευσηαπό light44 » 12 Ιαν 2013, 01:49

Simo όταν κάνω το πρόγραμμα να τρέξει σωστά θα το κάνω και πιο όμορφο μετά,γιατί μου αρέσει και το όμορφο.
Δέστε λίγο το πρόγραμμα που έχω κάνει :


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

#include <time.h>
#define NZARIA 2
#define MAX_TIMHZARIOY 6

int main( void )
{
char *die(char n) {
switch (n) {
case 1:
return " ---\n"
"| |\n"
"| * |\n"
"| |\n"
" \"\"\" ";
case 2:
return " ---\n"
"| *|\n"
"| |\n"
"|* |\n"
" \"\"\" ";
case 3:
return " ---\n"
"| *|\n"
"| * |\n"
"|* |\n"
" \"\"\" ";
case 4:
return " ---\n"
"|* *|\n"
"| |\n"
"|* *|\n"
" \"\"\" ";
case 5:
return " ---\n"
"|* *|\n"
"| * |\n"
"|* *|\n"
" \"\"\" ";
case 6:
return " ---\n"
"|* *|\n"
"|* *|\n"
"|* *|\n"
" \"\"\" ";
}
}

const int nzaria = (NZARIA < 1 ? 1 : NZARIA);
int result, zaria[ nzaria ];

srand( time(NULL) );

result =( zaria, nzaria , MAX_TIMHZARIOY);
printf("Ζαριά: %d\n", result);
( zaria, nzaria );

return 0;





void typwse_ksexwrista( const int *zaria, const int nzaria )
{
int i;
for (i=0; i < nzaria; i++)
printf("\tζάρι#%d: %d\n", i+1, zaria[i]);
putchar('\n');

return;
}

int rikse_zaria( int *zaria, const int nzaria, const int maxtimh)
{
int i, sum=0;
for (i=0; i < nzaria; i++) {
zaria[i] = rand() % maxtimh + 1;
sum += zaria[i];
}

return sum;
}

}


είσαν σαν να μην υπάρχει μέσα η case.Γιατί αυτό μου εμφανίζει μόνο το άθροισμα.Βασικά τα έχω μπερδέξει λίγο να πω την αλήθεια.
Είμαι καινούριος στην C,συνχωρέστε με :P
light44
babeTUX
babeTUX
 
Δημοσιεύσεις: 3
Εγγραφή: 10 Ιαν 2013, 17:47
Εκτύπωση

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

Δημοσίευσηαπό simosx » 12 Ιαν 2013, 02:15

light44 έγραψε:
int main( void )
{
char *die(char n) {
switch (n) {


Έχεις βάλει τη συνάρτηση 'die' (γράψε καλύτερα 'dice' για ζάρι) μέσα στη main(). Το τυπικό είναι να την βάλεις από έξω,
και μέσα στη main() να την καλέσεις. Όπως είναι τώρα νομίζω ότι το πρόγραμμα δεν κάνει κάτι.
προσωπικό ιστολόγιο ϗ πλανήτης 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
Εκτύπωση

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

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