Kalkulator z różnymi metodami

0

Witam mam projekt na studia który ma wyglądać tak jak w załączniku.
Na chwilę obecna mój kod wygląda tak:
Mam problem z średnią arytmetyczna, średniej harmoczninej która nie daje wyniku a geometrycznej , kwadratowa i potęgowa to dla mnie kosmos i potrzebuję pomocy :) z góry dzięki


       static float obliczanieSumy()
        {

            Console.WriteLine("");
            Console.WriteLine("Podaj pierwsza licze do obliczania sumy: ");
            float a;
            while (!float.TryParse(Console.ReadLine(), out a))
                Console.WriteLine("To nie jest liczba, podaj wartosc jeszcze raz.");
            Console.WriteLine("Podaj druga licze do obliczenia sumy: ");
            float b;
            while (!float.TryParse(Console.ReadLine(), out b))
                Console.WriteLine("To nie jest liczba, podaj wartosc jeszcze raz.");

            return a + b;
            Console.WriteLine("");
        }

        static float obliczanieIloczynu()
        {

            Console.WriteLine("");
            Console.WriteLine("Podaj pierwsza licze do obliczania iloczynu: ");
            float a;
            while (!float.TryParse(Console.ReadLine(), out a))
                Console.WriteLine("To nie jest liczba, podaj wartosc jeszcze raz.");
            Console.WriteLine("Podaj druga licze do obliczania iloczynu: ");
            float b;
            while (!float.TryParse(Console.ReadLine(), out b))
                Console.WriteLine("To nie jest liczba, podaj wartosc jeszcze raz.");

            return a * b;
            Console.WriteLine("");
        }
        static float SredniaArtmetyczna()
        {
            int n;
            float a, suma;
            suma = 0.0f;

            Console.WriteLine("\n\n\tObliczamy iloczyn wyrazów ciągu liczbowego\n");

            do

            {
                Console.WriteLine("\n\tPodaj liczność ciągu liczbowego n: \n\t");
                while (!int.TryParse(Console.ReadLine(), out n))
                {
                    Console.WriteLine("\n\t\aERROR: w zapisie liczby n wystąpił" + "niewłaściwy znak");
                    Console.WriteLine("\n\tPodj wartość n jeszcze raz, ale uważaj " + "co piszesz!: \n");
                }
                if (n <= 0)
                {
                    Console.WriteLine("n musi być większe od 0");
                    Console.WriteLine("\n\tPodj wartość n jeszcze raz, ale uważaj " + "co piszesz!: \n");
                }
            }

            while (n <= 0);

            Console.Write("\n\tWprowadz wartości do średniej:\n\t");

            for (int i = 1; i <= n; i++) // zmieniam 0 na 1
            {
                Console.Write("\n\tPodaj {0}-ą wartość wyrazu ciągu liczbowego: ", i);
                while (!float.TryParse(Console.ReadLine(), out a))
                {
                    Console.WriteLine("\n\tERROR");
                    Console.WriteLine("\n\tPodj wartość n jeszcze raz, ale uważaj " + "co piszesz!: \n");
                }

                suma = suma + a;

            }
            float Ssuma = suma / n;

            Console.WriteLine("\n\tIloczyn {0} wyrazów ciągu libowego jest równa: " + "{1,6:F3}", n, Ssuma);
            Console.WriteLine("\n\tDla kontynaucji naciśnij dowlny klawisz ...");

            return Ssuma;
        }
        static float ObliczanieJednostkiPaszy()
        {

            Console.WriteLine("");
            Console.WriteLine("Ile kilo żyta: ");
            float a, b, kg, kg1;

            while (!float.TryParse(Console.ReadLine(), out a))
            {
                Console.WriteLine("To nie jest liczba, podaj wartosc jeszcze raz.");
            }
            Console.WriteLine("Podaj cenę za kilo: ");

            while (!float.TryParse(Console.ReadLine(), out kg))
            {
                Console.WriteLine("Ile kilo przenicy: ");
            }

            while (!float.TryParse(Console.ReadLine(), out b))
            {
                Console.WriteLine("To nie jest liczba, podaj wartosc jeszcze raz.");
            }
            Console.WriteLine("Podaj cenę za kilo: ");

            while (!float.TryParse(Console.ReadLine(), out kg1))
            {
                Console.WriteLine("To nie jest liczba, podaj wartosc jeszcze raz.");
            }


            return (a * kg + b * kg1) / (kg + kg1);

        }

        static void Main(string[] args)
        {
            ConsoleKeyInfo wyborFunkcjonalnosci;

            do
            {

                Console.WriteLine("Wybierz działanie ktore chcesz wykonac: ");
                Console.WriteLine("A. Obliczanie sumy <in-line>");
                Console.WriteLine("B. Obliczanie sumy <method-call>");
                Console.WriteLine("C. Obliczanie iloczynu <in-line>");
                Console.WriteLine("D. Obliczanie iloczynu <method-call>");
                Console.WriteLine("E. Obliczanie średniej arytmetycznej <in-line>");
                Console.WriteLine("F. Obliczanie średniej arytmetycznej <method-call>");
                Console.WriteLine("G. Obliczanie średniej ważonej <in-line>");
                Console.WriteLine("H. Obliczanie średniej ważonej <method-call>");
                Console.WriteLine("I. Obliczanie ceny jednostki paszy <in-line>");
                Console.WriteLine("J. Obliczanie ceny jednostki paszy  <method-call>");
                Console.WriteLine("K. Obliczanie średniej harmonicznej <in-line>");
                Console.WriteLine("L. Obliczanie średniej harmonicznej <method-call>");
                Console.WriteLine("M. Obliczanie średniej geometrycznej <in-line>");
                Console.WriteLine("N. Obliczanie średniej geometrycznej <method-call>");
                Console.WriteLine("O. Obliczanie średniej kwadratowej <in-line>");
                Console.WriteLine("P. Obliczanie średniej kwadratowej <method-call>");
                Console.WriteLine("Q. Obliczanie średniej potęgowej (średniej uogólnionej) <in-line> ");
                Console.WriteLine("R. Obliczanie średniej potęgowej (średniej uogólnionej) <method-call> ");
                Console.WriteLine("");
                Console.WriteLine("X. Zakonczenie (wyjscie z) programu");

                wyborFunkcjonalnosci = Console.ReadKey();

                if (wyborFunkcjonalnosci.Key == ConsoleKey.A)
                {
                    Console.WriteLine("");
                    Console.WriteLine("Podaj pierwsza liczbe do obliczenia sumy: ");
                    float a;
                    while (!float.TryParse(Console.ReadLine(), out a))
                        Console.WriteLine("To nie jest liczba, podaj wartosc jeszcze raz.");
                    Console.WriteLine("Podaj druga liczbe do obliczenia sumy: ");
                    float b;
                    while (!float.TryParse(Console.ReadLine(), out b))
                        Console.WriteLine("To nie jest liczba, podaj wartosc jeszcze raz.");

                    float c = a + b;

                    Console.WriteLine("Wynik sumowania to: " + c);
                    Console.WriteLine("");

                }
                else if (wyborFunkcjonalnosci.Key == ConsoleKey.B)
                {

                    Console.WriteLine("Wynik sumowania to: " + obliczanieSumy());
                    Console.WriteLine("");

                }
                else if (wyborFunkcjonalnosci.Key == ConsoleKey.C)
                {

                    Console.WriteLine("");
                    Console.WriteLine("Podaj pierwsza liczbe do obliczenia iloczynu: ");
                    float a;
                    while (!float.TryParse(Console.ReadLine(), out a))
                        Console.WriteLine("To nie jest liczba, podaj wartosc jeszcze raz.");
                    Console.WriteLine("Podaj druga liczbe do obliczenia iloczynu: ");
                    float b;
                    while (!float.TryParse(Console.ReadLine(), out b))
                        Console.WriteLine("To nie jest liczba, podaj wartosc jeszcze raz.");

                    float c = a * b;

                    Console.WriteLine("Wynik iloczynu to: " + c);
                    Console.WriteLine("");

                }
                else if (wyborFunkcjonalnosci.Key == ConsoleKey.D)
                {
                    Console.WriteLine("Wynik iloczynu to: " + obliczanieIloczynu());
                    Console.WriteLine("");
                }
                else if (wyborFunkcjonalnosci.Key == ConsoleKey.E)
                {

                    Console.WriteLine("");

                    int iloscLiczb = 0;
                    double suma = 0;

                    Console.Write("Ile liczb chcesz zawrzeć w średniej: ");

                    iloscLiczb = Int32.Parse(Console.ReadLine());


                    for (int i = 0; i < iloscLiczb; i++)
                    {
                        Console.Write("Podaj liczbę: ");

                        suma += double.Parse(Console.ReadLine());
                    }

                    Console.WriteLine("Średnia arytmetyczna z podanych liczb wynosi: " + suma / iloscLiczb);
                    Console.ReadKey();
                }
                else if (wyborFunkcjonalnosci.Key == ConsoleKey.F)
                {
                    Console.WriteLine("Średnia arytmetyczna to: " + SredniaArtmetyczna());
                    Console.WriteLine("");

                }
                //else if (wyborFunkcjonalnosci.Key == ConsoleKey.G)
                //{



                //}
                //else if (wyborFunkcjonalnosci.Key == ConsoleKey.H)
                //{

                //}
                else if (wyborFunkcjonalnosci.Key == ConsoleKey.I)
                {
                    Console.WriteLine("");
                    Console.WriteLine("Ile kilo żyta");
                    float a;
                    while (!float.TryParse(Console.ReadLine(), out a))
                        Console.WriteLine("To nie jest liczba, podaj wartosc jeszcze raz.");
                    Console.WriteLine("Ile kilo przenicy: ");
                    float b;
                    while (!float.TryParse(Console.ReadLine(), out b))
                        Console.WriteLine("To nie jest liczba, podaj wartosc jeszcze raz.");
                    Console.WriteLine("Podaj Podaj cenę za kilo: ");
                    float kg;
                    while (!float.TryParse(Console.ReadLine(), out kg))
                        Console.WriteLine("To nie jest liczba, podaj wartosc jeszcze raz.");
                    Console.WriteLine("Podaj cenę za kilo: ");
                    float kg1;
                    while (!float.TryParse(Console.ReadLine(), out kg1))
                        Console.WriteLine("To nie jest liczba, podaj wartosc jeszcze raz.");
                    float cena = (a * kg + b * kg1) / (kg + kg1);

                    Console.WriteLine("Wynik średniej ważonej to: " + cena);
                    Console.WriteLine("");
                }
                else if (wyborFunkcjonalnosci.Key == ConsoleKey.J)
                {
                    Console.WriteLine("Średnia arytmetyczna to: " + ObliczanieJednostkiPaszy());
                    Console.WriteLine("");
                }
                else if (wyborFunkcjonalnosci.Key == ConsoleKey.K)
                {
                    Console.WriteLine("Program do obliczania średniej harmocznicznej n liczb\n");

                    int n;
                    bool sukces;
                    double mianownik, sr;

                    do
                    {
                        Console.WriteLine("\nPodaj ile liczb chcesz użyć do średniej harmoczninej: ");
                        sukces = int.TryParse(Console.ReadLine(), out n);
                        if (!sukces)
                            Console.WriteLine("nieprawidłowy format liczby!");
                        else if (n <= 0)
                            Console.WriteLine("Ilość liczb musi być dodatnia!");

                    } while (!sukces || n <= 0);

                    for (int i = 1; i <= n; i++)
                    {
                        Console.WriteLine("Podaj a{0}:", i);
                        int a = int.Parse(Console.ReadLine());

                        mianownik = 1 / i;
                        sr = n / mianownik;

                        Console.WriteLine("Średnia :" + sr);
                        Console.WriteLine("");
                    }
                }
                else if (wyborFunkcjonalnosci.Key == ConsoleKey.L)
                {

                }
                else if (wyborFunkcjonalnosci.Key == ConsoleKey.M)
                {

                }
                else if (wyborFunkcjonalnosci.Key == ConsoleKey.N)
                {

                }
                else if (wyborFunkcjonalnosci.Key == ConsoleKey.O)
                {

                }
                else if (wyborFunkcjonalnosci.Key == ConsoleKey.P)
                {

                }
                else if (wyborFunkcjonalnosci.Key == ConsoleKey.Q)
                {

                }
                else if (wyborFunkcjonalnosci.Key == ConsoleKey.R)
                {

                }

            } while (wyborFunkcjonalnosci.Key != ConsoleKey.X);
            Console.WriteLine("");
            Console.WriteLine("Zakonczyles dzialalnosc programu.");
        }
    }
}

