Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Problem z typami danych


Rekomendowane odpowiedzi

Opublikowano

Witam.

 

Że tak się wyrażę, się zawiesiłem na kalkulatorze.

 

dokładniej chodzi tu o typy danych.

 

Kod:

using System;

class Kalkulator
{

    public static void Main()
    {
        Console.WriteLine("Wpisz typ działania matematycznego");
        string input1 = Console.ReadLine();
        Console.WriteLine("Wpisz pierwszą liczbę");
        int input2 = Console.ReadLine();
        Console.WriteLine("Wpisz drugą liczbę");
        int input3 = Console.ReadLine();
        int output;
        switch (input1) { 
            case "+":
                output = input2 + input3;
            break;
            case "-":
                output = input2 - input3;
            break;
            case "*":
                output = input2 * input3;
            break;
        }
        Console.WriteLine(output);
        Console.ReadLine();
    }

}

Dokładniej to "nie wiem jak zamienić String na Int

Error	1	Cannot implicitly convert type 'string' to 'int'	c:\users\acer\documents\visual studio 2012\Projects\Cody Learning C-Sharp\Cody Learning C-Sharp\Kalkulator.cs	11	22	Cody Learning C-Sharp

Error	1	Cannot implicitly convert type 'string' to 'int'	c:\users\acer\documents\visual studio 2012\Projects\Cody Learning C-Sharp\Cody Learning C-Sharp\Kalkulator.cs	13	22	Cody Learning C-Sharp

Opublikowano

int input2 = Convert.ToInt32(Console.ReadLine());

Pozdrawiam,

Paweł 'asrv'

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber beim Universum bin ich mir nicht ganz sicher."
~A. Einstein

Opublikowano
int input2 = Convert.ToInt32(Console.ReadLine());

Pozdrawiam,

Paweł 'asrv'

 

A masz jakieś "większe zamienniki"?

 

Np. przekonwertowanie tego do Long, bo Int jest zbyt mały

Opublikowano

Tylko, że i tak wszędzie korzystasz z 32 bitowych intów.

 

Jeśli robisz kalkulator to możesz użyć jakieś biblioteki do obsługi dużych liczb.

Takich jak w Javie BigInteger

Opublikowano

@Minecaft2RP

Cuś nie działa tak jak chcę

 

Source :D

 

using System;

class Kalkulator
{

    public static void Main()
    {
        do_calculator();
    }
    public static string get_mathtype() {
        Console.WriteLine("Wpisz typ działania matematycznego");
        string input = Console.ReadLine();
        switch (input)
        {
            case "+":
                return "+";
            case "-":
                return "-";
            case "*":
                return "*";
            case "/":
                return "/";
            default:
                Console.WriteLine("Proszę użyć +, /, - lub *");
                get_mathtype();
                break;
        }
        return "+";
    }
    public static void do_calculator()
    {
        string input1 = get_mathtype();
        Console.WriteLine("Wpisz pierwszą liczbę");
        int input2 = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("Wpisz drugą liczbę");
        int input3 = Convert.ToInt32(Console.ReadLine());
        float output = 0;
        switch (input1)
        {
            case "+":
                output = input2 + input3;
                break;
            case "-":
                output = input2 - input3;
                break;
            case "*":
                output = input2 * input3;
                break;
            case "/":
                output = input2 / input3;
                break;
            default:
                Console.WriteLine("Proszę użyć +, - lub *");
                break;
        }
        Console.WriteLine("Wynik to: "+output);
        Console.ReadLine();
        Console.Clear();
        do_calculator();
    }
} 

 

 

 

A macie "link" do tej biblioteki?

Opublikowano

Chyba we float.

Poszukaj gdzieś jak zmienić typ wyświetlania tej liczby na konsole. Nie jest to zależne ściśle od typu, a od sposobu wyświetlania jaki jest ustawiony. Typy zmiennoprzecinkowe mogą mieć domyślny wykładniczy.

Opublikowano

A powiedz mi bo mam takie elementarne pytanie. Dlaczego piszesz kalkulator na intach zamiast na double??? Co z ułamkami?

 

Tutaj masz taki pseudo kalkulator na double:

using System;


namespace Calc
{
    class Program
    {
        static void Main(string[] args)
        {
            string decision = "";
            do
            {
                Console.WriteLine("Wpisz typ działania matematycznego");
                string options = Console.ReadLine();

                if (options.Contains("+") || options.Contains("-") || options.Contains("*") || options.Contains("/"))
                {
                    Console.WriteLine("Wpisz pierwszą liczbę");
                    double number1 = double.Parse(Console.ReadLine());

                    Console.WriteLine("Wpisz drugą liczbę");
                    double number2 = double.Parse(Console.ReadLine());

                    double sum = 0;
                    switch (options)
                    {
                        case "+":
                            sum = number1 + number2;
                            break;
                        case "-":
                            sum = number1 - number2;
                            break;
                        case "*":
                            sum = number1 * number2;
                            break;
                        case "/":

                            if (number2 == 0)
                                Console.WriteLine("Nie można dzielić przez 0!");

                            sum = number1 / number2;
                            break;
                    }

                    Console.WriteLine("Wynikiem działania jest {0}", sum);


                    Console.WriteLine("Czy chcesz kontynuować? [t/n]");
                    decision = Console.ReadLine();
                
                }
                else
                {
                    Console.WriteLine("Nie ma takiego działania!");
                }

            } while (decision == "t");
            Console.ReadLine();
        }
    }
}

Zamiast Convert.ToInt() możesz zastosować int.Parse(), działa podobnie.

 

Ewentualnie zamiast int możesz operować na LONG. To jest taki bardzo długi int.

Opublikowano

Ewentualnie jeśli chcesz uzyskać odpowiednią precyzję to możesz napisać sobie własną klasę w której będziesz wyświetlał stringa jako inta i na nim operował.

public static string FormatNumber( double getNumber )
{
    var str = string.Format("{0:0.00}", getNumber);

    if ( str.EndsWith("00") )
    {
        return ((int)getNumber).ToString();
    }
    else
    {
        return str;
   }
}

I potem robisz sobie 

var liczba = FormatNumber(123.0);

Albo można skorzystać z Math.Round() aby odpowiednio zaokrąglić 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...