C# διευκρίνιση σε While

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
aivas
Δημοσιεύσεις: 24
Εγγραφή: 26 Απρ 2013 13:46

C# διευκρίνιση σε While

Δημοσίευση από aivas » 27 Οκτ 2013 13:57

Καλησπέρα παιδεία θα ήθελα να δώσετε μια μικρή διευκόλυνση
παραδείγμα θέλω να το εξης παρακατω στο προγραμμα μου
εβαλα μια
While (εβαλα το Condition)
{
εβαλα να κανει μια ερωτηση εδω περα
και μετα μια if που ελεγε αν ειναι σωστη κανε αυτο αλλιως κανε το αλλο
}
Το προβλημα μου ειναι πως να κανω να εχει διαφορετικες ερωτησεις
θελω να βαλω παραδειγμα 5 ερωτησεις και αυτος που τρεχει το προγραμμα να μου δινει απαντησει και να ξανα ελενγχει μεχρι να φτασει στο Condition και να τερματισει

Ευχαριστώ προκαταβολικά :)

Άβαταρ μέλους
xultimatex
Honorary Member
Δημοσιεύσεις: 2505
Εγγραφή: 26 Ιούλ 2003 13:02
Τοποθεσία: Ξάνθη
Επικοινωνία:

C# διευκρίνιση σε While

Δημοσίευση από xultimatex » 28 Οκτ 2013 11:14

Ίσως να ήταν καλύτερα να δώσεις και τον κώδικα σου γιατί έτσι όπως τα διάβασα δεν κατάλαβα και πολλά.
Η while είναι επανάληψη οπότε τη χρησιμοποιείς εάν θέλεις να ρωτάς την ίδια ερώτηση συνέχεια. Αυτό θέλεις;
Επίσης για τις 5 ερωτήσεις που λες, θέλεις να ελέγχεις αν απάντησε σωστά σε όλες; Η να ελέγχεις μία μία και να κάνεις "κάτι"; Αυτό το "κάτι" τί ειναι;
:arrow: Αν προσπαθείς πολύ για να πετύχεις κάτι, ίσως το κάνεις με λάθος τρόπο...

aivas
Δημοσιεύσεις: 24
Εγγραφή: 26 Απρ 2013 13:46

C# διευκρίνιση σε While

Δημοσίευση από aivas » 28 Οκτ 2013 12:29

xultimatex έγραψε:Ίσως να ήταν καλύτερα να δώσεις και τον κώδικα σου γιατί έτσι όπως τα διάβασα δεν κατάλαβα και πολλά.
Η while είναι επανάληψη οπότε τη χρησιμοποιείς εάν θέλεις να ρωτάς την ίδια ερώτηση συνέχεια. Αυτό θέλεις;
Επίσης για τις 5 ερωτήσεις που λες, θέλεις να ελέγχεις αν απάντησε σωστά σε όλες; Η να ελέγχεις μία μία και να κάνεις "κάτι"; Αυτό το "κάτι" τί ειναι;
Θα ήθελα να δειχνει ο χρηστης αν θελει να επιλεξει Warrior η Scout
Μετα να ζηταει μια ερωτηση αν απαντησει σωστα προχωραει κανονικα αν δεν απαντησει χανει -20 LIFE αν ειναι Warrior ή -10LIFE αν ειναι Scout
Μετα θα πεζει με εναν δρακο υποθετικα τον εβαλα εγω που θα ειναι σε μια While που οσο το DragonHealth και το CharacterHealth ειναι >0 να ρωταει ερωτησεις , Επίσης δοκιμάσα να το κανω με το Goto αλλα πρακτικα δεν ειναι σωστο.

