Program kalkulator za pomocą metod

0

Cześć!
Uczę się programowania i nie mogę załapać metod. Uczę się ulepszając swój program (kalkulator) o różne funkcje. Przyszedł czas żeby rozbudować go o metody i program "Lotto", później będą klasy, dziedziczenie i interfejsy. Chciałbym żebyście mi pomogli przerobić lub polecili jakąś literaturę napisaną "łopatologicznie", która tłumaczy metody, bo naprawdę nie mogę tego zarozumieć:) O to co udało mi się zrobić:

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

namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Program Kalkulator wersja v 1.2");
            Console.WriteLine("");
            Console.WriteLine("");
            Console.WriteLine("Najpierw podaj dwie liczby, na których chcesz działać, a następnie wybierz opcję od 1 do 5, która będzie odpowadała za wybrany rodzaj działania, które chcesz wykonać");
            Console.WriteLine("");
            Console.WriteLine("Naciśnij Enter aby przejść dalej.");
            Console.ReadLine();



            int i = 0;
            Console.WriteLine("Podaj 1 liczbę: ");
            string x = Console.ReadLine();
            int a = int.Parse(x);

            Console.WriteLine("Podaj 2 liczbę: ");
            x = Console.ReadLine();
            int b = int.Parse(x);
            
            Console.WriteLine("1 - mnożenie, 2 - dodawanie, 3 - potęgowanie, 4 - silnia, 5 - odejmowanie");
            x = Console.ReadLine();
            int wybor = int.Parse(x);

            if (wybor < 1 || wybor > 6)
            {
                Console.WriteLine("Dokonaj wyboru pomiędzy opcjami: 1,2,3,4 i 5");
                Console.ReadLine();
            }

            else if (wybor > 1 && wybor < 6)
            {

                if (a < 0 || b < 0)
                {
                    Console.WriteLine("Podaj liczby dodatnie.");
                    Console.ReadKey();
                }


                else if (a > 10 || b > 10)
                {
                    Console.WriteLine("Podaj liczby z przedziału od 1 do 10.");
                    Console.ReadKey();
                }


                else if ((a > 0 && a < 11) || (b > 0 || b < 11))
                {



                    if (a == b)
                    {

                        if (wybor == 4)
                        {
                            int c = 2;
                            int wynik = 1;

                            while (c < (a + 1))
                            {
                                wynik = wynik * c;
                                c++;

                            }
                            Console.WriteLine("Wynik silni = " + wynik);
                        }

                        else if (wybor == 3)
                        {
                            int wynik = a;
                            for (i = 1; i < a; i++)
                            {
                                wynik = wynik * a;
                            }
                            Console.WriteLine("Wynik potęgowania = " + wynik);
                        }
                    }




                    if (a != b)
                    {
                        if (wybor == 5)
                        {
                            int wynik;
                            wynik = a - b;
                            Console.WriteLine("Wynik odejmownaia = " + wynik);
                        }

                        else if (wybor == 1)
                        {
                            int wynik;
                            wynik = a * b;
                            Console.WriteLine("Wynik mnożenia = " + wynik);
                        }

                        else if (wybor == 2)
                        {
                            int wynik;
                            wynik = a + a;
                            Console.WriteLine("Wynik dodawania = " + wynik);
                        }

                    }
                }

                Console.ReadLine();
            }
            
           } 
        
       }
        

     
    
}
1

co do metod. Pytanie: czy znasz funkcje?

co do kodu: te "if-y" zamień na instrukcję "switch", będzie ładniej

a to

 
           Console.WriteLine("Podaj 1 liczbę: ");
            string x = Console.ReadLine();
            int a = int.Parse(x);

nie lepiej

 
    Console.WriteLine("Podaj 1 liczbę: ");
    int a  = int.Parse(Console.ReadLine());
0

Przede wszystkim dziękuję za zainteresowanie moim tematem. Poprawiłem wczytywanie z klawiszy oraz zmieniłem if-y na switch-->case ale nie wiem dlaczego nie wyświetla mi wyniku.

Co do drugiego pytania: Uczę się z książki Microsoft Visual Studio 2012. Programowanie w C# (Autor: Dawid Farbaniec) i tam metody nie ma funkcji tylko właśnie metody (może to jest to samo?). Ogólnie wiem na czym to polega ale nie umiem tego zaimplementować.

Wklejam poprawiony kod:

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

namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Program Kalkulator wersja v 1.2.1");
            Console.WriteLine("");
            Console.WriteLine("Usprawnienie w nowej wersji: ");
            Console.WriteLine("1. Zastosowanie instrukcji switch, case");
            Console.WriteLine("2. usprawnienia zczytywania liczb z klawiszy");
            Console.WriteLine("");
            Console.WriteLine("Najpierw podaj dwie liczby, na których chcesz działać, a następnie wybierz opcję od 1 do 5, która będzie odpowadała za wybrany rodzaj działania, które chcesz wykonać");
            Console.WriteLine("");
            Console.WriteLine("Naciśnij Enter aby przejść dalej.");
            Console.ReadLine();



            int i = 0;

            Console.WriteLine("Podaj 1 liczbę: ");
            int a = int.Parse(Console.ReadLine());

            Console.WriteLine("Podaj 2 liczbę: ");
            int b = int.Parse(Console.ReadLine());


            Console.WriteLine("1 - mnożenie, 2 - dodawanie, 3 - potęgowanie, 4 - silnia, 5 - odejmowanie");
            int wybor = int.Parse(Console.ReadLine());


            if (wybor < 1 || wybor > 6)
            {
                Console.WriteLine("Dokonaj wyboru pomiędzy opcjami: 1,2,3,4 i 5");
                Console.ReadLine();
            }

            else if (wybor > 1 && wybor < 6)
            {

                if (a < 0 || b < 0)
                {
                    Console.WriteLine("Podaj liczby dodatnie.");
                    Console.ReadKey();
                }


                else if (a > 10 || b > 10)
                {
                    Console.WriteLine("Podaj liczby z przedziału od 1 do 10.");
                    Console.ReadKey();
                }


                else if ((a > 0 && a < 11) || (b > 0 || b < 11))
                {



                    if (a == b)
                    {
                        switch (wybor)
                        {
                            case 4:
                                {
                                    int c = 2;
                                    int wynik = 1;

                                    while (c < (a + 1))
                                    {
                                        wynik = wynik * c;
                                        c++;

                                    }
                                    Console.WriteLine("Wynik silni = " + wynik);
                                    break;
                                }


                            case 3:
                                {
                                    int wynik = a;
                                    for (i = 1; i < a; i++)
                                    {
                                        wynik = wynik * a;
                                    }
                                    Console.WriteLine("Wynik potęgowania = " + wynik);
                                    break;
                                }
                        }




                        if (a != b)
                        {
                            switch (wybor)
                            {
                                case 5:
                                    {
                                        int wynik;
                                        wynik = a - b;
                                        Console.WriteLine("Wynik odejmownaia = " + wynik);
                                        break;
                                    }

                                case 1:
                                    {
                                        int wynik;
                                        wynik = a * b;
                                        Console.WriteLine("Wynik mnożenia = " + wynik);
                                        break;
                                    }

                                case 2:
                                    {
                                        int wynik;
                                        wynik = a + a;
                                        Console.WriteLine("Wynik dodawania = " + wynik);
                                        break;
                                    }
                            }

                        }
                    }

                   
                }
                Console.ReadLine();

            }

        }

    }
     
    
}

0

Myślę, że z tym linkiem już sobie poradzisz ;) http://www.cezarywalenciuk.pl/post/2011/05/29/Kurs-podstawy-C-Pisanie-Metod-04.aspx

Co do wyświetlania wyniku: Masz źle poustawiane klamry przy if(a==b)

0

Dzięki za link, jak się zapoznam to podzielę się efektami! Już sobie poradziłem z klamerkowym problemem;) A nawiązując do tematu klamerek.. Znacie jakiś magiczny trik żeby klamerki się wyrównywały do tabulatorów, bo na razie muszę na oko patrzeć czy są równo.

1

Co do książki to polecam "Język C# 2010 i Platforma .NET 4" to musisz przeczytać jeśli chcesz programować w tym języku. Strony internetowe są dobre jeśli już coś wiesz, ale jesteś całkiem początkujący to książka jest obowiązkowa.

Do samego kodu to powalcz jeszcze z nim, nadal masz za dużo instrukcji "if", instrukcja "switch case" ma taki wybór jak default

 
switch (wybor)
{
    case 1:
        // mnozenie
        break;
    case 2:
            // dodawanie
        break;
(...) itd
    default:
       Console.WriteLine("Dokonaj wyboru pomiędzy opcjami: 1,2,3,4 i 5");
       Console.ReadLine();
       break;            
}

do potęgowania lepiej użyć Math.Pow(liczba, potęga)

1

nie mogę załapać metod

Poczytaj sobie o programowaniu proceduralnym. Metody w programowaniu obiektowym spełniają podobną funkcję (a nawet więcej), ale dla nieobeznanego z programowaniem wprowadzają dużo niepotrzebnego zamieszania.
W Swojej klasie masz już jedną metodę (funkcję) Main</code> a ściślej <code class="csharp"> static void Main(string[] args) w której masz zawarty cały kod wykonywany przez program. Nic nie stoi na przeszkodzie, by obok niej dodać inne metody.

Autor: Dawid Farbaniec

Nie czytałem jego książek, ale autor ten jest znany na tym forum i nie zasłynął bynajmniej swoją rozległą wiedzą programistyczną i umiejętnościami.

Si_hasz

Si_Szarp!

EDIT:

int i = 0;
//...
for (i = 1; i < a; i++)

Nigdy tak nie rób!

0

Chyba muszę zmienić nick bo nie będę miał życia na tym forum;) a tak poważnie... mam jeszcze książkę C# 5.0. Programowanie wyd. O’Reilly podobno jest bardzo dobra. Dziękuję za wszystkie sugestie, na pewno dla takiego zielonego jak ja każda porada będzie bardzo cenna.

Jak można robić backspace o długość tabulatora tak żeby kod był czytelny?

1 użytkowników online, w tym zalogowanych: 0, gości: 1