Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπερα. Είμαι πρωτοετής σε τμήμα Πληροφορικής και επειδή πέρασα με ειδική κατηγορία ηρθα λιγο αργοπορημένος και έχασα αρκετά μαθήματα και ετσι τρέχω να προλάβω.. :whistle: Στο μαθημα το προγραμματισμού συγκεκριμένα έχω χάσει σημαντικά μαθήματα που επεξηγούν πολλά και ετσι έχω κενά.

 

Να μπω στο ψητό λοιπόν:

Εχω μια ασκηση που ζηταει να γραψω προγραμμα που θα δεχεται 2 αριθμους απο τον χρήστη και εναν αριθμητικο τελεστη και θα του βγαζει το αποτελεσμα της πραξης. Τον γενικο κωδικα τον έχω απλα εχω κολλησει σε ενα σημείο. Θα αποθηκευω τον τελεστη που μου δινει σε μια μεταβλητη και μετα θα κανω ελεγχο με if για το ποιος τελεστης ειναι και θα του εμφανιζω το αποτελεσμα. Σε τι τυπο μεταβλητης θα δηλωθει ο τελεστης? Και στην συνθήκη της if πως θα το ελεγξω?

 

Σκεφτηκα να το κανω οπως στην ΓΛΩΣΣΑ και να πω:

 

if (j = "+")

..

else if (j = "-")

...

κ.λ.π

αλλα μου χτυπαει ο compiler.. Ειχα δηλωσει την μεταβλητη j ως int και εκει αποθηκευσα τον τελεστη που εισηγαγε ο χρηστης.. Τι πρεπει να κανω? :/ :fear:

  • Απαντ. 51
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοσ.

Ο έλεγχος ισότητας γίνεται με τον τελεστή ==

 

Η ανάθεση τιμής σε μεταβλητή γίνεται με το =

 

Μπορείς να αποθηκεύεις τον τελεστή που θα διαβάζεις σε μια μεταβλητή τύπου char (χαρακτήρας),Όταν αναφέρεσαι σε έναν χαρακτήρα χρησιμοποιείς τα μονά αυτάκια ( ' ' ) ενώ για συμβολοσειρές τα διπλά ( " " ).

 

Άρα ο σωστός έλεγχος είναι :

 

>

...
if( character == '+' ){
/* edw kaneis thn praksh ths prosthesh */

}

 

Ρίξε και μια ματία στον πίνακα ascii: http://www.asciitable.com/

Δημοσ.

Καλησπερα. Είμαι πρωτοετής σε τμήμα Πληροφορικής και επειδή πέρασα με ειδική κατηγορία ηρθα λιγο αργοπορημένος και έχασα αρκετά μαθήματα και ετσι τρέχω να προλάβω.. :whistle: Στο μαθημα το προγραμματισμού συγκεκριμένα έχω χάσει σημαντικά μαθήματα που επεξηγούν πολλά και ετσι έχω κενά.

 

Να μπω στο ψητό λοιπόν:

Εχω μια ασκηση που ζηταει να γραψω προγραμμα που θα δεχεται 2 αριθμους απο τον χρήστη και εναν αριθμητικο τελεστη και θα του βγαζει το αποτελεσμα της πραξης. Τον γενικο κωδικα τον έχω απλα εχω κολλησει σε ενα σημείο. Θα αποθηκευω τον τελεστη που μου δινει σε μια μεταβλητη και μετα θα κανω ελεγχο με if για το ποιος τελεστης ειναι και θα του εμφανιζω το αποτελεσμα. Σε τι τυπο μεταβλητης θα δηλωθει ο τελεστης? Και στην συνθήκη της if πως θα το ελεγξω?

 

Σκεφτηκα να το κανω οπως στην ΓΛΩΣΣΑ και να πω:

 

if (j = "+")

..

else if (j = "-")

...

κ.λ.π

αλλα μου χτυπαει ο compiler.. Ειχα δηλωσει την μεταβλητη j ως int και εκει αποθηκευσα τον τελεστη που εισηγαγε ο χρηστης.. Τι πρεπει να κανω? :/ :fear:

ο τελεστής είναι ένας χαρακτήρας και άρα η μεταβλητή πρέπει να ειναι τυπου char. Θα κάνεις τον έλεγχο όπως τον κάνεις αλλά με == και 'χαρακτηρας'

Πρωτοετής είμαι και εγώ, καλή συνέχεια.

Δημοσ.

Εδω γιατι μου χτυπαει στο printf? μπορει να ειναι χαζομαρα η ερωτηση αλλα ειμαι εντελως αρχαριος.. :P

>
#include <stdio.h>
int main()
{
    int numb1, numb2, result;
    char j
    printf("Dwse 2 akeraious aritmous");
    scanf("%d",&numb1);
    scanf("%d",&numb2);
    printf("Dwse enan arithmitiko telesti etsi wste na ginei i praksi");
    scanf("%d", &j);
    if (j == '+'){
		    result = numb1+numb2;}
		    printf("To athrisma twn arithmwn einai:%d", result);
    else if (j == '-'){
		    result = numb1-numb2}
		    printf("H diafora twn arithmwn einai:%d", result);
    else if (j =='*'){
		    result = numb1*numb2}
		    printf("To ginomeno twn arithmwn einai:%d", result);
    else
		    result= numb1/numb2
		    printf("To piliko twn arithmwn einai:%d", result);	   
    getch();
    return 0;
   
}

 

