@Stamatiou πρέπει να ψάξεις για το πως αναπαριστωνται οι αριθμοι κινητης υποδιαστολης σε ενα υπολογιστικο συστημα συμφωνα με το ΙΕΕΕ 754.
Αν το βρεις αυτο και το καταλαβεις... μετα θα μπορεσεις να καταλαβεις και πως μετατρεπεται η δεκαεξαδικη σταθερα ? αν κοιταξα καλα.
Για την άσκηση 13 στην 158 έχει δώσει ο migf1 κώδικα και του έχω βάλει εγω πιο αναλυτικά σχόλια... πάρε αυτον αν θες και δοκιμασε να τον διαβασεις και να τον καταλαβεις. Για να παίρνεις ιδέες.
- Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <ctype.h> /*Για την συνάρτηση isalnum()*/
int main( void )
{
int ch = '\0'; // Αρχικοποίηση
int wcount = 0, letcount = 0;
printf("Enter a sentence: ");
for (;;) /* Ατέρμων βρόχος που θα σταματήσει μεσω της break */
{
ch = getchar();
if ( isalnum(ch) ) /* Aν η isalnum δίνει TRUE (Δηλαδη ο ch ειναι γράμμα ή αριθμητικό ψηφίο τοτε αύξησε) */
letcount++; /* Το letcount++ , αλλιως προχωρα. */
else {
if ( letcount ) /* Ηδη μέσα στο σώμα της else επειδη η isalnum δεν βρήκε γράμμα ή αριθμό */
wcount++; /* Βρισκεσαι στο τελος της λέξης αρα αυξησε τον wcount */
/* Οσο ο ch δεν ειναι ο χαρακτήρας αλλαγής γραμμής και δεν ειναι αλφαριθμητικο
* συνέχιζε να διαβάζεις καλωντας την getchar και να ελέγχεις χωρις να κανεις τιποτα αλλο
* Αγνόηση των μη αλφαριθμητικών χαρακτήρων */
while ( '\n' != ch && !isalnum(ch=getchar()) )
;
if ( '\n' == ch )
break; /* Έξοδος οταν ο χρήστης πατήσει το ΕΝΤΕR*/
letcount++;
/* Εφοσον λοιπον δωσει ενα αλφαριθμητικο ή αριθμο θα βγεις απο το loop
* και θα πρεπει να αυξησεις τον letcount */
}
}
printf( "%d word(s), %d letter(s)\n", wcount, letcount );
printf( "Avarage word length: %.1f\n", !wcount ? 0 : (float)letcount/wcount ); // Αποφυγή λανθασμένου αποτελέσματος
return 0;
}