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

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

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

Μία άλλη έκδοση του ίδιου προγράμματος (εξίσου μπέρδεμα, αλλά μέχρι τώρα αυτό έχω καταφέρει :P )

 

using System;


namespace Arithmetic_Calculator
{
    class Program
    {
        static void Main(string[] args)
        {

            string entry;
            string operatorSymbol;
            double nu1;
            double nu2;

            while (true)
            { 
                Console.Write("Enter a number (or type \"quit\" to exit): ");
                entry = Console.ReadLine();
                if (!double.TryParse(entry, out nu1) && entry.ToLower() != "quit")
                {
                    Console.WriteLine("Please type a number or \"quit\"", entry);
                    continue;
                }



                if (entry.ToLower() != "quit")
                { 

                    nu1 = double.Parse(entry);

                    Console.Write("Enter a math operator (or type \"quit\" to exit): ");
                    operatorSymbol = Console.ReadLine();
                    if (operatorSymbol.ToLower() == "quit")
                    {
                        break;
                    }
                    while(true)
                    {
                        if (operatorSymbol != "*" && operatorSymbol != "-" && operatorSymbol != "+" && operatorSymbol != "/" && operatorSymbol != "%" && operatorSymbol !="^")
                        {
                            Console.Write("Please type a valid math operator: ");
                            operatorSymbol = Console.ReadLine();
                        }
                        else
                        {
                            break;
                        }
                    }



                    Console.Write("Enter another number (or type \"quit\" to exit): ");
                    entry = Console.ReadLine();
                    if (!double.TryParse(entry, out nu2) && entry.ToLower() != "quit")
                    {
                        Console.WriteLine("Please type a number", entry);
                        continue;
                    }

                    if (entry.ToLower() == "quit")
                    {
                        break;
                    }

                    nu2 = double.Parse(entry);

                    if (operatorSymbol == "+")
                    {
                        Console.WriteLine("Result is: " + (nu1 + nu2));
                    }
                    else if (operatorSymbol == "-")
                    {
                        Console.WriteLine("Result is: " + (nu1 - nu2));
                    }
                    else if (operatorSymbol == "*")
                    {
                        Console.WriteLine("Result is: " + (nu1 * nu2));
                    }
                    else if (operatorSymbol == "/")
                    {
                        Console.WriteLine("Result is: " + (nu1 / nu2));
                    }
                    else if (operatorSymbol == "%")
                    {
                        Console.WriteLine("Result is: " + (nu1 % nu2));
                    }
                    else if (operatorSymbol == "^")
                    {
                        Console.WriteLine("Result is: " + Math.Pow(nu1, nu2));
                    }

                }
                else
                {
                    break;
                }
            }
        }
    }
}

Σκοπός μου αυτή τη φορά είναι να επαναλαμβάνεται ο κώδικας μέχρι ο χρήστης να δώσει "quit" σε οποιαδήποτε από τα prompts. Το ξέρω ότι ο κώδικας δεν είναι καλός, αλλά από τις δοκιμές που έχω κάνει έχω το επιθμητό αποτέλσμα. Εσείς τι λέτε;

ΥΓ: αυτά που έχω μάθει έως τώρα είναι αυτά: https://teamtreehouse.com/library/c-basics, οπότε καταλαβαίνετε ότι πολλά απο αυτά που έχει μέσα ο κώδικας δεν τα έχω καταλάβει στο έπακρο.
Καλή συνέχεια! 

Επεξ/σία από costgial
  • Απαντ. 32
  • Δημ.
  • Τελ. απάντηση

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

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

Πολύ μπέρδεμα φίλε

Για παράδειγμα για το quit έχεις

if (!double.TryParse(entry, out nu1) && entry.ToLower() != "quit")
if (entry.ToLower() != "quit")
if (operatorSymbol.ToLower() == "quit")
if (!double.TryParse(entry, out nu2) && entry.ToLower() != "quit")
if (entry.ToLower() == "quit")

γιατί δεν φτάνει μία φορά:)

Η γνώμη μου είναι κάνε πιο απλές και πιο καλά δομημένες ασκήσεις και προχώρα σε έννοιες και βιβλιοθήκες (μην ξεχάσεις τα regex :))  Μην ανακαλύπτεις δικές σου ασκήσεις αν ναι κάντες απλές.

Οι ασκήσεις/προβλήματα πρέπει να σου λένε τι ακριβώς πρέπει να κάνεις και παραδείγματα από είσοδο έξοδο. Αλλιώς θα χαθείς.  Κάποια μπορείς να βρείς εδώ https://www.w3resource.com/csharp-exercises/

Δες παράδειγμα:

27. Write a C# program and compute the sum of the digits of an integer. Go to the editor
Sample Output:
Input a number(integer): 12
Sum of the digits of the said integer: 3
Click me to see the solution

και η λύση

using System;
public class Exercise27 {
 public static void Main() {
  Console.Write("Input  a number(integer): ");
  int n = Convert.ToInt32(Console.ReadLine());
  int sum = 0;
  while (n != 0) {
   sum += n % 10;
   n /= 10;
  }
  Console.WriteLine("Sum of the digits of the said integer: " + sum);
 }
}

Όπως βλέπεις δεν έχει ούτε if αν είναι ακέραιος ούτε try ούτε τίποτα, όχι ότι δεν χρειάζεται χρειάζεται αλλά όχι σε αυτή τη φάση.

Κάτι τελευταίο όταν δεν μπορείς να λύσεις ένα πρόβλημα σπάσε 2-3 μέρες το κεφάλι σου και μετά δες τη λύση. Μαθαίνεις καλύτερα έτσι :lol:

Επίσης κάθε άσκηση λύνεται με πολούς τρόπους .

 

Επεξ/σία από k33theod
  • Like 1
Δημοσ. (επεξεργασμένο)
18 ώρες πριν, k33theod είπε

Πολύ μπέρδεμα φίλε

Για παράδειγμα για το quit έχεις


if (!double.TryParse(entry, out nu1) && entry.ToLower() != "quit")
if (entry.ToLower() != "quit")
if (operatorSymbol.ToLower() == "quit")
if (!double.TryParse(entry, out nu2) && entry.ToLower() != "quit")
if (entry.ToLower() == "quit")

γιατί δεν φτάνει μία φορά:)

Η γνώμη μου είναι κάνε πιο απλές και πιο καλά δομημένες ασκήσεις και προχώρα σε έννοιες και βιβλιοθήκες (μην ξεχάσεις τα regex :))  Μην ανακαλύπτεις δικές σου ασκήσεις αν ναι κάντες απλές.

Οι ασκήσεις/προβλήματα πρέπει να σου λένε τι ακριβώς πρέπει να κάνεις και παραδείγματα από είσοδο έξοδο. Αλλιώς θα χαθείς.  Κάποια μπορείς να βρείς εδώ https://www.w3resource.com/csharp-exercises/

Δες παράδειγμα:

27. Write a C# program and compute the sum of the digits of an integer. Go to the editor
Sample Output:
Input a number(integer): 12
Sum of the digits of the said integer: 3
Click me to see the solution

και η λύση


using System;
public class Exercise27 {
 public static void Main() {
  Console.Write("Input  a number(integer): ");
  int n = Convert.ToInt32(Console.ReadLine());
  int sum = 0;
  while (n != 0) {
   sum += n % 10;
   n /= 10;
  }
  Console.WriteLine("Sum of the digits of the said integer: " + sum);
 }
}

Όπως βλέπεις δεν έχει ούτε if αν είναι ακέραιος ούτε try ούτε τίποτα, όχι ότι δεν χρειάζεται χρειάζεται αλλά όχι σε αυτή τη φάση.

Κάτι τελευταίο όταν δεν μπορείς να λύσεις ένα πρόβλημα σπάσε 2-3 μέρες το κεφάλι σου και μετά δες τη λύση. Μαθαίνεις καλύτερα έτσι :lol:

Επίσης κάθε άσκηση λύνεται με πολούς τρόπους .

Η αλήθεια είναι ότι οι άσκησεις που έχω κάνει μέχρι στιγμής μου ζητάνε λίγο πιο εύκολα πράγματα, απλά προσπαθώντας να τα εμπλουτίσω τα κάνω πιο περίπλοκα τα πράγματα.

Επεξ/σία από costgial

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

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

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

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

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

Σύνδεση

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

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

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