Πρωτοετής είμαι και εγώ, καλή συνέχεια.

Σε ποιο τμημα? :P

Δημοσ.

Καλησπερα. Είμαι πρωτοετής σε τμήμα Πληροφορικής και επειδή πέρασα με ειδική κατηγορία ηρθα λιγο αργοπορημένος και έχασα αρκετά μαθήματα και ετσι τρέχω να προλάβω.. :whistle: Στο μαθημα το προγραμματισμού συγκεκριμένα έχω χάσει σημαντικά μαθήματα που επεξηγούν πολλά και ετσι έχω κενά.

 

Να μπω στο ψητό λοιπόν:

Εχω μια ασκηση που ζηταει να γραψω προγραμμα που θα δεχεται 2 αριθμους απο τον χρήστη και εναν αριθμητικο τελεστη και θα του βγαζει το αποτελεσμα της πραξης. Τον γενικο κωδικα τον έχω απλα εχω κολλησει σε ενα σημείο. Θα αποθηκευω τον τελεστη που μου δινει σε μια μεταβλητη και μετα θα κανω ελεγχο με if για το ποιος τελεστης ειναι και θα του εμφανιζω το αποτελεσμα. Σε τι τυπο μεταβλητης θα δηλωθει ο τελεστης? Και στην συνθήκη της if πως θα το ελεγξω?

 

Σκεφτηκα να το κανω οπως στην ΓΛΩΣΣΑ και να πω:

 

if (j = "+")

..

else if (j = "-")

...

κ.λ.π

αλλα μου χτυπαει ο compiler.. Ειχα δηλωσει την μεταβλητη j ως int και εκει αποθηκευσα τον τελεστη που εισηγαγε ο χρηστης.. Τι πρεπει να κανω? :/ :fear:

 

Tι θα έλεγες να αποθηκεύεις την εκάστοτε τελεστή σε μια μεταβλητή τύπου char οπως προτειναν αρχικα και τα παιδια και στην συνέχεια μέσω μιας switch να υλοποιεις αυτο που θελεις ? Αποφευγοντας τις πολλες if.

 

Εδω γιατι μου χτυπαει στο printf? μπορει να ειναι χαζομαρα η ερωτηση αλλα ειμαι εντελως αρχαριος.. :P

>
#include <stdio.h>
int main()
{
 int numb1, numb2, result;
 char j
 printf("Dwse 2 akeraious aritmous");
 scanf("%d",&numb1);
 scanf("%d",&numb2);
 printf("Dwse enan arithmitiko telesti etsi wste na ginei i praksi");
 scanf("%d", &j);
 if (j == '+'){
		 result = numb1+numb2;}
		 printf("To athrisma twn arithmwn einai:%d", result);
 else if (j == '-'){
		 result = numb1-numb2}
		 printf("H diafora twn arithmwn einai:%d", result);
 else if (j =='*'){
		 result = numb1*numb2}
		 printf("To ginomeno twn arithmwn einai:%d", result);
 else
		 result= numb1/numb2
		 printf("To piliko twn arithmwn einai:%d", result);	
 getch();
 return 0;

}

 

 

Σε ποιο τμημα? :P

 

Γιατι ειναι θέμα αγκυλών. Επισης εχεις ξεχάσει ενα ερωτηματικό στην δηλωση της j + οτι η scanf περιμένει ενα %c για τύπους δεδομένων χαρακτήρα (char) ενω εσυ της δινεις ενα %d που ειναι για τυπους δεδομενων ακεραιων.

 

Ξεχνάς και μερικα ερωτηματικά σε κάποιες εντολές ... γενικα καθε εντολη χρειαζεται στο τελος της ένα ερωτηματικό.

 

http://ideone.com/KxqaDD

Δημοσ.

5η γραμμη ξεχασες να βαλεις semi-colon (ελληνικο ερωτηματικο)

char j;

Επισης κλεισε και τις ακυλες στις if, δηλαδη

if (...) {

/* */

}

else if (...) {

 

}

else {

 

}

Δημοσ. (επεξεργασμένο)

Τελικα βρηκα λυση.. Θα το κανω με switch οπως λεει ο φιλος απο πανω.. Ευχαριστω πολυ ολους.. :D

 

Βιβλία δεν θα έχεις πάρει ακόμα ε;

Τει Αθήνας πληροφορικη

Επεξ/σία από antbyron
Δημοσ.

Πως μπορω να κανω την γραμμη εντολων να σταματησει για να δω το αποτελεσμα.. Τελειωνει αρκετα γρηγορα και δεν προλαβαινω να δω τι εγινε? με το getch() δεν γινεται.. :/

 

Βιβλία δεν θα έχεις πάρει ακόμα ε;

Τει Αθήνας

Οχι δυστυχως ακομα δεν εχουν ερθει.. Αυτα περιμενω μπας και βγαλω ακρη.. :/

Δημοσ.

Πως μπορω να κανω την γραμμη εντολων να σταματησει για να δω το αποτελεσμα.. Τελειωνει αρκετα γρηγορα και δεν προλαβαινω να δω τι εγινε? με το getch() δεν γινεται.. :/

 

#include <stdlib.h>

και στο τελος system("pause");

ή μπορείς με μία συνάρτηση να περιμένει ένα χαρακτήρα όπως το κάνεις ήδη με την getch();

Δημοσ.

Τελικα βρηκα λυση.. Θα το κανω με switch οπως λεει ο φιλος απο πανω.. Ευχαριστω πολυ ολους.. :D

 

 

>
#include <stdio.h>
#include<stdlib.h>
int main(void)
{
    int numb1, numb2;
    char ch;
   
   
    printf("Dwse 2 akeraious aritmous");
    scanf("%d%d",&numb1 , &numb2);

   if(numb2 == 0)
   exit(EXIT_FAILURE);
   
    printf("Dwse enan arithmitiko telesti etsi wste na ginei i praksi");
    scanf(" %c" , &ch);   // ch from choice
   
    switch(ch)
   
    {
         case '+' :
            printf("Άθροισμα : %d", numb1+numb2);
            break;
       
  	   case '-' :
            printf("Διαφορά:%d", numb1 - numb2);
            break;
       
  	  case '*'  :
            printf("Γινόμενο:%d", numb1*numb2);
            break;
           
  	  case '/' :
           printf(" Διαίρεση : %f " , (float) numb1/numb2);
           break;
  		  
       
      default:
      printf(" Invalid input ");
      break;
  }
   
    return 0;
   
}

 

 

Σε περιπτωση που σου χρειαστει.

 

Επισης να προσέξεις 2 πράγματα , τον 2ο τελεστέο να μην ειναι μηδεν σε επιλογη πράξης διαίρεσης.

Και να κάνεις cast σε flloat ή και double αν ο αριθμητής ειναι μικροτερος απο τον παρανομαστή.

Δημοσ.

 

>
#include <stdio.h>
#include<stdlib.h>
int main(void)
{
int numb1, numb2;
char ch;


printf("Dwse 2 akeraious aritmous");
scanf("%d%d",&numb1 , &numb2);

if(numb2 == 0)
exit(EXIT_FAILURE);

printf("Dwse enan arithmitiko telesti etsi wste na ginei i praksi");
scanf(" %c" , &ch); // ch from choice

switch(ch)

{
case '+' :
printf("Άθροισμα : %d", numb1+numb2);
break;

 case '-' :
printf("Διαφορά:%d", numb1 - numb2);
break;

 case '*' :
printf("Γινόμενο:%d", numb1*numb2);
break;

 case '/' :
printf(" Διαίρεση : %f " , (float) numb1/numb2);
break;
	

default:
printf(" Invalid input ");
break;
}

return 0;

}

 

 

Σε περιπτωση που σου χρειαστει.

 

Επισης να προσέξεις 2 πράγματα , τον 2ο τελεστέο να μην ειναι μηδεν σε επιλογη πράξης διαίρεσης.

Και να κάνεις cast σε flloat ή και double αν ο αριθμητής ειναι μικροτερος απο τον παρανομαστή.

Με βοηθουν πολυ οι κωδικες αυτοι, τοσο σαν λυση οσο και για να τους μελετησω και να δω τροπο σκεψης και λαθη..

Εχω κανει το παρακατω αλλα οταν λεει "Dwse arithmitiko telesti" αμεσως μετα λεει "press any key to continue" δεν μπαινει καθολου στην if.. γιατι?

>
#include <stdio.h>
int main(void)
{
 int numb1, numb2, result;
	 char j;
	
	 printf("Dwse 2 akeraious aritmous:\n");
	 scanf("%d%d",&numb1 , &numb2);
	
	 printf("Dwse enan arithmitiko telesti etsi wste na ginei i praksi:\n");
	 scanf("%c", &j);
	 {
	 if (j == '+'){
					 result = numb1+numb2;
					 printf("To athrisma twn arithmwn einai:%d", result);
			 }
	 else if (j == '-'){
					 result = numb1-numb2;
					 printf("H diafora twn arithmwn einai:%d", result);
			 }
	 else if (j =='*'){
					 result = numb1*numb2;
					 printf("To ginomeno twn arithmwn einai:%d", result);
			 }
	 else if (j=='/'){
					 result= numb1/numb2;
					 printf("To piliko twn arithmwn einai:%d", result);	
			 }
	 }
	 system("pause");
	 return 0;
   
}

Δημοσ.

Οχι δεν χτυπαει.. Το εβαλα το αγκιστρο για να ξεχωρισω την if.. Γιατι δεν βλεπει την if καθολου ομως?

Αυτο το αγκιστρο ειναι λαθος και πιθανοτατα το προβλημα σου!

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...