Skocz do zawartości

funkcja undeclared


Chell

Rekomendowane odpowiedzi

  • Filar Społeczności

elo, w ponizszym kodzie kompilator wyrzuca mi ze 'plus' undeclared (first use this fuction). co jest?

#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;

double plus(int x)
{
     double xx;
     bool znak;
     while (znak==false)
     {
           switch (x)
           {
                  case 1: cout << "Wprowadz dlugosc pierwszego boku: "; break;
                  case 2: cout << "Wprowadz dlugosc drugiego boku: "; break;
                  case 3: cout << "Wprowadz dlugosc trzeciego boku: "; break;
                  case 4: cout << "Wprowadz dlugosc pierwszej przekatnej: "; break;
                  case 5: cout << "Wprowadz dlugosc drugiej przekatnej: "; break;
                  case 6: cout << "Wprowadz wielkosc kata miedzy przekatnymi: "; break;
                  case 7: cout << "Wprowadz dlugosc boku: "; break;
                  case 8: cout << "Wprowadz dlugosc promienia: "; break;
           }
           cin >> xx;
           if (xx>0) znak==true;
           else cout << "Wprowadz dodatnia wartosc.";
           }
     znak=false;
     return xx;
}
void drugie()
{
     int katy,figura;
     double a,b,c;
     cout << "Ile katow ma interesujaca Cie figura? (3+): ";
     cin >> katy;
     switch (katy)
     {
         case 3:
         {
             a=plus(1);
             b=plus(2);
             c=plus(3);
             d=(a+b+c)/2;
             cout << "Pole trojkatu o bokach dlugosci " << a << ", " << b << " i " << c << " wynosi " << sqrt(d*(d-a)*(d-b)*(d-c));
         }
         break;
         case 4:
         {
             a=plus(4);
             b=plus(5);
             c=plus(6);
             cout << "Pole czworokatu o przekatnych " << a << " i " << b << " oraz kacia miedzy przekatnymi " << c << " wynosi " << a*b/2*(c*180/M_PI);
         }
         break;
         default:
         {
             a=plus(7);
             b=plus(8);
             cout << "Pole " << katy << "-katnej figury o dlugosci boku " << a << " i promieniu " << b << " wynosi " << katy/2*a*b;
         }
     }    
}
int main()
{
     //pierwsze();
     //getch();
     //cout << endl;
     drugie();
     getch();
}

Odnośnik do komentarza
Udostępnij na innych stronach

Zamień

if (xx>0) znak==true;

na

if (xx>0) znak=true;

 

i w

void drugie()
{
     int katy,figura;
     double a,b,c; // <<<< tutaj
     cout << "Ile katow ma interesujaca Cie figura? (3+): ";
     cin >> katy;

zapomniałeś zadeklarować zmiennej 'd'

Odnośnik do komentarza
Udostępnij na innych stronach

fakt, poprawione, ale wciąż plus undeclared

 

Słowo "plus" jest zarezerwowane dla funkcji biblioteki STL (std::plus).

Czyli masz dwie opcje:

  • zmienić nazwę funkcji plus na jakąś inną,
  • wyrzucić globalne using namespace std i wypisywać liczbę przez std::cout zamiast samego cout,
  • wyrzucić globalne using namespace std i wstawić using std::cout, using std::cin i using std::endl.
Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...

Trochę stary temat, ale myślę że się przyda czytającym w przyszłości:

 

double plus(int x)
{
     double xx;
     bool znak;
     while (znak==false)
     {

 

deklarujesz zmienne bez inicjalizacji. To znaczy że w tym momencie są tam śmieci.

Następnie masz pętle while sprawdzającą czy znak==false.

Skoro jednak tam jest śmieć to może się zdarzyć że zmienna od razu będzie ustawiona na true i while się nigdy nie wykona.

Jeśli tak się stanie to przejdzie od razu do return xx;

Ale w xx tez jest śmieć więc zwrócisz śmieciowa wartość, która może być ujemna chociaż w pętli masz warunki mające wykluczyć taką możliwość.

 

W ten sposób otrzymujesz bugi które ciężko znaleźć bo raz się reprodukują a raz nie. W nieprzyjemnych przypadkach u ciebie zawsze będzie działać a przestanie np dopiero po przeniesieniu na inny komputer.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...