Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<ctime>
- #include<string>
- using namespace std;
- void showVector(double *vectorExample, int n,string vectorName)
- {
- cout << "Wektor" <<" "<< vectorName << endl;
- for (int i = 0; i < n; i++)
- {
- cout << vectorExample[i] << endl;
- }
- }
- void setVectorValue(double*vectorExample, int n,string vectorName)
- {
- cout << "Wpisz wartosci wektora" <<" "<< vectorName << endl;
- for (int i = 0; i < n; i++)
- {
- cin >> vectorExample[i];
- }
- }
- double scalarValue(double*VectorExampleA, double*VectorExampleB, int n, long double&resultByReference)
- {
- for (int i = 0; i < n; i++)
- {
- resultByReference += (VectorExampleA[i] * VectorExampleB[i]);
- }
- return resultByReference;
- }
- double scalarValue(double*VectorExampleA, double*VectorExampleB, int n, double*resultByPointer)
- {
- for (int i = 0; i < n; i++)
- {
- (*resultByPointer) += (VectorExampleA[i] * VectorExampleB[i]);
- }
- return *resultByPointer;
- }
- double scalarValue(double*VectorExampleA, double*VectorExampleB, int n, double resultByValue) {
- for (int i = 0; i < n; i++)
- {
- resultByValue += (VectorExampleA[i] * VectorExampleB[i]);
- }
- return resultByValue;
- }
- double mathExpression(double*VectorExampleA, double*VectorExampleB, int n,double*resultByPointer)
- {
- double valA=0, valB=0;
- for (int i = 0; i < n; i++)
- {
- valA += pow(VectorExampleA[i], 2);
- valB+= pow(VectorExampleB[i], 2);
- }
- return ((valA + valB) / (scalarValue(VectorExampleA, VectorExampleB, n,resultByPointer)));
- }
- int main() {
- double *vectorA,*vectorB,resultByPointer=0,resultByValue=0;
- long double resultByReference = 0;
- int n;
- cout << "Podaj liczbe elementow wektora\n";
- cin >> n;
- vectorA = new double[n];
- vectorB = new double[n];
- setVectorValue(vectorA, n,"A");
- cout << endl;
- setVectorValue(vectorB, n,"B");
- cout << endl;
- showVector(vectorA,n,"A");
- showVector(vectorB,n,"B");
- cout << endl;
- cout << "Iloczyn skalarny(przez wartosc ) wynosi\n";
- cout << scalarValue(vectorA, vectorB, n, resultByValue) << endl;
- //cout << resultByValue << endl; //mozesz sobie ja wyswietlic zeby pokazac ze przekazywanie przez wartosc nie modyfikuje przekazywanej
- //zmiennej, funkcja pracuje na kopi obiektu
- cout << "Iloczyn skalarny(przez wskaznik) wynosi\n";
- scalarValue(vectorA, vectorB, n, &resultByPointer); //dzialanie podobne jak z referencja ponizej z tym, ze referencja to
- //nie to samo co wskaznik, roznica jest taka ze wskaznika mozna przestawic zeby wskazywal na inny obiekt a referencji nie mozna
- cout << resultByPointer << endl;
- cout << "Iloczyn skalarny(przez referencje) wynosi\n";
- scalarValue(vectorA, vectorB, n, resultByReference);
- cout << resultByReference << endl; //wyswietalmy zmienna ktora przekazywalismy do funkcji przez referencje, ma ona zmieniona
- //wartosc gdyz nie pracowalismy na kopi obiektu a "oryginalnej" zmiennej
- cout << "Wartosc wyrazenia\n";
- cout << mathExpression(vectorA, vectorB, n,&resultByPointer)<<endl;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement