Star_Light Δημοσ. 10 Απριλίου 2012 Δημοσ. 10 Απριλίου 2012 (επεξεργασμένο) Κοίτα, το size_t είναι τύπος, με implementation defined υλοποίηση ως προς το μέγεθός του. Ο τύπος του αποτελέσματος του τελεστή sizeof είναι FIXED σε size_t. Τέλος, οι type-specifiers της printf() δεν αλλάζουν τον τύπο των μεταβλητών που τους αντιστοιχούν, καθορίζουν ως τι τύπος θα τυπωθούν οι τιμές αυτών των μεταβλητών στην οθόνη. Ναι ρε συ. Η λύση της Άσκησης 13 Σελ. 159 King http://forum.ubuntu-gr.org/viewtopic.php?f=6&t=18969&start=2390 btw επειδη το δοκιμασα ο gcc ΔΕΝ τσινάει με %z για εκτύπωση του size_t απο τον sizeof. Έχω αυτη την έκδοση του gcc > kostas@kostas-SSL:/usr/include/linux$ gcc -v gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5.1) Και μια δικη μου υλοποιηση της 13 Σελ. 159 > #include<stdio.h> int main(void) { char ch; int count1=0 , count2=1; printf("Enter a sentence:"); while((ch=getchar())!='\n') { if(ch!=' ') ++count1; else ++count2; } printf("\n The average length of the word is: %.1f " , (float) count1/count2 ); return 0; } Την εχω λυσει απο χθες απλα νομιζα οτι ειναι λάθος επειδη αν ο χρηστης δωσει παραπανω απο 2 κενα μεταξυ των λεξεων το προγραμμα δεν εμφανιζει σωστο αποτελεσμα οπως επισης και αν ο χρηστης δωσει στην αρχη πριν το (It της προτασης του βιβλιου) ενα κενο. Μετα απλα βαρεθηκα που δεν μου ερχοταν κατι και τσεκαρω και βλεπω οτι και ο Ηλιας την έχει λυσει με τον ιδιο τροπο . Η λυση που δινεις εκει migf1 έχει να κανει με τις παραπανω διορθωσεις??? EDIT Ναι ουσιαστικα διορθωνεις αυτα τα προβληματα , ετρεξα τον κωδικα σου ! Επεξ/σία 11 Απριλίου 2012 από Star_Light
capoelo Δημοσ. 12 Απριλίου 2012 Μέλος Δημοσ. 12 Απριλίου 2012 #include<stdio.h> #include<stdlib.h> #include<conio.h> int main(void) { int i; char ch; printf("Enter all the letters of the alphabet: \n"); for(i=1;i<=26;i++) { ch=getche(); printf("\nThe ASCII code of the character is:%d \n",ch); } system("Pause"); return 0; } Έχω το εξής πρόβλημα:Για i=26 το πρόγραμμα τρέχει επ'άπειρον,ενώ για i<=26 σταματάει κανονικά στο z.Ποια είναι η διαφορά;
Star_Light Δημοσ. 12 Απριλίου 2012 Δημοσ. 12 Απριλίου 2012 #include<stdio.h> #include<stdlib.h> #include<conio.h> int main(void) { int i; char ch; printf("Enter all the letters of the alphabet: \n"); for(i=1;i<=26;i++) { ch=getche(); printf("\nThe ASCII code of the character is:%d \n",ch); } system("Pause"); return 0; } Έχω το εξής πρόβλημα:Για i=26 το πρόγραμμα τρέχει επ'άπειρον,ενώ για i<=26 σταματάει κανονικά στο z.Ποια είναι η διαφορά; Σε ποιο z ? Τι θες να κανεις ? Την getche δεν την ξερω :/ Δοκιμασε αυτο > #include <stdio.h> int main( void ) { char ch; printf(" Give a character: "); while((ch=getchar())!='\n') printf(" ASCII code of your character : %d" , ch); return 0; } Kαι για τον παραπανω λογο η while ειναι προτιμοτερη απο την for.
Star_Light Δημοσ. 12 Απριλίου 2012 Δημοσ. 12 Απριλίου 2012 Να ρωτησω και εγω κατι ως προς αυτο τον κωδικα -> http://ideone.com/tGq3I Του εχω περιγραφη στην αρχη. 1. Για να αποφυγω να γραφω ξανα και ξανα τις ιδιες printf , δεν μπορω να βαλω μια εξω απο την switch ? Απλα οταν θα κανει break θα βγαινει απο την switch και θα εκτυπωνει αυτο που του εκχώρησα στην αντιστοιχη CASE που μεταφέρθηκε . Το δοκιμασα αλλα μου βγαζε περιεργα νουμερα. 2. > default: printf("%c" , ch); break; Συμφωνα με την εκφωνηση οτι δεν αντιστοιχει στην κωδικοποιηση του τηλεφωνου το αφηνουμε οπως ειναι... Δεν καταλαβαινω ομως γιατι ενω του δινουμε το 1 πχ που έχει ASCII SHO εκτυπώνεται κανονικα σαν 1. Δεν θα ήθελε %d ? :/ http://www.google.gr/imgres?imgurl=http://www.asciitable.com/index/asciifull.gif&imgrefurl=http://www.asciitable.com/&h=488&w=715&sz=28&tbnid=2U31hF4tTw886M:&tbnh=83&tbnw=121&prev=/search%3Fq%3Dascii%26tbm%3Disch%26tbo%3Du&zoom=1&q=ascii&docid=JMtOixefP_tDJM&hl=el&sa=X&ei=yPyGT6n-FMXN4QTKysHiBw&ved=0CCAQ9QEwAA 3. Γιατι έχει γινει αυτη η κωδικοποιηση στα τηλεφωνα?
migf1 Δημοσ. 12 Απριλίου 2012 Δημοσ. 12 Απριλίου 2012 1. Ναι, μπορείς να βγάλεις έξω την printf() 2. Το ASCII code 1 δεν είναι εκτυπώσιμος χαρακτήρας (οπότε υποθέτω ο κάθε compiler τυπώνει ότι γουστάρει ) 3. Γιατί είναι ευκολότερο να θυμάσαι λέξεις (ή μισές λέξεις και μισούς αριθμούς) από ότι μόνο αριθμούς. EDIT: By the way, αντί για switch θα είναι πολύ πιο ευέλικτο αν το υλοποιήσεις με πίνακες (έχω ποστάρει κάτι παρόμοιο προ αμνημονέυτων χρόνων σε ένα παραπλήσιο νήμα στο ubuntu.gr, ούτε που θυμάμαι ποιο )
Star_Light Δημοσ. 12 Απριλίου 2012 Δημοσ. 12 Απριλίου 2012 1. Ναι, μπορείς να βγάλεις έξω την printf() 2. Το ASCII code 1 δεν είναι εκτυπώσιμος χαρακτήρας (οπότε υποθέτω ο κάθε compiler τυπώνει ότι γουστάρει ) 3. Γιατί είναι ευκολότερο να θυμάσαι λέξεις (ή μισές λέξεις και μισούς αριθμούς) από ότι μόνο αριθμούς. EDIT: By the way, αντί για switch θα είναι πολύ πιο ευέλικτο αν το υλοποιήσεις με πίνακες (έχω ποστάρει κάτι παρόμοιο προ αμνημονέυτων χρόνων σε ένα παραπλήσιο νήμα στο ubuntu.gr, ούτε που θυμάμαι ποιο ) 1. OK. Aπλα το προβλημα υπάρχει στο default: να δω πως θα το φτιαξω να εκτυπωνει πχ το 1 ή - χωρις να τα αλλαξει... Μεμονομενα που δουλεψα την getchar της εδινα 1 σαν εισοδο και εκτυπωνε το 1 :lol και αλλα βεβαια 2 , 3 , 5 .... 2. Σωστα . Δουλευει κατα τυχη πρεπει να το δω. 3. Δεν ειμαι σιγουρος αν σε καταλαβα... εγω λεω για ποιο λογο ειπαν να βάλουν ABC στο πληκτρο 2 κ.ο.κ και να μην το αφησουν σκετο 2 πχ. Ειπα να την λυσω χωρις πινακες... οπως λεει στο Κεφ.7 :/
migf1 Δημοσ. 12 Απριλίου 2012 Δημοσ. 12 Απριλίου 2012 Οι Αμερικάνοι, έχουν βάλει γράμματα στα πλήκτρα και λένε π.χ. το τηλέφωνό μου είναι: 234 HELLO
Directx Δημοσ. 12 Απριλίου 2012 Δημοσ. 12 Απριλίου 2012 Να ρωτησω και εγω κατι ως προς αυτο τον κωδικα -> http://ideone.com/tGq3I Πάντως τα δικά μου τηλέφωνα έχουν στα πλήκτρα τους περισσότερα γράμματα (την πλήρη αλφάβητο): ABC = 2, 3 = DEF, 4 = GHI, 5 = JKL, 6 = MNO, 7 = PQRS, 8 = TUV, 9 = WXYZ..
Star_Light Δημοσ. 12 Απριλίου 2012 Δημοσ. 12 Απριλίου 2012 Πάντως τα δικά μου τηλέφωνα έχουν στα πλήκτρα τους περισσότερα γράμματα (την πλήρη αλφάβητο): ABC = 2, 3 = DEF, 4 = GHI, 5 = JKL, 6 = MNO, 7 = PQRS, 8 = TUV, 9 = WXYZ.. Δεν εχει το Q και το Z η εκφωνηση οκ Τελοςπαντων αμα δεν βρω λυση στο προβλημα με την getchar θα την παρατησω. Παρολαυτα θα ψαξω να δω γιατι εκτυπωνει τα 1,2,3 στο ASCII ενω κανονικα δεν ειναι εκτυπωσιμοι χαρακτηρες.
Directx Δημοσ. 12 Απριλίου 2012 Δημοσ. 12 Απριλίου 2012 Δεν εχει το Q και το Z η εκφωνηση οκ [..] Χμ, τελικά φαίνεται ότι συνηθίζεται, πριν αρκετό καιρό είχα ασχοληθεί με ένα ανάλογο θέμα σχετικά με την τηλεφωνική αλφάβητο (το οποίο είχε αναρτηθεί σε κάποιο topic του παρόντος forum -είχε λυθεί με διάφορους τρόπους btw) και από ότι βλέπω και εκεί στην εκφώνηση έδιναν την ίδια διάταξη στην τηλεφωνική αλφάβητο..
migf1 Δημοσ. 12 Απριλίου 2012 Δημοσ. 12 Απριλίου 2012 Τελικά βρήκα κι εγώ εκείνο το ποστ που έλεγα στο ubuntu.gr: http://forum.ubuntu-gr.org/viewtopic.php?p=191096#p191096 Με αυτή την εκφώνηση: http://forum.ubuntu-gr.org/viewtopic.php?p=143161#p143161 (δεν ήταν και τόσο παλιά τελικά, 5 Ιουνίου 2011 ήταν)
Directx Δημοσ. 12 Απριλίου 2012 Δημοσ. 12 Απριλίου 2012 Από περιέργεια πάντως, σε C++ θα μπορούσε να υλοποιηθεί αρκετά εύκολα με multimap.. > /* * Telephone Alphabet, Decoder. * xdir. */ #include <iostream> #include <utility> #include <cstring> #include <map> using namespace std; int main(void) { multimap<char, int> Alpha; /* Setup Telephonic alphabet * * ----------------------- * * 1 | 2 ABC | 3 DEF * * ------+-------+-------- * * 4 GHI | 5 JKL | 6 MNO * * ------+-------+-------- * * 7 PQRS| 8 TUV | 9 WXYZ * * ------+-------+-------- * * * * L = Letter, D = Digit */ for(int L = 0, D = 2; L < 26; L++, !(L % 3) ? D++: D) { if(L == 18 || L == 21) D--; Alpha.insert(make_pair(L + 'A', (D == 10 ? D - 1: D))); Alpha.insert(make_pair(L + 'a', (D == 10 ? D - 1: D))); if(L == 18 || L == 21) D++; } /* Parse input.. */ while(true) { static char In[bUFSIZ]; cout <<"Type .. to quit else number :"; cin.getline(In, BUFSIZ); if(!(*In)) continue; if(!strcmp(In, "..")) break; for(int I = 0; I < strlen(In); I++) cout << (char)(Alpha.find(In[i]) == Alpha.end() ?In[i]: '0' + Alpha.find(In[i])->second); cout <<'\n'; } return 0; } * Έχει δοκιμασθεί σε C++ Builder και μπορεί να περιέχει bugs ή άλλες αβλεψίες.
migf1 Δημοσ. 12 Απριλίου 2012 Δημοσ. 12 Απριλίου 2012 Από περιέργεια πάντως, σε C++ θα μπορούσε να υλοποιηθεί αρκετά εύκολα με multimap.. > /* * Telephonic Alphabet, Decoder. * xdir. */ #include <iostream> #include <utility> #include <cstring> #include <map> using namespace std; int main(void) { multimap<char, int> Alpha; /* Setup Telephonic alphabet * * ----------------------- * * 1 | 2 ABC | 3 DEF * * ------+-------+-------- * * 4 GHI | 5 JKL | 6 MNO * * ------+-------+-------- * * 7 PQRS| 8 TUV | 9 WXYZ * * ------+-------+-------- * * * * L = Letter, D = Digit */ for(int L = 0, D = 2; L < 26; L++, !(L % 3) ? D++: D) { if(L == 18 || L == 21) D--; Alpha.insert(make_pair(L + 'A', (D == 10 ? D - 1: D))); Alpha.insert(make_pair(L + 'a', (D == 10 ? D - 1: D))); if(L == 18 || L == 21) D++; } /* Parse input.. */ while(true) { static char In[bUFSIZ]; cout <<"Type .. to quit else number :"; cin.getline(In, BUFSIZ); if(!(*In)) continue; if(!strcmp(In, "..")) break; for(int I = 0; I < strlen(In); I++) cout << (char)(Alpha.find(In[i]) == Alpha.end() ?In[i]: '0' + Alpha.find(In[i])->second); cout <<'\n'; } return 0; } * Έχει δοκιμασθεί σε C++ Builder και μπορεί να περιέχει bugs ή άλλες αβλεψίες. :) :)
Star_Light Δημοσ. 12 Απριλίου 2012 Δημοσ. 12 Απριλίου 2012 Ευχαριστω για τις απαντησεις . Αλλα με ενδιαφερει συγκεκριμενα να το υλοποιησω μεσω της switch. Αν γινεται. Λογικα γινεται αν υπαρχει συναρτηση η οποια εκτος απο χαρακτηρες δεχεται και ψηφια και τα εκτυπωνει χωρις προβλημα. Ο λογος ειναι η απλοτητα. Δεν με ενδιαφερει ακομη να σκεφτω σε ορους strings , πινακων , δεικτων και συναρτησεων εκτος του οτι δεν εχει μπει το βιβλιο ακομη σε αυτα τα κεφαλαια. Το οτι το βιβλιο του KIng δεν εχει λυμενες ολες τις ασκησεις για μενα ειναι παραλειψη παντως. Τα νυχια μου θα μυρισω? αμα δεν μου βγαινει μια άσκηση? ή μηπως πρεπει να ζαλίζω κοσμο στο ιντερνετ :/
migf1 Δημοσ. 12 Απριλίου 2012 Δημοσ. 12 Απριλίου 2012 ... Το οτι το βιβλιο του KIng δεν εχει λυμενες ολες τις ασκησεις για μενα ειναι παραλειψη παντως. Τα νυχια μου θα μυρισω? αμα δεν μου βγαινει μια άσκηση? ή μηπως πρεπει να ζαλίζω κοσμο στο ιντερνετ :/ Να ζαλίζεις κόσμο στο Ιντερνετ. Να παραθέτεις οτι κώδικα έχεις γράψει και να ζητάς βοήθεια
Προτεινόμενες αναρτήσεις