Skocz do zawartości
kukus

Pierwiastek W C++

Rekomendowane odpowiedzi

Witam! Otóż robiąc kalkulator chciałem dodać funkcję pierwiastka. Zadeklarowalem zmienna 'a' jako pierwsza liczba (podana przez człowieka). a 'k' wynik koncowy pierwiastkowania i dalem taki wzor "a=k*k" i pozniej zeby przeczytal ta liczbe k. Zawsze wychodzi jakas dziwna ta sama liczba. Czy jest jakś znak w C++ ktory zastepuje znak pierwiastka ?

I mam jeszcze 1 pytanko, ktore nie dotyczy kalkulatora. Czy są jakies polskie strony z kursem C# i darmowy kompilator albo jakis program do tego?

Edytowane przez kukus

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

jakos niebardzo to sqrt chyba ze nie wiem jak zapisac dobrze.A mam jeszcze takie jedno pytanko, da sie tak zrobic zeby osoba liczaca na kalkulatorze nie musiala dawac enter po kazdej wprowadzonej liczbie lub znaku?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

da sie tak zrobic zeby osoba liczaca na kalkulatorze nie musiala dawac enter po kazdej wprowadzonej liczbie lub znaku?

1315811[/snapback]

A powiedz nam na początek w jakiś środowisku / kompilatorze, robisz ten program ???

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ja nie bardzo wiem jak podobny jest pascal do tego twojego jezyka

ale tam pierwisatek to jest wlasnie SQRT

A jesli chcesz zeby nie trzeba bylo entera wciskac to musisz zastosowac polecenie READKEY tylko ze z wiadomych przyczyn dziala ono

tylko z 1 znakiem, wiec liczby nie zrobisz tylko cyfre (chyba ze jest jakis bajer co wczytuje dopiero np. po 3 znakach)

Edytowane przez koparka

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tzn. Chce żeby osoba, ktora pisze kiedy nacisnelaby np:*,+ ,- lub / (w przypadku podania liczby) przechodzilo do dzialania.

Moze jakos tak:

If (a==/ || a==* || a==+ || a=='-')

{

goto costam

}

 

costam

Edytowane przez kukus

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

z tym pierwiastkiem, to funkcja sqrt jest w bibliotece math.h

najlepiej jakbys sam zrobil funkcje do obliczania pierwiastka.. moze bys zablysnal :P

mozesz tez do pierwiastkowania uzyc funkcji pow.. czli potegowanie, zobacz w helpie borlanda jak uzywac tych funkcji

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Gość RamzesXXXII

Jestem poczatkujacym ale wedlug mnie powinno byc tak:

#include <iostream>#include <cmath>using namespace std;int main(){	double a,b,c;	char wybor;	cout<<"Ktore dzialanie chcesz wykonac: (*/+/ / /-/ p) ";	cin>>wybor;	if (wybor=='+')	{  cout<<endl<<"Podaj a i b: ";  cin>>a>>b;  c=a+b;  cout<<c<<endl;	}	if (wybor=='*')	{  cout<<endl<<"Podaj a i b: ";  cin>>a>>b;  c=a*b;  cout<<c<<endl;	}	if (wybor=='/')	{  cout<<endl<<"Podaj a i b: ";  cin>>a>>b;  c=a/b;  cout<<c<<endl;	}	if (wybor=='-')	{  cout<<endl<<"Podaj a i b: ";  cin>>a>>b;  c=a-b;  cout<<c<<endl;	}	if (wybor=='p')	{  cout<<endl<<"Podaj liczbe podpierwiastkowa: ";  cin>>a;  cout<<endl<<"Podaj stopien pierwiastka: ";  cin>>b;  c=pow(a,(1/b));  cout<<c<<endl;	}	return 0;}

