Για τις ασκήσεις που παραθέτετε πρέπει να βρίσκω για ποια πράγματα έχει μιλήσει ή δεν έχει μιλήσει μέχρι εκείνο το σημείο το βιβλίο, προκειμένου να εκφέρω άποψη... και μου είναι λιγάκι δύσκολο

Βάζετε αν θέλετε και δυο λόγια για το τι έχει καλύψει μέχρι την άσκηση το βιβλίο. Για παράδειγμα, την άσκηση 12 που λέει ο Ηλίας, εγώ θα την έλυνα κάπως έτσι...
-
Μορφοποιημένος Κώδικας: Επιλογή όλων
-
#include <stdio.h> /* for printf(), fgets(), stdin */
#include <stdlib.h> /* for atof(), exit(), EXIT_SUCCESS */
#include <string.h> /* for strchr() */
#define MAXINPUT (1024+1)
/* ------------------------------------------------------
*
* ------------------------------------------------------
*/
float calc( const char oper, const float op1, const float op2 )
{
float ret = 0.0;
if ( oper == '+' )
ret = op1 + op2;
else if ( oper == '-' )
ret = op1 - op2;
else if ( oper == '*' )
ret = op1 * op2;
else if ( oper == '/' )
ret = op1 / op2;
return ret;
}
/* ------------------------------------------------------
*
* ------------------------------------------------------
*/
int main( void )
{
char expr[ MAXINPUT ] = {'\0'};
char *cp1 = NULL, *cp2 = NULL;
float res;
puts("Enter an arithemtic expression of floats...");
fgets(expr, MAXINPUT, stdin);
cp1 = cp2 = expr;
do
{
/* cp2 is at an operator */
if ( strchr("+-*/", *cp2 ) )
{
/* only the first time */
if ( cp1 == expr ) {
res = atof( cp1 ); /* from cp1 to operator*/
cp1 = cp2 + 1; /* mv cp1 past operator*/
continue;
}
/* all other times */
cp1 = cp2 + 1; /* mv cp1 past operator*/
res = calc( *cp2, res, atof(cp1) ); /* calc new result */
cp2++; /* mv cp2 one pos right */
}
/* cp2 is NOT at an operator */
else
cp2++;
} while ( *cp2 != '\n' );
printf("= %.2f\n", res );
exit( EXIT_SUCCESS );
}
Βασικά διαβάζω το expression μονοκόμματα μέσα στο string
expr το οποίο σκανάρω με τους δείκτες
cp1 και
cp2... ο cp1 "θυμάται" σε ποια θέση του
expr ξεκινάει ο όρος που προηγείται ενός συμβόλου πράξης, ενώ ο
cp2 "τρέχει" μέχρι να βρει σύμβολο πράξης. Η συνάρτηση
atof() μετατρέπει σε float ένα string (διαβάστε την τεκμηρίωσή της για την ακριβή της συμπεριφορά). Η
strchr() αναζητάει έναν χαρακτήρα μέσα σε ένα string (επίσης κοιτάξτε την τεκμηρίωσή της).