0
  1. Konwencja nazewnictwa (http://kurs.aspnetmvc.pl/Csharp/Konwencje_nazewnicze)
  2. Czemu masz podwojone funkcje programu?
0

Przykład średnich:

public static double Srednia_Geometryczna()
{
    Console.WriteLine("Podaj ilosc liczb: ");
    int ilosc = Convert.ToInt32(Console.ReadLine());

    double multiplying = 1;
    for (int i = 0; i<ilosc; i++)
    {
        multiplying *= Convert.ToDouble(Console.ReadLine());
    }

    return Math.Pow(multiplying, 1.0/ilosc);
}

public static double Srednia_Harmoniczna()
{
    Console.WriteLine("Podaj ilosc liczb: ");
    int ilosc = Convert.ToInt32(Console.ReadLine());

    double sum = 0;
    for (int i = 0; i<ilosc; i++)
    {
        sum += 1/Convert.ToDouble(Console.ReadLine());
    }

    return ilosc/sum;
}
public static double Srednia_Arytmetyczna()
{
    Console.WriteLine("Podaj ilosc liczb: ");
    int ilosc = Convert.ToInt32(Console.ReadLine());

    double sum = 0;
    for (int i = 0; i < ilosc; i++)
    {
        sum += Convert.ToDouble(Console.ReadLine());
    }

    return sum / ilosc;
}
public static void Main(string[] args)
{
    Console.WriteLine("Srednia tych liczb to: " + Srednia_Arytmetyczna());
    Console.WriteLine("Srednia tych liczb to: " + Srednia_Harmoniczna());
    Console.WriteLine("Srednia tych liczb to: " + Srednia_Geometryczna());
}
0
Bartek P napisał(a):
  1. Konwencja nazewnictwa (http://kurs.aspnetmvc.pl/Csharp/Konwencje_nazewnicze)
  2. Czemu masz podwojone funkcje programu?

bo miałem zrobic 2 metodami in line i method call dlatego sa podwojone :)

0
WeiXiao napisał(a):

Przykład średnich:

public static double Srednia_Geometryczna()
{
    Console.WriteLine("Podaj ilosc liczb: ");
    int ilosc = Convert.ToInt32(Console.ReadLine());

    double multiplying = 1;
    for (int i = 0; i<ilosc; i++)
    {
        multiplying *= Convert.ToDouble(Console.ReadLine());
    }

    return Math.Pow(multiplying, 1.0/ilosc);
}

public static double Srednia_Harmoniczna()
{
    Console.WriteLine("Podaj ilosc liczb: ");
    int ilosc = Convert.ToInt32(Console.ReadLine());

    double sum = 0;
    for (int i = 0; i<ilosc; i++)
    {
        sum += 1/Convert.ToDouble(Console.ReadLine());
    }

    return ilosc/sum;
}
public static double Srednia_Arytmetyczna()
{
    Console.WriteLine("Podaj ilosc liczb: ");
    int ilosc = Convert.ToInt32(Console.ReadLine());

    double sum = 0;
    for (int i = 0; i < ilosc; i++)
    {
        sum += Convert.ToDouble(Console.ReadLine());
    }

    return sum / ilosc;
}
public static void Main(string[] args)
{
    Console.WriteLine("Srednia tych liczb to: " + Srednia_Arytmetyczna());
    Console.WriteLine("Srednia tych liczb to: " + Srednia_Harmoniczna());
    Console.WriteLine("Srednia tych liczb to: " + Srednia_Geometryczna());
}

Dzięki dzis nie ma mnie przy pc ale jutro to ogarne dzięki jak coś to bede pytać jeszcze :)

