[C++] Obliczanie obwodu i pola prostokąta


(Ziomek Zemsty) #1

Witam!

Proszę o wyrozumiałość. Praktycznie dopiero dzisiaj zrozumiałem te najbardziej podstawowe podstawy C++. Oczywiście z drobną pomocą internetu napisałem taki oto program:

// OBLICZANIE OBWODU I POLA POWIERZCHNI PROSTOKATA

// __________________________________________________________________________________________________________________________________________________

#include 

#include 

int main()

{

	int nBok1;

	std::cout << "Podaj dlugosc pierwszego boku: ";

	std::cin >> nBok1;


	int nBok2;

	std::cout << "Podaj dlugosc drugiego boku: ";

	std::cin >> nBok2;


	std::cout << "Obwod prostokata wynosi: " << Obwod(nBok1, nBok2) << std::endl;

	std::cout << "Pole prostokata wynosi: " << Pole(nBok1, nBok2) << std::endl;

	getch();

	return 0;

}

Problem w tym, że cały czas wywala mi błąd C3861 dla Obwód i Pole: Identifier not found. Szczerze mówiąc, nie kumam o co chodzi.


(Michaelp492) #2

Wywala ten błąd ponieważ nie masz zdefiniowanych funkcji Obwod i Pole.

Dopisz przed funkcją main():

int Obwod(int nBok1, int nBok2)

{

  return 2 * (nBok1 + nBok2);

}

int Pole(int nBok1, int nBok2)

{

  return nBok1 * nBok2;

}

Dodatkowo parametry funkcji nie muszą mieć takich samych nazw jak zmienne w funkcji main().


(Ziomek Zemsty) #3

Wiem, ale to mi sporo ułatwia :smiley:

Znasz może jakiś kurs C++ dla początkujących, najlepiej po polsku? Forma dowolna - internetowy, książkowy, byle by był skuteczny/


(Barry06) #4

Książkę polecam tę :http://helion.pl/ksiazki/jezyk-c-szkola-programowania-wydanie-v-stephen-prata,cpprim.htm

Z kursów internetowych słyszałem tylko o tym zawartym w Megatutorialu "Od zera do gier kodera" (http://warsztat.gd/tutorials.php?x=category&id=18)

PS: Co do kodu, który napisałeś to wywal jak najszybciej liniki: #include oraz getch();. Ma to niby służyć zatrzymaniu konsoli, aby można było zobaczyć wyniki działania programu. Jednak używanie akurat tej metody to bezsens ponieważ ta biblioteka jest nieprzenośna, a to zadanie równie dobrze spełnia zestaw funkcji z włączonej przez Ciebie biblioteki iosteam :

w miejscu getch() wstaw:

std::cin.sync();

std::cin.get();

(system) #5

Niestety, ale w biznesie software'owym znajomość angielskiego na poziomie średniozaawansowanym to konieczność.

Spróbuj tutaj -> http://cplus.about.com/library/bltutorials.htm


(Ziomek Zemsty) #6
// OBLICZANIE OBWODU I POLA POWIERZCHNI PROSTOKATA

    // __________________________________________________________________________________________________________________________________________________

    #include 

 using namespace std;

int Obwod(int nBok1, int nBok2)

{

	return 2 * (nBok1 + nBok2);

}


int Pole(int nBok1, int nBok2)

{

	return nBok1 * nBok2;

}

    void main()

    {

       int nBok1;

       cout << "Podaj dlugosc pierwszego boku: ";

       cin >> nBok1;


       int nBok2;

       cout << "Podaj dlugosc drugiego boku: ";

       cin >> nBok2;


       cout << "Obwod prostokata wynosi: " << Obwod(nBok1, nBok2) << endl;

       cout << "Pole prostokata wynosi: " << Pole(nBok1, nBok2) << endl;

	   cin.sync();

	   cin.get();

     }

@barry06

Zmieniłem, tak jak napisałeś, czyli wywaliłem #include i zamiast getch dopisałem te dwa: cin.sync(); i cin.get();, ale wywala mi błąd - 1 unresolved externals. Nie mogę go wyłapać.


(Simon1991) #7

Funkcja main powinna zwracać int, czyli zamień

void main()

na

int main()

(Ziomek Zemsty) #8
// OBLICZANIE OBWODU I POLA POWIERZCHNI PROSTOKATA

    // _________________________________________________

    #include 

 using namespace std;

int Obwod(int nBok1, int nBok2)

{

	return 2 * (nBok1 + nBok2);

}


int Pole(int nBok1, int nBok2)

{

	return nBok1 * nBok2;

}

    int main()

    {

       int nBok1;

       cout << "Podaj dlugosc pierwszego boku: ";

       cin >> nBok1;


       int nBok2;

       cout << "Podaj dlugosc drugiego boku: ";

       cin >> nBok2;


       cout << "Obwod prostokata wynosi: " << Obwod(nBok1, nBok2) << endl;

       cout << "Pole prostokata wynosi: " << Pole(nBok1, nBok2) << endl;

	   cin.sync();

	   cin.get();

	   return 0;

     }

No ok. Zmieniłem void main() na int main() i dopisałem na końcu return 0;, bo tego (chyba) wymaga int main(). Jednakże dalej wywala mi błąd: "1 unresolved externals"


([alex]) #9

Może nie przekompilowałeś po zmianach.


(Ziomek Zemsty) #10

Kompiluję, tj. daję tak jak zawsze klawisz F7 (Build Solution) i czekam na sukces. Niestety, nie widzę go. :frowning:


(Sawyer47) #11

Kod jest w pełni poprawny i się kompiluje, więc to raczej problem z konfigurację IDE, które używasz.


(Ziomek Zemsty) #12

Jak utworzyłem nowy projekt i tam wkleiłem kod, to wszystko gra. Dzięki za pomoc! Pewnie niedługo się tu odezwę z mniej lub bardziej ważną sprawą. Temat zamknięty. :slight_smile: