Wątek przeniesiony 2016-12-02 12:23 z C/C++ przez kq.

Rozkłady liczby n na sumy dwóch kwadratów dodatnich liczb całkowitych

0

**Witam. Potrzebuje napisać program w c++ który obliczy mi to zadanie. **

Napisz funkcje, która dostaje jako argument dodatnią liczbę całkowitą n i wypisuje na standardowym wyjściu wszystkie możliwe rozkłady liczby n na sumy dwóch kwadratów dodatnich liczb całkowitych. Rozważ dwa przypadki:
a) gdy "a2+b2" i "b2 + a2" dla a=b(to równa sie jest przekreślone- znak nierówności) traktujemy jako dwa różne rozkłady.
b) gdy "a2+b2" i "b2 + a2" traktujemy jako ten sam rozkład i wypisujemy tylko jedne z nich.
Jeżeli zajdzie taka potrzeba możesz w rozwiązaniu używać funkcji pomocniczych.

Bardzo proszę o pomoc. a2 to mam na myśli 2 do kwadratu

0

Pokaż co już masz.

0

Dopiero zacząłem zajęcia z programowania i nie mam jeszcze nic napisane . Nie wiem jak to napisać dlatego proszę Was o pomoc .

1

W takim razie zacznij od podstaw. Tutaj masz kurs C++ od @fasadin​a: http://fasadin.4programmers.net/

0

Jestem w trakcie nauki a zadanie potrzebuje już za pare dni dlatego proszę Was o pomoc.

1

Pozwól, że wkleję standardową formułkę:

Oczekujesz pomocy czy rozwiązania za Ciebie?

  1. Jeśli pomocy: pokaż kod, staraj się zastosować do http://4programmers.net/Pomoc/Forum_dyskusyjne/Dlaczego_nikt_nie_odpowiada_w_moim_w%C4%85tku
  2. Jeśli wykonania za Ciebie: http://4programmers.net/Forum/Og%C5%82oszenia_drobne (jestem w stanie wykonać zadanie za zaledwie 250zł)
0

Ja wykonam za 50 zł + dostaniesz srogi opierdol, że nie uczysz się systematycznie ;)

1

Mogę ci jedynie pomóc w zrozumieniu czego musisz się nauczyć:

czym jest unsigned int;
czym jest funckja/procedura;
Jak napisać program do rozkłądu liczby na czynniki pierwsze (jest już gotowy algorytm);
Czym jest warunek logiczny;

To wszystko co potrzebujesz, ale jeśli nadal ci się nie chce bo "przespałeś" kilka wykładów i nie wiesz co zrobić, a potrzebujesz bo inaczej salve regina, to już mam napisany kod, możemy zgadać się na jakimś komunikatorze i ci podeślę szczegóły "transakcji" ;).

Najlepiej napisz co umiesz, na którym roku jesteś (bo bazując na moim doświadczeniu to w szkole średniej takich zadań nie ma, chyba, że w technikum informatycznym) i z czym masz problem:

  • z podejściem konceptualno-matematycznym.
  • z nieznajomością składni/odpowiednich wyrażeń.

Bo mogę cię nakierować.

0

A nie... nawet rozkładu nie potrzebujesz, wystarczy matematyka xD

0

Najprostsze rozwiązanie to załóż, że znasz jedną z liczb (pętla for po wszystkich możliwych wartościach 1 .. n) i sprawdź czy druga liczba wyjdzie Ci całkowita, jeśli tak to wypisujesz rozwiązanie. Po chwili kombinowania wymyślisz jak pozbyć się duplikatów zmieniając odrobinę (dam Ci wymyślić jak - więcej się nauczysz). Zacznij od czegoś co zbliży Cię do wyniku końcowego i potem ulepszaj.

0

Zadanie do napisania w kilka minut (bez optymalizacji):

 #include <iostream>
#include <cmath>
 
using namespace std;
 
void funkcja1(unsigned n)
{
    int k[2];
    bool flaga=false;
    k[0]=n/2;
    k[1]=n-k[0];
    do
    {
       // cout << k[0] << " i " << k[1] << endl;
     if(sqrt(k[0])==(int)sqrt(k[0]) && sqrt(k[1])==(int)sqrt(k[1]))
    {
        cout << sqrt(k[0]) << "^2 + " << sqrt(k[1]) << "^2 = " << n << endl;
        cout << sqrt(k[1]) << "^2 + " << sqrt(k[0]) << "^2 = " << n << endl;
        flaga=true;
        k[0]--;
        k[1]++;
    }else
    {
        k[0]--;
        k[1]++;
    }
    }while(k[0]!=0 && k[1]!=n);
    if(!flaga) cout << n << "nie da zapisac sie w postaci sumy kwadratow dwoch liczb" << endl;
 
 
}
 
 
int main()
{
    unsigned int n;
 
    cin >> n;
    funkcja1(n);
 
    return 0;
}

Jeśli złamałem jakiś punkt regulaminu to proszę o usunięcie.
Moi drodzy, żebrzecie o pieniądze od kogoś kto w sumie nie interesuje się programowaniem, dajcie mu zdać i spokój, a nie, że biedak chcąc być grafikiem musi myśleć matematycznie...

Drugi (czy tam pierwszy) przypadek rozważ samodzielnie.

0

Dziękuje. Zacząłem studia informatyczne na 1 roku ale niestety nie ze względu na programowanie...a to zadanie muszę oddać za pare dni . Pracuje dziennie po 12 h i niestety na wszystko nie starcza mi czasu . Jeszcze raz dziękuje !!

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