Program do obliczania średniej harmonicznej

0

Cześć, mam za zadanie napisać program konsolowy do obliczania średniej harmonicznej n liczb.

Mniej więcej wiem co i jak zrobić, ale nie wiem jak to zastosować dla n liczb.

Jak to zrobić aby na początku spytać się ile jest tych liczb, a potem odpowiednio żeby konsola poprosiła o wartości dla tych wszystkich n liczb.

0

A co do tej pory napisałeś?

0
  1. wczytujesz liczbę n
  2. liczysz w pętle for(int i=0;i<n;++i)
0

Bądźcie wyrozumiali bo to w sumie mój pierwszy program który muszę sam napisać :D

No ok póki co napisałem tylko coś takiego :

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

namespace średnia_harmoniczna
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Program do obliczania średniej harmocznicznej n liczb");

            int n, Śr;
            bool sukces;

            do
            {
            Console.WriteLine("Podaj 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(
            }

            Śr = n / (1 / )
        }
    }
}

nie wiem w jaki sposób w wzorze na średnią mam w mianowniku umieścić 1/a1 +1/a2 +1/an

usunięcie zbędnych pustych linii z kodu - fp

0
Etrox napisał(a):

A także nie wiem w jaki sposób w wzorze na średnią mam w mianowniku umieścić 1/a1 +1/a2 +1/an

Zadeklaruj sobie zmienną double mianownik, w pętli od 1 do n pobieraj kolejne liczby i ich odwrotności dodawaj do zmiennej mianownik.
A na koniec podziel n przez mianownik i będziesz miał wynik.

0
somekind napisał(a):

w pętli od 1 do n pobieraj kolejne liczby i ich odwrotności dodawaj do zmiennej mianownik.

Wiem o co ci chodzi i co mam przez to uzyskać, ale nie wiem jak zrobić to co jest w cytacie.
Dalej nie wiem w jaki sposób po zapytaniu się ile jest liczb n, konsola ma wypisywać np dla a4

Podaj a1
Podaj a2
Podaj a3
Podaj a4

Na razie jest ok ? poza tym czego nie ma ?

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

namespace średnia_harmoniczna
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Program do obliczania średniej harmocznicznej n liczb");

            int n;
            bool sukces;

            double mianownik, Śr;

            do
            {
            Console.WriteLine("Podaj 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(
            Śr = n / (1 / )
        }
    }
}

dodanie znacznika <code> dla wyjścia - fp

0
Etrox napisał(a):

Dalej nie wiem w jaki sposób po zapytaniu się ile jest liczb n, konsola ma wypisywać np dla a4
Podaj a1
Podaj a2
Podaj a3
Podaj a4

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

    // tutaj dodanie odwrotności do mianownika
}
0

Czyli zawsze jak bedę potrzebował coś takiego to po prostu piszę "a{0}": i); i tyle ?

0
Etrox napisał(a):

Czyli zawsze jak bedę potrzebował coś takiego to po prostu piszę "a{0}": i); i tyle ?

Console.WriteLine("{3} {2} {1} {0}! {4}{4}{4}","wyświetlania","przykład","tylko","To",6);
0

Niezbyt zrozumiałem Twój zapis.

0

@Etrox - @_13th_Dragon pokazał Ci sposób formatowania łańcucha wyświetlanego przez Console.WriteLine na podstawie podanych argumentów i pierwszego argumentu, jako łańcucha "maski", do którego w odpowiednie miejsca zostaną wstawione wartości odpowiednich argumentów; Nie mam gdzie tego uruchomić, ale na wyjściu powinna pokazać się linia:

To tylko przykład wyświetlania! 666
Poczytaj sobie w sieci o tym.

2
Etrox napisał(a):

Czyli zawsze jak bedę potrzebował coś takiego to po prostu piszę "a{0}": i); i tyle ?

Użyłem przeciążonej wersji Console.WriteLine, która pozwala na zaawansowane formatowanie napisów.
Pierwszy argument to string formatujący, taki szablon całości, który w nawiasach klamerkowych zawiera kolejne liczby (od zera). Dalsze argumenty zostaną podstawione zamiast wartości w nawiasach klamrowych. Zwykła konkatenacja (łączenie stringów) jest nieczytelna, a w ten sposób można czytelnie składać skomplikowane napisy odwołujące się do wielu zmiennych.

Np. ładniejszy jest zapis:

Console.WriteLine("Wierzchołki trójkąta to punkty: A ({0}, {1}), B ({2}, {3}) i C ({4}, {5})", a.X, a.Y, b.X, b.Y, c.X, c.Y);

niż:

Console.WriteLine("Wierzchołki trójkąta to punkty: A (" + a.X + ", " + a.Y + "), B (" + b.X + ", " + b.Y + ") i C (" + c.X + ", " + c.Y + ")"); 
0

Faktycznie, dzięki rozumiem.

To teraz wracając do mojego zadania, stworzyłem tą zmienną mianownik
i jaki mam teraz wyprowadzić na niego wzór ?

Napisałem coś takiego ale to chyba nie tak :D

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

namespace średnia_harmoniczna
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Program do obliczania średniej harmocznicznej n liczb\n");

            int n;
            bool sukces;
            double mianownik, Śr;

            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());

            }
            for (int i = 0; i <= n; i++)
            {

                mianownik = 1 / i;

                Śr = n / mianownik;

                Console.WriteLine("Śr" + Śr);
                Console.ReadKey();
            }
            {
            }
        }
    }
}

usunięcie z kodu zbędnych pustych linii - fp

0

Nigdzie nie masz zapisanych wszystkich liczb ax, więc musisz liczyć mianownik na bieżąco. Skasuj w ogóle tę drugą pętlę, w jednej pętli pobieraj liczbę ax od użytkownika i dodawaj jej odwrotność do mianownika.
A n/mianownik, w ogóle nie ma być w pętli, przecież to dzielenie wykonujesz tylko raz.

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