Brakujaca liczba

0

Spośród liczb naturalnych od 1 do n włącznie usuwamy losowo jedną, a resztę zapisujemy w przypadkowej
kolejności. Napisz program deserter, który wczytuje zapisane liczby ze standardowego wejścia aż do
napotkania końca pliku i wypisuje na standardowe wyjście tę brakującą.

Wiem jak zrobić to za pomocą tablicy, ale kompletnie nie wiem jak to zrobić za pomocą zwykłej pętli. Jakieś sugestie, proszę? :)

5

Istnieje wzór na sumę liczb od 1 do n, starczy odejmować od takowej wyczytanie i wypisać co ci zostanie.

0

Dziękuję, aczkolwiek wydaje mi się, że nie powinno ustalać wartości N, a jedynie wypisywać liczby, aż uzna się, że jest wystarczająco.

int deserter(int n)
{
    int sume = 0, number;
    for(int index=0; index<n; index++)
    {
        sume = ((n+1)*((n+1)+1))/2;
    }
    for(int index=0; index<n; index++)
    {
        cin>>number;
        sume = sume - number;
    }

    cout << sume;
}
0

Można wiedzieć do czego służy pierwsza pętla? Bo moim zdaniem powinien być sam wzór, który chyba powinien wyglądać tak sum = (n * (n+1)) /2. Swoją drogą jesteś pewien że n dostaniesz jako parametr? Bo skoro wczytujesz " do końca pliku" to nie wiesz ile tych liczb będzie, a co za tym idzie trzeba by je umieścić w jakimś kontenerze (lista?), policzyć przy okazji , i dopiero wtedy sprawdzać której brakuje.

0

Nie mogę użyć tablicy w tym zadaniu

0

Sorki, przez te upały chwilami przestaję działać. Dodawaj liczby na wejściu (równocześnie je licząc), i odejmij uzyskaną sumę od tej uzyskanej z wzoru. Pamiętaj tylko że na wejściu pojawi się n-1 liczb

1

@sweeneytodd o_O a gdzie tu jakieś tablice potrzebne? Jeśli znasz n to wiesz ile ma wynosić suma, bo to ciąg arytmetyczny od 0 z różnicą równą 1. Więc wyznaczasz tą sumę a potem czytasz po kolei liczby z wejścia i odejmujesz od tej sumy.

1

wyxoruj n - 1 liczb z wejścia, następnie przexoruj przez 1, 2, .., n

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