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

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

Δημοσ.

Παιδια εχω ενα θεμα με μια ασκηση.Για να μην την γραφω,εχω επισυναψει την εκφωνηση της.Το θεμα μου εμφανιζεται στην γραμμη 46,οπου πρεπει να διαβασω τι μου δινει ο χρηστης και αναλογως,να τερματιζω το προγραμμα η να συνεχιζω.Εμενα ομως οταν το εκτελω με παει κατευθευειαν στην γραμμη 14 και δεν σκαναρει καθολου την επιλογη μου αν θελω να συνεχισω η οχι.Συγνωμη αλλα το προγραμμα δυσκολευομαι να το βαλω σε <>code γιατι δεν μου λειτουργει οποτε αυτος μπορει να το κανεις καποιος απο κατω.Ουτε ξερω πως να χρησιμοποιω goto.Επισης,εχω επισυναψει και το εκτελεσιμο στο οποιο ΔΕΝ ΠΑΤΗΣΑ ουτε Υ ουτε τπτ μονο του πηγε εκει

Ευχαριστω

 

#include <stdio.h>
int main()
{
    int n=100,i=1,typos,xronia,paidia,prospatheies=1,atoma=1;
    float misthos,telikosmisthos,epidoma;
    char sinexeia;
while (i <= n)
{
    if (((typos>3) || (typos<1)) && (prospatheies<3))
    {
       prospatheies=prospatheies + 1;
       printf("Lathos typos\n");
    }
14  printf("Dwste to typo tou ergazomenou\n");
    scanf("%d\n",&typos);
    printf("Dwste ta xronia ergasias sas\n");
    scanf("%d\n",&xronia);
    printf("Posa paidia exete\n");
    scanf("%d\n",&paidia);
    if (typos == 1)
      misthos=600;
    if (typos == 2)
      misthos=800;
    if (typos == 3)
      misthos=1000;
    if (xronia <=  5)      
          misthos=misthos;
        else if (xronia <= 15) 
            misthos=misthos + misthos*0.05;
            else
             misthos=misthos + misthos*0.1;
    if (paidia == 0){
          epidoma=0;}
        else if (paidia <= 2){
               epidoma=misthos*0.05;}
              else{
                     epidoma=misthos*0.1;}
       telikosmisthos=misthos + epidoma;
       printf("Teliko poso misthodosias : %2.f\n",telikosmisthos);
       printf("Poso epidomatos gia ta paidia : %2.f\n",epidoma);
       printf("Atoma pou prospelastikan : %d\n",atoma);
       printf("An thelete na sinexisete,patiste Y alliws patiste 0\n");
       scanf("%c/n",&sinexeia);
46   if ((sinexeia == 'Y') || (sinexeia == 'y'))
       {
       scanf("%d\n",&typos);
       atoma=atoma + 1;
       i=i + 1;
       }
       if (sinexeia == '0')
       {
       printf("System will terminate\n");
       system("pause");
       return 0;
       }
}
if ((prospatheies==3) && ((typos>3) || (typos<0)))
{
   printf("Dwsate 3 fores lathos typo.To programma tha termatistei\n");
   system ("pause");
   return 0;
}
}   
       
       
        
            
          
    
    
     
     
 
    
 

post-278714-0-35977900-1384423758_thumb.png

post-278714-0-48291600-1384423760_thumb.png

post-278714-0-34657300-1384423761_thumb.png

Δημοσ.

Παιδια εχω ενα θεμα με μια ασκηση.Για να μην την γραφω,εχω επισυναψει την εκφωνηση της.Το θεμα μου εμφανιζεται στην γραμμη 46,οπου πρεπει να διαβασω τι μου δινει ο χρηστης και αναλογως,να τερματιζω το προγραμμα η να συνεχιζω.Εμενα ομως οταν το εκτελω με παει κατευθευειαν στην γραμμη 14 και δεν σκαναρει καθολου την επιλογη μου αν θελω να συνεχισω η οχι.Συγνωμη αλλα το προγραμμα δυσκολευομαι να το βαλω σε <>code γιατι δεν μου λειτουργει οποτε αυτος μπορει να το κανεις καποιος απο κατω.Ουτε ξερω πως να χρησιμοποιω goto.Επισης,εχω επισυναψει και το εκτελεσιμο στο οποιο ΔΕΝ ΠΑΤΗΣΑ ουτε Υ ουτε τπτ μονο του πηγε εκει

Ευχαριστω

 

 

 
       printf("An thelete na sinexisete,patiste Y alliws patiste 0\n");
       scanf("%c/n",&sinexeia);
[color=#ff0000]46   if ((sinexeia == 'Y') || (sinexeia == 'y'))[/color]
[color=#ff0000]       {[/color]
[color=#ff0000]       scanf("%d\n",&typos);[/color]
[color=#ff0000]       atoma=atoma + 1;[/color]
[color=#ff0000]       i=i + 1;[/color]
[color=#ff0000]       }[/color]
       if (sinexeia == '0')
       {
       printf("System will terminate\n");
       system("pause");
       return 0;
       }

 

Όταν δίνεις παραπάνω είσοδο από ό,τι περιμένει η scanf, τότε αυτή μένει στο buffer και την βλέπουν μετέπειτα κλήσεις της. Για αυτό δεν σε ρωτάει και ξανατρέχει το βρόχο. Αν βάλεις μια εντολή να τυπώνει την sinexeia το πιο πιθανό είναι να πάρεις τον αριθμό 10 ή 13 (λόγω του enter που πατάς στην scanf). Το "%c/n" πρέπει να γίνει "%c\n" όπως το έχεις και πιο πάνω και θα σου παίξει όπως και στα άλλα. Το "\n" στο scanf δεν είναι και τόσο καλό γιατί δεν κάνει αυτό που θες παντού. Μια πιο καλή λύση είναι να τρέχει η getchar μετά από κάθε scanf ώστε να τρώει την παραπανίσια είσοδο. Επίσης αντί για system-pause μπορείς να τρέξεις και εκεί getchar γιατί η system-pause παίζει μόνο σε windows.

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

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

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

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

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

Σύνδεση

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

Συνδεθείτε τώρα
  • Δημιουργία νέου...