Κώδικας: Επιλογή όλων

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int characterHealth = 100;
            int dragonHealth = 150;
            string characterType;
            Console.WriteLine("Choose [W]arrior or [S]cout");
            characterType = Console.ReadLine();
            if (characterType == "W")
            {
                Console.WriteLine("Warrior");
            }
            else
            {
                Console.WriteLine("Scout");
            }
            Console.WriteLine("You must answer in this Question to pass , if you give a correct answer do not lose health if you do not u lose health");
            Console.WriteLine("You fight ______(6)");
            string answer;
            string answer2;
            answer = Console.ReadLine();
            if ((answer == "Dragon") | (answer == "dragon"))
            {
                Console.WriteLine("You Pass");
                Console.WriteLine("Let's Play");

                    while ((characterHealth > 0) & (dragonHealth > 0))
                    {
                        Console.WriteLine("First Qustion YOU Happy?");
                        answer2 = Console.ReadLine();
                        if (answer2 == "yes")
                        {
                            dragonHealth -= 30;
                            Console.WriteLine("DragonHealth{0}", dragonHealth);
                            goto SecondQuestion;
                            
                            
                        }
                        else
                        {
                            characterHealth -= 25; ;
                            Console.WriteLine("CharacterHealth{0}", characterHealth);
                            
                        }
                    }
                
            SecondQuestion:
                {

                    while ((characterHealth > 0) & (dragonHealth > 0))
                    {
                        string answer3;
                        Console.WriteLine("Second Question YES?");
                        answer3 = Console.ReadLine();
                        if (answer3 == "yes")
                        {
                            dragonHealth -= 30;
                            Console.WriteLine("DragonHealth{0}", dragonHealth);
                            

                        }
                        else
                        {
                            characterHealth -= 25; ;
                            Console.WriteLine("CharacterHealth{0}", characterHealth);
                        }
                    }
                }

            }
            else
            {
                if (characterType == "w")
                {
                    characterHealth -= 20;
                    Console.WriteLine("You Pass but damaged ,CharacterHealth:{0}", characterHealth);
                }
                else if (characterType =="S")
                {
                    characterHealth -= 10;
                    Console.WriteLine("You Pass but damaged ,CharacterHealth:{0}", characterHealth);
                }
            }
            }
            

        }
    }


Άβαταρ μέλους
xultimatex
Honorary Member
Δημοσιεύσεις: 2505
Εγγραφή: 26 Ιούλ 2003 13:02
Τοποθεσία: Ξάνθη
Επικοινωνία:

C# διευκρίνιση σε While

Δημοσίευση από xultimatex » 28 Οκτ 2013 12:58

Χρειάζεσαι μόνο μία μεγάλη while.
Για να διορθώσω τον κώδικα σου θα γίνει κάπως έτσι:

Κώδικας: Επιλογή όλων

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int characterHealth = 100;
            int dragonHealth = 150;
            string characterType;
            Console.WriteLine("Choose [W]arrior or [S]cout");
            characterType = Console.ReadLine();
            if (characterType == "W")
            {
                Console.WriteLine("Warrior");
            }
            else
            {
                Console.WriteLine("Scout");
            }
            Console.WriteLine("You must answer in this Question to pass , if you give a correct answer do not lose health if you do not u lose health");
            Console.WriteLine("You fight ______(6)");
            string answer;
            string answer2;
            answer = Console.ReadLine();
            if ((answer == "Dragon") | (answer == "dragon"))
            {
                Console.WriteLine("You Pass");
                Console.WriteLine("Let's Play");

                    while (true)
                    {
                        Console.WriteLine("First Qustion YOU Happy?");
                        answer2 = Console.ReadLine();
                        if (answer2 == "yes")
                        {
                            dragonHealth -= 30;
                            Console.WriteLine("DragonHealth{0}", dragonHealth);
                        }
                        else
                        {
                            characterHealth -= 25; ;
                            Console.WriteLine("CharacterHealth{0}", characterHealth);
                           
                        }

                 if &#40;characterHealth < 0 | dragonHealth < 0&#41; break;
                        string answer3;
                        Console.WriteLine&#40;"Second Question YES?"&#41;;
                        answer3 = Console.ReadLine&#40;&#41;;
                        if &#40;answer3 == "yes"&#41;
                        &#123;
                            dragonHealth -= 30;
                            Console.WriteLine&#40;"DragonHealth&#123;0&#125;", dragonHealth&#41;;
                           

                        &#125;
                        else
                        &#123;
                            characterHealth -= 25; ;
                            Console.WriteLine&#40;"CharacterHealth&#123;0&#125;", characterHealth&#41;;
                        &#125;
                    &#125;
            &#125;
            else
            &#123;
                if &#40;characterType == "w"&#41;
                &#123;
                    characterHealth -= 20;
                    Console.WriteLine&#40;"You Pass but damaged ,CharacterHealth&#58;&#123;0&#125;", characterHealth&#41;;
                &#125;
                else if &#40;characterType =="S"&#41;
                &#123;
                    characterHealth -= 10;
                    Console.WriteLine&#40;"You Pass but damaged ,CharacterHealth&#58;&#123;0&#125;", characterHealth&#41;;
                &#125;
            &#125;
            &#125;
           

        &#125;
    &#125; 
Οπότε βάζοντας το

Κώδικας: Επιλογή όλων

if &#40;characterHealth < 0 | dragonHealth < 0&#41; break;
ανάμεσα σε κάθε ερώτηση ελέγχεις τις ζωές και σταματάς αν είναι αρνητικές.
Γενικά όμως δεν θα το έκανα έτσι. Δοκίμασε να έχεις έναν πίνακα string[] με τις ερωτήσεις και έναν πίνακα string[][] με τις απαντήσεις. Οπότε

Κώδικας: Επιλογή όλων

questions&#91;0&#93;="You fight ______&#40;6&#41;?"
και
answers&#91;0&#93;&#91;0&#93;="dragon"
answers&#91;0&#93;&#91;1&#93;="Dragon"
...
Έτσι έχεις μία συμμαζεμένη for και απλά προσθέτεις στοιχεία στους πίνακες για νέες ερωτήσεις.
:arrow: Αν προσπαθείς πολύ για να πετύχεις κάτι, ίσως το κάνεις με λάθος τρόπο...

aivas
Δημοσιεύσεις: 24
Εγγραφή: 26 Απρ 2013 13:46

C# διευκρίνιση σε While

Δημοσίευση από aivas » 28 Οκτ 2013 13:22

if (characterHealth < 0 | dragonHealth < 0) break;
Σε ευχαριστώ πολύ φίλε μου αλλα μπορεις να με εξηγησεις το While True και το break;
δεν τα εχουμε μαθει ακομα αν και ψαχνω παραπερα απο οτι μαθαινουμε και για αυτο αν μπορεις να με το κανεις λιγο με απλα λογια ωστε να το καταλαβω
τι κανει το While TRUE και τι το Break;
xultimatex έγραψε:Χρειάζεσαι μόνο μία μεγάλη while.
Για να διορθώσω τον κώδικα σου θα γίνει κάπως έτσι:

Κώδικας: Επιλογή όλων

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
&#123;
    class Program
    &#123;
        static void Main&#40;string&#91;&#93; args&#41;
        &#123;
            int characterHealth = 100;
            int dragonHealth = 150;
            string characterType;
            Console.WriteLine&#40;"Choose &#91;W&#93;arrior or &#91;S&#93;cout"&#41;;
            characterType = Console.ReadLine&#40;&#41;;
            if &#40;characterType == "W"&#41;
            &#123;
                Console.WriteLine&#40;"Warrior"&#41;;
            &#125;
            else
            &#123;
                Console.WriteLine&#40;"Scout"&#41;;
            &#125;
            Console.WriteLine&#40;"You must answer in this Question to pass , if you give a correct answer do not lose health if you do not u lose health"&#41;;
            Console.WriteLine&#40;"You fight ______&#40;6&#41;"&#41;;
            string answer;
            string answer2;
            answer = Console.ReadLine&#40;&#41;;
            if &#40;&#40;answer == "Dragon"&#41; | &#40;answer == "dragon"&#41;&#41;
            &#123;
                Console.WriteLine&#40;"You Pass"&#41;;
                Console.WriteLine&#40;"Let's Play"&#41;;

                    while &#40;true&#41;
                    &#123;
                        Console.WriteLine&#40;"First Qustion YOU Happy?"&#41;;
                        answer2 = Console.ReadLine&#40;&#41;;
                        if &#40;answer2 == "yes"&#41;
                        &#123;
                            dragonHealth -= 30;
                            Console.WriteLine&#40;"DragonHealth&#123;0&#125;", dragonHealth&#41;;
                        &#125;
                        else
                        &#123;
                            characterHealth -= 25; ;
                            Console.WriteLine&#40;"CharacterHealth&#123;0&#125;", characterHealth&#41;;
                           
                        &#125;

                 if &#40;characterHealth < 0 | dragonHealth < 0&#41; break;
                        string answer3;
                        Console.WriteLine&#40;"Second Question YES?"&#41;;
                        answer3 = Console.ReadLine&#40;&#41;;
                        if &#40;answer3 == "yes"&#41;
                        &#123;
                            dragonHealth -= 30;
                            Console.WriteLine&#40;"DragonHealth&#123;0&#125;", dragonHealth&#41;;
                           

                        &#125;
                        else
                        &#123;
                            characterHealth -= 25; ;
                            Console.WriteLine&#40;"CharacterHealth&#123;0&#125;", characterHealth&#41;;
                        &#125;
                    &#125;
            &#125;
            else
            &#123;
                if &#40;characterType == "w"&#41;
                &#123;
                    characterHealth -= 20;
                    Console.WriteLine&#40;"You Pass but damaged ,CharacterHealth&#58;&#123;0&#125;", characterHealth&#41;;
                &#125;
                else if &#40;characterType =="S"&#41;
                &#123;
                    characterHealth -= 10;
                    Console.WriteLine&#40;"You Pass but damaged ,CharacterHealth&#58;&#123;0&#125;", characterHealth&#41;;
                &#125;
            &#125;
            &#125;
           

        &#125;
    &#125; 
Οπότε βάζοντας το

Κώδικας: Επιλογή όλων

if &#40;characterHealth < 0 | dragonHealth < 0&#41; break;
ανάμεσα σε κάθε ερώτηση ελέγχεις τις ζωές και σταματάς αν είναι αρνητικές.
Γενικά όμως δεν θα το έκανα έτσι. Δοκίμασε να έχεις έναν πίνακα string[] με τις ερωτήσεις και έναν πίνακα string[][] με τις απαντήσεις. Οπότε

Κώδικας: Επιλογή όλων

questions&#91;0&#93;="You fight ______&#40;6&#41;?"
και
answers&#91;0&#93;&#91;0&#93;="dragon"
answers&#91;0&#93;&#91;1&#93;="Dragon"
...
Έτσι έχεις μία συμμαζεμένη for και απλά προσθέτεις στοιχεία στους πίνακες για νέες ερωτήσεις.

Άβαταρ μέλους
xultimatex
Honorary Member
Δημοσιεύσεις: 2505
Εγγραφή: 26 Ιούλ 2003 13:02
Τοποθεσία: Ξάνθη
Επικοινωνία:

C# διευκρίνιση σε While

Δημοσίευση από xultimatex » 28 Οκτ 2013 13:39

Το while(true) κάνει ατέρμονη επανάληψη (δεν σταματάει ποτέ)
Το break είναι εντολή που σταματάει τον βρόχο μέσα στον οποίο καλείται (δηλαδή την while).
:arrow: Αν προσπαθείς πολύ για να πετύχεις κάτι, ίσως το κάνεις με λάθος τρόπο...

aivas
Δημοσιεύσεις: 24
Εγγραφή: 26 Απρ 2013 13:46

C# διευκρίνιση σε While

Δημοσίευση από aivas » 28 Οκτ 2013 16:24

xultimatex έγραψε:Το while(true) κάνει ατέρμονη επανάληψη (δεν σταματάει ποτέ)
Το break είναι εντολή που σταματάει τον βρόχο μέσα στον οποίο καλείται (δηλαδή την while).
Ευχαριστώ το κατάλαβα πληρως :)
και κατι αλλο
αν θελω να βαλω να περνει μονο W για Warrior ή μονο S για Scout




Μέσα στο Τry τι να βαλω?

Κώδικας: Επιλογή όλων

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
&#123;
    class Program
    &#123;
        static void Main&#40;string&#91;&#93; args&#41;
        &#123;
            string characterType;
            
            while &#40;true&#41;
            &#123;
                
                try
                &#123;
                    Console.WriteLine&#40;"Choose &#91;W&#93;arrior or &#91;S&#93;cout"&#41;;
                    characterType = Console.ReadLine&#40;&#41;;
                    if &#40;characterType == "W"&#41;
                    &#123;
                        Console.WriteLine&#40;"Warrior"&#41;;
                        Console.Read&#40;&#41;;
                    &#125;
                    if &#40;characterType == "W"&#41; break;
                    else if &#40;characterType == "S"&#41;
                    &#123;
                        Console.WriteLine&#40;&#41;;
                        Console.Read&#40;&#41;;
                    &#125;
                &#125;
                catch
                &#123;
                    Console.WriteLine&#40;"You do not choose Warrior or Scout"&#41;;
                    return;
                &#125;
               
               
            &#125;//Finish while here
        &#125;//static here finish
        &#125;//class here finish
    &#125;//console here finish
Επίσης δοκίμασα αυτό το While True και το Break;

Κώδικας: Επιλογή όλων

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
&#123;
    class Program
    &#123;
        static void Main&#40;string&#91;&#93; args&#41;
        &#123;
            string characterType;

            while &#40;true&#41;
            &#123;

                
                    Console.WriteLine&#40;"Choose &#91;W&#93;arrior or &#91;S&#93;cout"&#41;;
                    characterType = Console.ReadLine&#40;&#41;;
                    if &#40;characterType == "W"&#41;
                    &#123;
                        Console.WriteLine&#40;"Warrior"&#41;;
                    &#125;
                    else
                    &#123;
                        Console.WriteLine&#40;"You don't choose Warrior or Scout"&#41;;
                        return;
                    &#125;
                    if &#40;characterType == "W"&#41; break;

                    if &#40;characterType == "S"&#41;
                    &#123;
                        Console.WriteLine&#40;"Scout"&#41;; 
                    &#125;
                    else
                    &#123;
                        Console.WriteLine&#40;"You don't choose Warrior or Scout"&#41;;
                        return;
                    &#125;
               
                &#125;
            &#125; 
        &#125;//static here finish
        &#125;//class here finish

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες