Liczenie iloczynu ciągu

0

Witam, mam problem z moim pierwszym małym programikiem za zajęcia. Mianowicie podczas liczenia iloczynu ciągu wywala wynik 0 :/ Ktoś może naprowadzić mnie co jest nie tak? :P

static float ObliczanieIloczynuCiąguLiczbowego(out int N)
        {
            int n2;
            float b, I = 0.0F;

            Console.WriteLine("Obliczamy iloczyn wyrazów ciągu liczbowego");
            do
            {
                Console.Write("Podaj wartość n: ");
                while (!int.TryParse(Console.ReadLine(), out n2))
                {
                    Console.WriteLine("Błąd! Niewłaściwy znak!");
                    Console.Write("Podaj n jeszcze raz: ");
                }

                if (n2 <= 0)
                {
                    Console.WriteLine("Błąd! Liczba n musi być większa od 0");
                    Console.Write("Podaj n jeszcze raz: ");
                }
            } while (n2 <= 0);


            //Obliczenie iloczynu
            for (int i = 1; i <= n2; i++)
            {

                Console.Write("\n\t Podaj {0} ą wartość wyrazu ciągu liczbowego: ", i);
                while (!float.TryParse(Console.ReadLine(), out b))
                {
                    Console.WriteLine("\n\tERROR: w zapisie {0} - go wyrazu ciągu liczbowego "
                        + " wystąpił niedozwolony\n\t\t znak", i);
                    Console.Write("\n\tPodaj wartość wyrazu ciągu liczbowego jeszcze raz, ale"
                        + "uważaj\n\t co piszesz: ");
                }
                I = I * b;
            }
            N = n2;
            return I;  
 int n2;
                        float b, I = 0.0F;

                        Console.WriteLine("\n\n\tObliczamy iloczyn wyrazów ciągu liczbowego");
                        do
                        {
                            Console.Write("\n\tPodaj wartość n: ");
                            while (!int.TryParse(Console.ReadLine(), out n2))
                            {
                                Console.WriteLine("\n\tBłąd! Niewłaściwy znak!");
                                Console.Write("\n\tPodaj n jeszcze raz: ");
                            }

                            if (n2 <= 0)
                            {
                                Console.WriteLine("\n\tBłąd! Liczba n musi być większa od 0");
                                Console.Write("\n\tPodaj n jeszcze raz: ");
                            }
                        } while (n2 <= 0);


                        //Obliczenie iloczynu
                        for (int i = 1; i <= n2; i++)
                        {

                            Console.Write("\n\t Podaj {0} ą wartość wyrazu ciągu liczbowego: ", i);
                            while (!float.TryParse(Console.ReadLine(), out b))
                            {
                                Console.WriteLine("\n\tERROR: w zapisie {0} - go wyrazu ciągu liczbowego "
                                    + " wystąpił niedozwolony\n\t\t znak", i);
                                Console.Write("\n\tPodaj wartość wyrazu ciągu liczbowego jeszcze raz, ale"
                                    + "uważaj\n\t co piszesz: ");
                            }
                            I = I * b;
                        }
                    Console.WriteLine("\n\n\tIloczyn {0} wyrazów ciągu liczbowego jest równy: {1,6:F3}",n2,I);
                    Console.WriteLine("\n\tDla kontynuacji naciśnij dowolny klawisz...");
                    Console.ReadKey();
1
float b, I = 1.0F;
0

Tak proste a tak ciężko mi to było zauważyć haha, dziękuje ślicznie :)

0

Tym razem utknąłem na geometrycznej :( Wywala wynik 1 za każdym razem, ehh..

 {
                    int n2;
                    float b = 1.0F;
                    float I = 1.0F;
                    float Sr = 1.0F;

                    Console.WriteLine("\n\n\tObliczamy iloczyn wyrazów ciągu liczbowego");
                    do
                    {
                        Console.Write("\n\tPodaj wartość n: ");
                        while (!int.TryParse(Console.ReadLine(), out n2))
                        {
                            Console.WriteLine("\n\tBłąd! Niewłaściwy znak!");
                            Console.Write("\n\tPodaj n jeszcze raz: ");
                        }

                        if (n2 <= 0)
                        {
                            Console.WriteLine("\n\tBłąd! Liczba n musi być większa od 0");
                            Console.Write("\n\tPodaj n jeszcze raz: ");
                        }
                    } while (n2 <= 0);


                    //Obliczenie średniej geometrycznej
                    for (int i = 1; i <= n2; i++)
                    {

                        Console.Write("\n\t Podaj {0} ą wartość wyrazu ciągu liczbowego: ", i);
                        while (!float.TryParse(Console.ReadLine(), out b))
                        {
                            Console.WriteLine("\n\tERROR: w zapisie {0} - go wyrazu ciągu liczbowego "
                                + " wystąpił niedozwolony\n\t\t znak", i);
                            Console.Write("\n\tPodaj wartość wyrazu ciągu liczbowego jeszcze raz, ale"
                                + "uważaj\n\t co piszesz: ");
                        }

                        I = I * b;
                        Sr = (float)Math.Pow(I, (1 / n2));
                    }
                    Console.WriteLine("\n\n\tIloczyn {0} wyrazów ciągu liczbowego jest równy: {1,6:F3}", n2, Sr);
                    Console.WriteLine("\n\tDla kontynuacji naciśnij dowolny klawisz...");
                    Console.ReadKey();
                }
1

W c# (i w paru innych językach), dzielenie liczb całkowitych daje wynik całkowity: 1/3 = 0. Zamień

Sr = (float)Math.Pow(I, (1 / n2));

na

Sr = (float)Math.Pow(I, (1.0 / n2));

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