infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: George mihalache din Martie 27, 2013, 17:39:47



Titlul: Numere pitagoreice
Scris de: George mihalache din Martie 27, 2013, 17:39:47
Se da un numar n,sa se verifice daca este numar pitagoreic.
(a^2+b^2=n^2)

Ma poate ajuta si pe mine cineva cu o idee de unde sa incep va rog?
Nu am nici ce'a mai mica idee de unde sa incep ... Ma gandeam prima data sa folosesc un contor care sa parcurga numerele din intervalul (1;n) si sa verifice ... ceva ... nu stiu ce :aha: ... dar avand in vedere ca nici nu stiu ce ar putea verifica si ca ar putea fi un interval ff mare de parcurs pt unele numere nu prea cred ca ar fi o rezolvare buna ...


Titlul: Răspuns: Numere pitagoreice
Scris de: Paul-Dan Baltescu din Martie 27, 2013, 17:55:33
Ai putea sa-l fixezi pe a cu o parcurgere la de 1 la n cu ai sugerat si tu. Apoi sa verifici daca exista b astfel incat conditia de numar pitagoreic sa fie adevarata. Pe scurt, sa verifici daca n2-a2 este patrat perfect. La verificare, ar putea sa-ti fie utila functia sqrt ce returneaza radicalul unui numar.


Titlul: Răspuns: Numere pitagoreice
Scris de: George mihalache din Martie 27, 2013, 18:21:13
Interesant ...  :-k
Incerc sa scriu acum algoritmul si revin cu edit ^^
Mersi frumos.


Titlul: Răspuns: Numere pitagoreice
Scris de: George mihalache din Martie 27, 2013, 18:53:28
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int n,a=0,i,b=0;
    cout<<"n=";cin>>n;
    for (i=1; i<=n; i++)
    {
        a=i*i;
        n=n*n;
        b=n-a;
        if (sqrt(b)==int(sqrt(b)))
            cout<<sqrt(a)<<' '<<sqrt(b);
    }
    return 0;
}


Deci...asta am facut pana acum dar dintr'un motiv oarecare nu merge...
Dar in schimb daca modific "for (i=1; i<=n; i++)" in "for (i=3; i<=3; i++)" pt n=5 imi afiseaza 4 si 3(corect...) sau "for (i=8; i<=8; i++)" pt n=10 afiseaza 6 si 8 ...
Ce e in neregula :(?


Titlul: Răspuns: Numere pitagoreice
Scris de: Visan Radu din Martie 27, 2013, 18:56:47
Din cate vad, il modifici pe n in for-ul acela. Fa ceva de genul: a = i * i; b = n * n - a;


Titlul: Răspuns: Numere pitagoreice
Scris de: George mihalache din Martie 27, 2013, 19:01:39
Am modificat.Acum merge bine ^^ Mersi frumos ^^...