Program liczy tez pierwiastek dowolnego stopnia po wborze "p"(jako dzialania). Do liczenia pierwiastak uzylem funkci potegowej pow() jako ze dowolny pierwiastek da sie przedstawic jako potege. W programie brakuje zabezpieczenia przed wprowadzeniem niewlasciwych danych aby np. nie wyciagac z liczby -4 pierwiastka 2 stopnia (bo takowego nie ma).

PS. Program pisany na odwal sie :D dziala na pewno i chyba o to ci chodzilo.

PS2.goto - sie praktycznie nie uzywa bo wtedy program jest strasznie trudny do odczytania.

Edytowane przez RamzesXXXII

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jestem poczatkujacym ale wedlug mnie powinno byc tak:

#include <iostream>#include <cmath>using namespace std;int main(){	double a,b,c;	char wybor;	cout<<"Ktore dzialanie chcesz wykonac: (*/+/ / /-/ p) ";	cin>>wybor;	if (wybor=='+')	{  cout<<endl<<"Podaj a i b: ";  cin>>a>>b;  c=a+b;  cout<<c<<endl;	}	if (wybor=='*')	{  cout<<endl<<"Podaj a i b: ";  cin>>a>>b;  c=a*b;  cout<<c<<endl;	}	if (wybor=='/')	{  cout<<endl<<"Podaj a i b: ";  cin>>a>>b;  c=a/b;  cout<<c<<endl;	}	if (wybor=='-')	{  cout<<endl<<"Podaj a i b: ";  cin>>a>>b;  c=a-b;  cout<<c<<endl;	}	if (wybor=='p')	{  cout<<endl<<"Podaj liczbe podpierwiastkowa: ";  cin>>a;  cout<<endl<<"Podaj stopien pierwiastka: ";  cin>>b;  c=pow(a,(1/b));  cout<<c<<endl;	}	return 0;}

Program liczy tez pierwiastek dowolnego stopnia po wborze "p"(jako dzialania). Do liczenia pierwiastak uzylem funkci potegowej pow() jako ze dowolny pierwiastek da sie przedstawic jako potege. W programie brakuje zabezpieczenia przed wprowadzeniem niewlasciwych danych aby np. nie wyciagac z liczby -4 pierwiastka 2 stopnia (bo takowego nie ma).

PS. Program pisany na odwal sie :D dziala na pewno i chyba o to ci chodzilo.

PS2.goto - sie praktycznie nie uzywa bo wtedy program jest strasznie trudny do odczytania.

1317599[/snapback]

O własnie dzieki RamzesXXXII własnie o to mi chodzilo thx:D

Ps: ale tutaj zastosowalbym jednak goto chociazby dlatego, że po zrobienie jakiegos dzialania mozna by bylo przejsc do poczatku:D np:

#include <iostream>#include <cmath>using namespace std;int main(){                poczatek:	double a,b,c;	char wybor;	cout<<"Ktore dzialanie chcesz wykonac: (*/+/ / /-/ p) ";	cin>>wybor;wybor2	if (wybor=='+')	{  cout<<endl<<"Podaj a i b: ";  cin>>a>>b;  c=a+b;  cout<<c<<endl;	}	if (wybor=='*')	{  cout<<endl<<"Podaj a i b: ";  cin>>a>>b;  c=a*b;  cout<<c<<endl;	}	if (wybor=='/')	{  cout<<endl<<"Podaj a i b: ";  cin>>a>>b;  c=a/b;  cout<<c<<endl;	}	if (wybor=='-')	{  cout<<endl<<"Podaj a i b: ";  cin>>a>>b;  c=a-b;  cout<<c<<endl;	}	if (wybor=='p')	{  cout<<endl<<"Podaj liczbe podpierwiastkowa: ";  cin>>a;  cout<<endl<<"Podaj stopien pierwiastka: ";  cin>>b;  c=pow(a,(1/b));  cout<<c<<endl;	}	return 0; cout<<"Czy chcesz zakonczyc dzialanie kalkulatora? (t/n)\n"; cin>>wybor2; if (wybor2=='t')    {     goto poczatek;    }}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Gość RamzesXXXII

jezeli juz chodzi o przejscie do poczatku proponuje zrobic to przez petle do..while() i pozwolic uzytkownikowi wybrac czy chce wrocic czy nie :

#include <iostream>#include <cmath>using namespace std;int main(){	double a,b,c;	char wybor2;	char wybor;	do	{  system("cls");  wybor2='N';  cout<<"Ktore dzialanie chcesz wykonac: (*/+/ / /-/ p) ";  cin>>wybor;  if (wybor=='+')  { 	 cout<<endl<<"Podaj a i b: "; 	 cin>>a>>b; 	 c=a+b; 	 cout<<c<<endl;  }  if (wybor=='*')  { 	 cout<<endl<<"Podaj a i b: "; 	 cin>>a>>b; 	 c=a*b; 	 cout<<c<<endl;  }  if (wybor=='/')  { 	 cout<<endl<<"Podaj a i b: "; 	 cin>>a>>b; 	 c=a/b; 	 cout<<c<<endl;  }  if (wybor=='-')  { 	 cout<<endl<<"Podaj a i b: "; 	 cin>>a>>b; 	 c=a-b; 	 cout<<c<<endl;  }  if (wybor=='p')  { 	 cout<<endl<<"Podaj liczbe podpierwiastkowa: "; 	 cin>>a; 	 cout<<endl<<"Podaj stopien pierwiastka: "; 	 cin>>b; 	 c=pow(a,(1/b)); 	 cout<<c<<endl;  }  cout<<"Czy chcesz wrocic do poczatku : (T/N) ";  cin>>wybor2;	}	while(wybor2=='T');	return 0;}
Edytowane przez RamzesXXXII

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

a ja jeszcze tylko od siebie dodam, że niepotrzebnie sprawdzacie tyle ifów. To nie jest co prawda duży program, ale i tak np. przy wybraniu +, będzie jeszcze sprawdzał warunki na mnożenie, dzielenie, odejmowanie i pierwiastkowanie.

Szkoda marnować czasu :)

Można tak:

switch(wybor){	case '+' : dodawanie(); break;	case '-' : odejmowanie(); break;	case '*' : mnozenie(); break;	case '/' : dzielenie(); break;	case 'p' : pierwiastek(); break;	default : cout<<"nie wybrales wlasciwego dzialania!";}

gdzie funkcja dodawanie() wygląda tak:

function dodawanie(){float a=0.0, b=0.0;cout<<"\npodaj a= "; cin>>a;cout<<"\npodaj b= "; cin>>b;a=a+b;cout<<"\nwynik dodawania: "<<a;}

niesety kodu nie kompilowałem bo nie mam cpp w tej chwili na kompie, ale powinno działać :P

Można by się jeszcze pokusić o wyrzucenie zmiennych przed funkcje, i jeszcze inne modyfikacje, ale to już inna historia :D.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Gość RamzesXXXII

da sie i przez switch i funkcje, ale kukus nie jest zabardzo zaawansowaym :P (bez obrazy ) uzytkownikiem i nie chcialem mu mieszac w kodzie. A pozatym jak zauwazyles program krotki i wedlub mnie jest bez ronicy czy bedzie przez if czy przez switch :D.

 

PS. rzeczywiscie przy tym programie marnujemy bardzo duzo czasu na sprawdzenie az 5 warunow :P :P

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

kukus, mala rada naucz sie pisac programy bez korzystania z komedy goto nieladnie ona w kodzie wyglada i jej dzialnie tez niejest najlepsze, a jesli chodzi o kompilator, widze ze niepiszesz nic bardzo zawilego wiec polecam borlandaC 3.11 jest darmowy i dosowy do pisania prostych programow wystracza w zupelnosci, a jesli sie bardzo upierasz i chcesz isc z duchemc zasu polecam Dev C++

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...