Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » P@blo 05:35
 » Pinokio.p 05:21
 » alien1 05:14
 » hokr 05:07
 » power 03:57
 » NWN 03:38
 » DYD 03:02
 » Visar 01:56
 » Pawiano 01:47
 » Shark20 01:47
 » Pio321 01:44
 » piszczyk 01:43

 Dzisiaj przeczytano
 41130 postów,
 wczoraj 25974

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2024
A R C H I W A L N A   W I A D O M O Ś Ć
    

Potrzebna pomoc z C++ , problem z przeładowaniem operatorów. , Magnus 20/01/04 22:33
Znów mam problem z programikiem.
Żródło leży tu http://www.vwbully.republika.pl/temp/TEMAT7.CPP

Tesć zadania jest następująca:
Zbudować klasę z przeciazonymi operatorami ^= i !
w celu wykorzystania potegowania i oblicznia silni
--nie wiem czy ma być ^= czy samo ^

Programik w zasadzie jest npisany w 90% ale nie moge dojsć do tego jak przekazać pobrane zmienne do operatora np ! (silnia) aby mi to poiliczyl. Ciagle wychodza błędy parse eror a teraz coś pozminieałem i Linker error.

Prosze o pomoc bo pewnie jest to coś banalnego a ja nie umiem sobie z tym poradzić :-(

  1. jakby komuś nie chciało się sciagać źródła , Magnus 20/01/04 22:35
    /* Zbudować klasę z przeciazonymi operatorami ^= i !
    w celu wykorzystania potegowania i oblicznia silni*/

    #include<iostream.h>
    #include <math.h>

    class liczba
    {

    public:

    double x;

    liczba() {x=0;};
    liczba (double);

    friend liczba operator ! (liczba);
    friend liczba operator ^ (liczba,liczba);

    void wypisz(void);
    };

    liczba operator ! (liczba a)
    {
    double i, wyn=1;
    for (i=1; i<=a.x; i++)
    {
    wyn=wyn*i;
    }
    //cout<<"Wynik silni: "<<wyn;
    return wyn;
    }

    liczba operator ^ (liczba a, liczba b)
    {
    double wyn;
    // x=a.x;
    // y=b.x;
    wyn=pow(a.x,b.x);

    // cout<<"Wynik potegowania: "<<wyn;
    return wyn;
    }

    void liczba::wypisz(void) /* funkcja wypisywania */
    {
    cout<<"("<<this->x<<")"<<endl<<endl;
    }


    main()
    {
    int f;
    liczba a,b;
    char wyb;

    cout<<"Podaj liczbe\n";
    cin>>a.x;

    cout<<"Wybierz dzialanie ^ lub !\n";
    cin>>wyb;

    switch (wyb)
    {
    case '!':
    cout<<"wybr !\n";


    break;

    case '^':
    cout<<"wybr ^\n";

    cout<<"podaj wykladnik";
    cin>>b.x;

    (a^b).wypisz();

    break;

    default :
    cout<<"Koniec programu\n";
    break;
    }

    cin>>f;
    return 0;
    }

  2. po pierwsze, , Quad 20/01/04 23:00
    masz blad w operatorach ! i ^ bo maja zwracac typ liczba a zwracaja wyn ktorey jest typu double. Po drugie jest deklaracja konstruktora (double) a nie ma definicji. To tyle jak bede mial jeszcze chwile to spojrze ;)

  3. jeszcze mała pomoc potrzebna przy silni, reszta już ok. , Magnus 20/01/04 23:40
    // przeciazanie operatorow
    liczba operator ! (liczba a) // przeciazenie !
    {
    double i;
    double wyn=1;
    for (i=1; i<=a.x ; i++) { wyn=wyn*i; }
    cout<<wyn;
    }

    case '!':
    cout<<"wybr !\n";
    l1!;

    Problem jest z l1!; bo wyskakuje Parse error before!. Nie potrafie się odwołać do tego operatora żeby liczyl to jak trzeba.
    udało mi się uruchomić potęgowanie czyli 50% już jest...

    pod linkiem ualtualnione źródło.

  4. ok możecie już tu nie zaglądać. Programik działa. , Magnus 21/01/04 00:04
    wystarczyło wywołać przez !l1; i działa ok.

    
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL