migf1 έγραψε:Άψογος φίλε Σταματίου !

Μια μικρή προσθήκη χρειάζεται, στην switch να βάλεις κι ένα deafult στο τέλος για περιπτώσεις που το σύμβολο πράξης είναι κάτι άσχετο από τα 4 που θέλουμε. Δηλαδή...
- Κώδικας: Επιλογή όλων
...
...
switch (i3) {
case '*':
printf("%d * %d = %d\n",i1,i2,i1*i2);
break;
...
...
default:
puts("den yparxei tetoia prajh");
break;
}
(το default πρέπει να το βάζουμε πάντα πριν κλείσουμε ένα switch, έστω και με σκέτο break).
Πολύ χάρηκα φίλε Σταματίου, γιατί με είχες φοβήσει την 1η φορά

Άψογος!
Δίνω και τη δική μου υλοποίηση (χρησιμοποιώ 2 συναρτήσεις εγώ, αλλά δεν έχει σημασία... η ουσία ήταν η χρήση της s_get και η μετατροπή του inbuf στις μεταβλητές που χρειαζόμαστε)
- Κώδικας: Επιλογή όλων
/* ******************************
* Άσκηση #2
* ******************************/
#include <stdio.h>
#include <stdlib.h>
#define BUFFER_SIZE (255+1)
// ------------------------------------------------------------------------------
char *s_get(char *s, size_t len)
{
char *cp;
for (cp=s; (*cp=getc(stdin)) != '\n' && (cp-s) < len-1; cp++ )
; // for-loop with empty body
*cp = '\0'; // null-terminate last character
return s;
}
// ------------------------------------------------------------------------------
void get_char(char *c)
{
char buffer[BUFFER_SIZE] = "";
s_get( buffer, BUFFER_SIZE );
*c = buffer[0];
return;
}
// ------------------------------------------------------------------------------
void get_float(float *x)
{
char buffer[BUFFER_SIZE] = "";
s_get( buffer, BUFFER_SIZE );
*x = atof( buffer );
return;
}
// ------------------------------------------------------------------------------
int main( void )
{
char prajh;
float x, y;
printf("Dwste 1o arithmo: ");
get_float( &x );
printf("Dwste 2o arithmo: ");
get_float( &y );
printf("Dwste symbolo prajhs: ");
get_char( &prajh );
switch ( prajh )
{
case '+':
printf("%f %c %f = %f\n", x, prajh, y, x+y);
break;
case '-':
printf("%f %c %f = %f\n", x, prajh, y, x-y);
break;
case '*':
printf("%f %c %f = %f\n", x, prajh, y, x*y);
break;
case '/':
printf("%f %c %f = %f\n", x, prajh, y, x/y);
break;
default:
puts("\tden yparxei tetoia prajh");
break;
}
return 0;
}
Αν δεν έχει άλλο παιδί κάποια απορία, δώστε μου 5 λεπτά να γράψω τον 3ο τρόπο υλοποίησης της προηγούμενης άσκησης, όπου εκεί πλέον έχουμε εμπεδώσει τη χρήση της s_get και απλά θέλω να δείξω έναν διαφορετικό τρόπο χρήσης συναρτήσεων.
Ευχαριστώ πολύ migf1, με ανακούφησες γιατί δεν είχα και πολλές επιτυχίες μέχρι τώρα...

Αυτό με το default το σκέφτηκα και εγώ αλλά ήταν αφότου κάνω το ποστ και έτσι είπα να μην το κάνω edit....