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

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

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

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

Δημοσίευσηαπό Ilias95 » 02 Μαρ 2012, 20:25

migf1 έγραψε:όταν διδάσκονται δομές, κυρίως στοίβες

Επειδή μόλις μπήκα στις δομές δεδομένων και βλέπω για arrays, απ' ότι κατάλαβα στα ελληνικά όταν λέμε πίνακες αναφερόμαστε στις arrays και όταν λέμε στοίβες στις structures;
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 02 Μαρ 2012, 20:30

Ilias95 έγραψε:
Στην συγκεκριμένη περίπτωση την χρησιμοποιώ επειδή η mySCANF() όπως είπαμε δεν δουλεύει μέσα σε loop...

Και σε loop να δούλευε η mySCANF() πάλι θα είχε πρόβλημα, γιατί κι αυτή χρησιμοποιεί την sscanf() μέσα της (η οποία sscanf() είναι μια scanf() που αντί να διαβάζει από την κύρια είσοδο διαβάζει από string... λύνει κάποια θέματα με το line-buffering, δεν λύνει όμως το θέμα με τα κενά διαστήματα.

Εδώ ένα εξαιρετικό link για τα προβλήματα της κύριας εισόδου (και τρόποι επίλυσης): http://home.datacomm.ch/t_wolf/tw/c/getting_input.html

ΥΓ. Ναι, πίνακες = arrays, αλλά στοίβες != structures :lol: ... Structures (ή Data Structures ολοκληρωμένο), είναι οι Δομές ( Δομές Δεδομένων). Στοίβες (Stacks) είναι πιο σύνθετες δομές.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

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

Δημοσίευσηαπό Ilias95 » 02 Μαρ 2012, 20:41

migf1 έγραψε:ΥΓ. Ναι, πίνακες = arrays, αλλά στοίβες != structures :lol: ... Structures (ή Data Structures ολοκληρωμένο), είναι οι Δομές ( Δομές Δεδομένων). Στοίβες (Stacks) είναι πιο σύνθετες δομές.

Ο King λέει στο βιβλίο του: "There are two kinds of aggregates in C: arrays and structures." (σελ.161 στην εισαγωγή)
Συνήθως δομές δεδομένων (Data Structures) δεν είναι όλοι οι "τρόποι" με τους οποίους μπορούμε να κρατήσουμε περισσότερες από μία τιμές/μεταβλητές;
Δηλαδή στην C οι arrays δεν συγκαταλέγονται στις δομές δεδομένων;
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 02 Μαρ 2012, 20:43

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

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

Δημοσίευσηαπό giannosfor » 02 Μαρ 2012, 20:59

@migf1 επειδή αναφερθήκατε στις δομές .Έχει περάσει καιρός από τότε που είχα κάνει δομές δέντρα κτλ.
Αναρωτιόμουν αν η κλάση είναι ένας τύπος δομής ; Με ιδιότητες και memory allocation όπως έχουν και οι κλάσεις .
1 Γνώσεις Linux: Καθόλου ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-58-generic 32bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.2.0-57-generic, Microsoft Windows XP Professional
3 Intel Core2 Duo CPU E4600 2.40GHz ‖ RAM 2012 MiB ‖ ASUS INC. P5Q - � P5Q
4 nVidia G94 [GeForce 9600 GT] [10de:0622] {nvidia}
5 eth0: Qualcomm Atheros AR8121/AR8113/AR8114 Gigabit or Fast Ethernet [1969:1026] (rev b0) ⋮ wlan0: 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter
Άβαταρ μέλους
giannosfor
punkTUX
punkTUX
 
Δημοσιεύσεις: 297
Εγγραφή: 24 Απρ 2011, 20:24
Τοποθεσία: Ηράκλειο
Εκτύπωση

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

Δημοσίευσηαπό Star_Light » 02 Μαρ 2012, 21:07

@migf1 βασικα εγω είπα οτι ειναι απο το chapter3 θεωρωντας οτι έχεις διαβάσει το βιβλιο ή εστω σου ειναι φρεσκο :lol: :lol:

η ασκηση που ποσταρισα σημερα εγω ειναι απο εκει που λεει για printf & scanf πως δουλευουν αυτες οι συναρτησεις στο κεφαλαιο 3 βασικα
Γνώσεις ⇛ 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

Δημοσίευσηαπό Star_Light » 02 Μαρ 2012, 21:08

εχω κανει λαθος :( δεν ειναι chapter2 οπως αρχικα ειχα βαλει αλλα 3.
Παω να το διορθωσω
Γνώσεις ⇛ 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 » 02 Μαρ 2012, 21:10

giannosfor έγραψε:@migf1 επειδή αναφερθήκατε στις δομές .Έχει περάσει καιρός από τότε που είχα κάνει δομές δέντρα κτλ.
Αναρωτιόμουν αν η κλάση είναι ένας τύπος δομής ; Με ιδιότητες και memory allocation όπως έχουν και οι κλάσεις .

Yeap :)

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

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

Δημοσίευσηαπό migf1 » 02 Μαρ 2012, 21:51

Ilias95 έγραψε:
13.
Εκφώνηση:
Spoiler: show
Write a program that calculates the average world length for a sentence.
For simplicity, your program should consider a punctuation mark to be part of the word to wich it is attached.
Display the average word length to one decimal place.

Λύση:
Spoiler: show
Μορφοποιημένος Κώδικας: Επιλογή όλων
#include <stdio.h>

int main(void)
{
    char ch;
    int words = 1, digits = 0;
    
    printf("Enter a sentence: ");    
    
    while ((ch = getchar()) != '\n') {
        if (ch == ' ')
            words++; 
        else
            digits++;
    }
    
    printf("Avarage word length: %.1f", (float) digits / words);
    
    return 0;
}

Με αφορμή την άσκηση, μια ολοκληρωμένη υλοποίηση που θεωρεί (και μετράει) λέξεις μονάχα όσες αποτελούνται από γράμματα ή/και αριθμούς...

Μορφοποιημένος Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <ctype.h>		/* for isalnum() */

int main( void )
{
	int ch = '\0';
	int wcount = 0, letcount = 0;

	printf("Enter a sentence: ");    

	for (;;)					/* infinite loop              */
	{
		ch = getchar();
		if ( isalnum(ch) )
			letcount++; 
		else {
			if ( letcount )			/* ignore leading blanks      */
				wcount++;
			/* ignore invalid (non-word) letters */
			while ( '\n' != ch && !isalnum(ch=getchar()) )
				;
			if ( '\n' == ch )
				break;			/* exit infinite loop          */
			letcount++;			/* count any last valid letter */
		}
	}

	printf( "%d word(s), %d letter(s)\n", wcount, letcount );
	printf( "Avarage word length: %.1f\n", !wcount ? 0 : (float)letcount/wcount );

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

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

Δημοσίευσηαπό giannosfor » 02 Μαρ 2012, 22:03

@migf1 Μπορώ να σκεφτώ πως υλοποιείς μία κλάσης κάνοντας memory allocation deallocation και initialisation αυτό που με προβληματίζει είναι η κληρονομικότητα.Πώς την πετυχαίνεις χρησιμοποιώντας δομές.
1 Γνώσεις Linux: Καθόλου ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-58-generic 32bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.2.0-57-generic, Microsoft Windows XP Professional
3 Intel Core2 Duo CPU E4600 2.40GHz ‖ RAM 2012 MiB ‖ ASUS INC. P5Q - � P5Q
4 nVidia G94 [GeForce 9600 GT] [10de:0622] {nvidia}
5 eth0: Qualcomm Atheros AR8121/AR8113/AR8114 Gigabit or Fast Ethernet [1969:1026] (rev b0) ⋮ wlan0: 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter
Άβαταρ μέλους
giannosfor
punkTUX
punkTUX
 
Δημοσιεύσεις: 297
Εγγραφή: 24 Απρ 2011, 20:24
Τοποθεσία: Ηράκλειο
Εκτύπωση

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

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