[C++] Funkcja sqrt


(Ziomek Zemsty) #1
#include 

#include 

using namespace std;

int main()

{

	double area;

	cout << "Podaj powierzchnie swojego mieszkania w metrach kwadratowych." << endl;

	cin >> area;

	double side;

	side = sqrt(area);

	cout << "Odpowiada to kwadratowi o boku " << side << "metrow." << endl;

	return 0;

        cin.sync();

        cin.get();

}

Sprawdzałem kod kilka razy i moim zdaniem jest czysty. Nie wiem, czemu wywala mi błąd:

one or more multiply defined symbols found


(Wojtekbogocki) #2

Mnie też wydaje się czysty, ale prawie śpię na siedząco więc mogę się mylić :wink: Spróbuj jeszcze raz przebudować projekt (jeśli korzystasz z VC++ będzie to Ctrl+Alt+F7), czasami pomaga, sprawdź czy z innymi nazwami zmiennych też są błędy. No i nie wiem po co te cin.* po returnie, jeśli masz niepotrzebny kod a nie chcesz go usuwać bierzesz go w /* tutaj */ masz dzięki temu mniej problemów z organizacją.


(Tom837) #3

Witam

Mi się się osobiście nie podoba tylko "side = sqrt(area);"

Czy chcesz ustailć obszar ustalony :?:

Już osobiście za długo tu siedze


(Sawyer47) #4

Kod wydaje się ok, poza cin.sync() i cin.get() - wcześniej jest przecież return 0, wyjście z funkcji main, więc się nie wykonają. Inna sprawa, że jest to średnio mądre obejście sytuacji, gdy uruchamiać program z dwukliku konsola zamyka się po wykonaniu programu, no ale już mniejsza z tym.

Nie napisałeś jaki kompilator wyrzuca ten błąd.


(Ziomek Zemsty) #5

MS Visual C++ 2010 Express Edition

W programie chodzi o to, że podaje się pow. w metrach kwadratowych, a on zamienia to na kwadrat i wylicza jego bok - jakoś tak :smiley:

Spróbowałem jeszcze raz i dalej to samo. Dla mnie w kodzie jest wszystko jasne, kwestia tego, czy jest on uporządkowany to już sprawa osobista. Ale dla czego kompilator wywala błąd?

To cin.sync(); i cin.get(); chyba rzeczywiście niepotrzebne, ale czy wtedy program nie zamknie się od razu po pokazaniu wyniku? Może dać to przed return 0; ?


(Razi) #6

cin.sync() i cin.get() to współczesne przenośne rozwiązanie zatrzymania konsoli przed zamknięciem. conio.h to staroć z czasów DOSa, a system("pause") to uzależnienie od windowsa. Najlepiej żeby nie było takich zatrzymywaczy, a program byłby odpalany normalnie z konsoli.

Ogólnie kod poza tym że za returnem jest cokolwiek jest OK. VC widocznie ma jakieś widzimisię.


(Ziomek Zemsty) #7

trudno, uczę się :smiley:

Aha, wrzuciłem niechcący zły kod.Teraz dopiero to zauwazyłem - chodzi o te ciny. To lecę uczyć się dalej :smiley:


(system) #8

Kod jest, jak najbardziej w porządku. Dla pewności sprawdziłem w IDE C::B i wszystko działa, jak najbardziej poprawnie. Kolega Razi ma rację, do

#include conio.h

oraz

system("PAUSE");

Innym sposobem na zatrzymanie programu jest możliwość napisania funkcji :

void stop(void){

   char c;

   cout << "Aby zakonczyc nacisnij dowolny klawisz i zatwierdz ENTER'em" << endl;

   cin >> c;

}

Nie mniej jednak nie jest to zbyt wygodny sposób wg. mnie.

Pozdrawiam


(Sawyer47) #9

Innym, prostym rozwiązaniem jest najpierw uruchomić konsolę, a następnie z jej poziomu uruchamiać programy.


(Barry06) #10

Albo jeszcze jeden, dostępny w VS - trzeba wstawić breakpoint przed ostatnią linijką


(Razi) #11

@barry06: nie tylko VS, ale też w każdym innym dzisiejszym IDE do C++ z debuggerem

Albo pisać w Code::Blocks, który uruchamia konsolę, a po zakończeniu wykonywania skompilowanego programu wyświetla informację na temat czasu działania aplikacji i czeka na enter :stuck_out_tongue:


(Barry06) #12

Wiem, ale autor wspomniał, że korzysta właśnie z VS. W tym przypadku jednak zatrzymywanie wyników programu to najmniejszy z problemów z którymi musi się zmierzyć autor...