0

Nie rób drabinki ifów (zwłaszcza pustych), zamiast ifów zastosuj konstrukcję switch:

      switch (caseSwitch)
      {
          case 1:
              Console.WriteLine("Case 1");
              break;
          case 2:
              Console.WriteLine("Case 2");
              break;
          default:
              Console.WriteLine("Default case");
              break;
      }
0

O mój Boże... Ja bym Ci to oblał, nawet jakby działało ;) Podziel to na metody - każda metoda ma być odpowiedzialna za jedno zadanie. I daj spokój z tymi ifami. Do takich rzeczy masz switch..case.

0

Jeszcze ktoś mi pomoże bo nie mogę zrobić średniej kwadratowej , potęgowej i ważonej. reszte juz mam ogarniętą

0
Micros napisał(a):

Jeszcze ktoś mi pomoże bo nie mogę zrobić średniej kwadratowej , potęgowej i ważonej. reszte juz mam ogarniętą

public static double Srednia_Kwadratowa()
{
    Console.WriteLine("Podaj ilosc liczb: ");
    int ilosc = Convert.ToInt32(Console.ReadLine());

    double sum = 0;
    for (int i = 0; i < ilosc; i++)
    {
        sum += Math.Pow(Convert.ToDouble(Console.ReadLine()),2);
    }

    return Math.Sqrt(sum / ilosc);
}

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