Działanie kwadratowe PROBLEM

0

Witam

zrobiłem niedawno nowy program do obliczania "TWIERDZENIA PITAGORASA" jednak twierdzenie wymaga obliczen kwadratowych a za bardzo nie wiem jak to zrobic :(

#include <cstdlib>
#include <iostream>
#include <conio.h>

template<typename TYP> TYP Kwadrat(TYP L);
using namespace std;
int fliczba1;
int fliczba2;

int Funkcja()
{
    cout<<"PROGRAM DO OBLICZANIA TWIERDZENIA PITAGORASA DWOMA SPOSOBAMI : "<<endl;
    cout<<"--------------------------------------------------------------"<<endl;
}

int Funkcja2()
{
    cout<<"Podaj pierwszy  bok : ";
    cin>>fliczba1;
    cout<<endl;
    cout<<"Podaj drugi  bok : ";
    cin>>fliczba2;
    cout<<endl;
}

int Funkcja3()
{
    cout<<"UWAGA:pamietaj jesli uzywamy 2 sposobu to jeden z bokow musi byc przeciwprzystajacy";
    cout<<endl;
    cout<<endl;
}

int main()
{
    Funkcja();

    Funkcja2();

    int nOpcja;
    std::cout << "Wybierz dzialanie:" << std::endl;
    std::cout << "1. I sposob liczenia twierdzenia pitagorasa A+B" << std::endl;
    std::cout << "2. II sposob liczenia twierdzenia pitagorasa A-C"<< std::endl;
    std::cout << "0. Wyjscie" << std::endl;
    std::cout << "Twoj wybor: ";
    std::cin >> nOpcja;

    switch (nOpcja)
    {
        case 1: std::cout << fliczba1*fliczba1<< " + " << fliczba2*fliczba2 << " = "
                << "fliczba1=" << Kwadrat( fliczba1); break;

        case 2: std::cout << fliczba1 << " - " << fliczba2 << " = "
                << fliczba1 - fliczba2; break;

        case 0: std::cout << "Dziekujemy :)"; break;

        default: std::cout << "Nieznana opcja!";
    }

    getch();
}

oto jest ten program. Wstawiłem tam kwadrat ale wyskakuje jakis błąd:
[Linker error] undefined reference to `int Kwadrat<int>(int)'

Prosze o pomoc

0

Eee, przeciez funkcji Kwadrat nigdzie nie zaimplementowales, zrobiles tylko prototyp (w ogole po cholere ci szablon skoro pewnie nie wiesz co to jest?)

0
Wolverine napisał(a)

Eee, przeciez funkcji Kwadrat nigdzie nie zaimplementowales, zrobiles tylko prototyp (w ogole po cholere ci szablon skoro pewnie nie wiesz co to jest?)

Caly program robilem sam tylko nie wiem jak wykonac działanie kwadratowe ten szablon do kwadratu i to :

template<typename TYP> TYP Kwadrat(TYP L); skopiowalem z jakies innej strony opisującej te działanie.

To jak wyjasnisz co mam dodac aby działanie na kwadracie się udało??

0

Oj bezmyślne kopiowanie jest złe.
A ty zapewne chcesz sobie np.
zmienną x podnieść do kwadratu?
oto tajemnicze rozwiązanie

int funkcja(int x)
{
 int tmp = x*x;
return tmp;
}
// teraz gdzies w funkcji main
int x = 1;//naprzykład
x = funkcja(x);

A tak na marginesie http://www.cplusplus.com/reference/clibrary/cmath/pow.html

0
revcorey napisał(a)

Oj bezmyślne kopiowanie jest złe.
A ty zapewne chcesz sobie np.
zmienną x podnieść do kwadratu?
oto tajemnicze rozwiązanie

int funkcja(int x)
{
 int tmp = x*x;
return tmp;
}
// teraz gdzies w funkcji main
int x = 1;//naprzykład
x = funkcja(x);

A tak na marginesie http://www.cplusplus.com/reference/clibrary/cmath/pow.html

Kurde przepraszam ale z tego wszystkie sam pomieszałem teorie pitagorasa:( i wystarczyło jak by dam 10*10 ponieważ w teorii jest wyraźnie napisane ze do potęgi 2 :D a ja pomieszałem i pomyślałem ze musimy podnieść do takiej potęgi jakiej mamy bok czyli np bok jest 10 to do 10 potęgi liczby 10;/.
Przepraszam wszystkich za ten błąd z mojej strony ale za to mam jeszcze jeden problem :

case 1: std::cout << fliczba1*fliczba1<< " + " << fliczba2*fliczba2 << " = "
                           <<fliczba1*fliczba1 + fliczba2*fliczba2 = c*c; break;

Potęgą tych dwóch liczb (fliczba1 i f liczba 2) wynosi razem 200 jak bym mógł podnieść wynik tez do potęgi drogiej.

case 1: std::cout << fliczba1*fliczba1<< " + " << fliczba2*fliczba2 << " = "
                           <<fliczba1*fliczba1 + fliczba2*fliczba2<<c*c; break;

zrobiłem tak ale wynik wyszedł zły , zrobiłem również tak:

int c = fliczba1*fliczba1 + fliczba2*fliczba2;
             case 1: std::cout << fliczba1*fliczba1<< " + " << fliczba2*fliczba2 << " = "
                           <<fliczba1*fliczba1 + fliczba2*fliczba2<<c*c; break;

i zamiast wyniku 64 otrzymałem 864

a było 4+4=8 i 8 do potegi 2 czyli 8*8=64 a nie 864, ta nie potrzebna ósemka z przodu

Udało się :D nie powinno byc tak :

 case 1: std::cout << fliczba1*fliczba1<< " + " << fliczba2*fliczba2 << " = "
                           <<fliczba1*fliczba1 + fliczba2*fliczba2<<c*c; break;

tylko tak :

int c = fliczba1*fliczba1 + fliczba2*fliczba2;
   switch (nOpcja)
   {
             case 1: std::cout << fliczba1*fliczba1 << " + " << fliczba2*fliczba2 << " = "
                           <<c*c; break;

Dziękuje za wszystkie posty

// połączyłem posty i dodałem tagi code (dop. deus)

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