Jump to content



Recommended Posts

Posted

Μπορεί να μου πεις κάποιος (σε pm για να μην μας πάρει στο κυνηγητό ο γατούλης) γιατί δε παίζει το παρακάτω;

 

Θέλω να διαβάζω μια συμβολοσειρά όσο είναι μικρότερη από το a, και μεγαλύτερη από το b.

do {	scanf ("%s",pin);	m = strlen (pin);	printf ("%d",m);}while (m<a && m>;
Posted (edited)

Σε εμένα παίζει κανονικά πάντως και off we go. Άκυρο σκάει lol.

 

@UltraB,

 

malloc για το pin κάνεις? :p need malloc για το b + 1.

    int m;    int a = 10;    int b = 5;    char* pin =(char *) malloc(b + 1);    do {        scanf("%s", pin);        m = strlen(pin);        printf("%d", m);    } while (m<a && m>;

Μιας και παρακολουθούνται τα PM :)

Edited by nucleus
  • Like 1
Posted

Σε εμένα παίζει κανονικά πάντως και off we go. Άκυρο σκάει lol.

 

@UltraB,

 

malloc για το pin κάνεις? :p need malloc για το b + 1.

    int m;    int a = 10;    int b = 5;    char* pin =(char *) malloc(b + 1);    do {        scanf("%s", pin);        m = strlen(pin);        printf("%d", m);    } while (m<a && m>;

Γιατί να κάνω malloc; Ο κώδικας είναι ο παρακάτω

	int i, m, a=5, b = 10; 	char pin[20];	do {		scanf ("%s",pin);		m = strlen (pin);		printf ("%d",m);	   }	while (m<a && m>;		for (i=0;i<=m;i++)		printf("%c",pin[i]);

Ούτε αυτό που μου έστειλες με τη malloc δουλεύει :p

Posted (edited)

Θέλεις να ισχύουν και οι δύο περιπτώσεις? m < a και m>b ή μια από τις δύο?

 

Δεν παίζει επειδή αν βάλεις σαν είσοδο το "asdf" το m παίρνει την τιμή 4.

 

Μετά ελέγχει το while. m < a με m = 4  a = 5 βγάζει true. m > b με m = 4 και b = 10 βγάζει false. Κάνοντας && έχουμε true && false δηλαδή false οπότε δεν μπαίνει ξανά στο do.

Edited by nucleus
  • Like 1
Posted

Θέλω να ισχύουν και οι δύο περιπτώσεις. Το άλλαξα από and σε or και όλα καλά. Απλά με μπέρδεψε επειδή έλεγε να είναι μεταξύ των αριθμών και θεώρησα ότι ήθελε and.

Posted

Μα δεν υπάρχει περίπτωση ένας αριθμός να είναι μικρότερος του a = 5 και ταυτόχρονα μεγαλύτερος του b = 10 (m<a && m>B), αυτό έπρεπε να σε κάνει να καταλάβεις ότι το && στην συνθήκη ήταν λάθος. Η θα είναι μικρότερος του a ή μεγαλύτερος του b. H αποδεκτή είσοδος είναι να είναι ανάμεσα στο a και στο b το μήκος της συμβολοσειράς που εισάγεται από την κονσόλα?

Posted

Γίνεται με κάποιο τρόπο να γίνει με and; Ρωτάω γιατί σπάω το κεφάλι μου να θυμηθώ που μας ζητούσε και τι, να γίνει με and και δε μπορώ.

 

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

Posted (edited)

Αν δεν θυμάσαι ακριβώς την εκφώνηση δεν έχω ιδέα αν μπορεί να γίνει και με AND. Εξαρτάται ποιά είναι η αποδεκτή είσοδος.

 

Αν η αποδεκτή σου είσοδος είναι να είναι μικρότερο του a ή μεγαλύτερο του b τότε μπορείς να το κάνεις με and ως εξής

do {  ....} while (m > a && m < 

Κοινώς αν δίνει είσοδο με μήκος ανάμεσα στα a και b απόρριψε την.

 

Αν η αποδεκτή σου είσοδος είναι να είναι μικρότερο του a και μεγαλύτερο του b αυτό δεν στέκει λογικά με a < b.

 

Αν ωστόσο a > b τότε η συνθήκη m <a && m > b μπορεί να γίνει true αν η τιμή του m βρίσκεται ανάμεσα στα b < m < a. Δοκίμασε το παραπάνω αλλάζοντας τις τιμές των a και b στον κώδικα σου

int i, m, a=10, b = 5;    char pin[20];    do {        scanf ("%s",pin);        m = strlen (pin);        printf ("%d",m);     }    while (m<a && m>;        for (i=0;i<=m;i++)        printf("%c",pin[i]);
Edited by nucleus
  • Like 3

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.