Praca domowa cpp -wskaźniki

0

Witam,
jestem tu świeżakiem i bardzo potrzebuje pomocy w zadaniu domowym z cpp dot. wskaźników. Programowanie to zdecydowanie nie jest mój konik, dotychczas udawało mi się pisać programy w oparciu o materiały z wykładów z uczelni, jednak przy tym zadaniu na niewiele się one zdają - są dość ogólne, a dla kogoś, kto wcześniej nie miał z tym styczności - wcale nie jest to łatwe.
Będę wdzięczna za jakiekolwiek uwagi, sugestie od czego tu zacząć, na co zwrócić uwagę - tylko proszę o "łopatologiczne" tłumaczenie :) bo po kilkugodzinnej walce i przeszukaniu całego mnóstwa stron mam jeszcze większy mętlik w głowie...
A oto treść:

"Napisać program, który wykona na liczbach rzeczywistych wszystkie wymienione poniżej działania zgodnie z wyborem użytkownika: iloraz, pierwiastek kwadratowy (z uwzględnieniem sytuacji, gdy liczba pod pierwiastkiem jest ujemna), potęga (z uwzględnieniem sytuacji, gdy podstawa jest równa 0, a wykładnik jest ujemny), iloczyn skalarny dwóch Wektorów (dwuwymiarowych) . Każde z działań powinno być zrealizowane w osobnej funkcji z argumentami będącymi argumentami działania, funkcje powinny przekazywać na zewnątrz wynik działania (poprzez wskaźnik) i ewentualną informację, że działanie nie może zostać wykonane (dotyczy to funkcji Iloraz, pierwiastek kwadratowy i potęga). W takich przypadkach, do wyprowadzenia na zewnątrz funkcji informacji o niemożności wykonania działania należy użyć argumentu przekazanego przez wskaźnik lub referencję. Również argumenty działania powinny być przekazywane do funkcji przez wskaźnik. W programie dostęp do wartości zmiennych powinien być realizowany przez dereferencje. Należy wykorzystać zmienne dynamiczne (operatory new i delete). Wybór działania powinien odbywać się za pomocą instrukcji warunkowych"

0

Chętnie pomożemy, z czym konkretnie masz problem? Pokaż co już masz.

0

Jeden wielki bałagan.. - wstyd sie przyznać.

  1. Nie jestem pewna czy powinnam pójść w if'y czy bardziej w switch żeby odbiorca mógł dokonać wyboru działania
  2. do tej pory wywołanie argumentu robiłam na zasadzie jak poniżej ale tutaj to wszystko komplikuje
    double argument_a(double a)
    {
    cout << "Podaj wartośc dla argumentu a: \n";
    cin >> a;
    }
  3. skoro każde działanie ma być w oddzielnej funkcji - to czym to wgl ująć
  4. gdzie mam zdefiniować ten wskaźnik? w momencie wywoływania danego argumentu, gdy użytkownik ma podać dla niego wartość?
    To wydaje się nieskomplikowane wiem ale jakoś nie mogę połączyć tego wszytskiego w spójną całość, powiem wprost nie chcę żeby ktoś mi podal gotowy kod, bo naprawdę chciałabym to zrozumieć ale szczerze przyznam że nie bardzo wiem od czego tu zacząć
0

Zobacz jak może wyglądać przykładowa funkcja (według opisu zadania) służąca do obliczania pierwiastka.

#include <iostream>
#include <math.h>

using namespace std;

// jeżeli nie można wykorzystać funkcji sqrt
void sqrt1( const double* value , double* result )
{
    *result = -1;
    if( *value<=0 ) return; // gdy nie istnieje pierwiastek zwracana jest wartość -1

    double v { *value };
    int exp {0};
    v = frexp( v , &exp );

    if( exp&1 ){ --exp; v *= 2; }

    double y { (1+v)/2 };
    double z {0};

    while( y!=z )
    {
        z = y;
        y = (y + v/y) / 2;
    }

    *result = ldexp( y , exp/2 );
}

// jeżeli można wykorzystać funkcję sqrt
void sqrt2( const double* value , double* result )
{
    *result = -1;
    if( *value<=0 ) return; // gdy nie istnieje pierwiastek zwracana jest wartość -1

    *result = sqrt(*value);
}

int main()
{
    double *x = new double {2};
    double *result = new double {0};

    sqrt1( x , result );
    cout << *result << "\n";

    sqrt2( x , result );
    cout << *result << "\n";

    delete x;
    delete result;

    return 0;
}

Powyższe zadanie jest czysto akademickie, tak nigdy nie powinno się tworzyć kodu w dzisiejszym C++ zobacz. IMHO wymaganie od studentów pisania wyżej wymienionych potworków programistycznych z użyciem "na siłę" wskaźników więcej szkodzi niż pomaga. W ostateczności można to zrobić na przykładzie w którym ich użycie jest przynajmniej uzasadnione.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.