Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Problem] [C++] Proszę o pomoc w łatwym programie.


Rekomendowane odpowiedzi

Opublikowano

Cześć,

Tutaj Gangstuch :) Jestem studentem 1-ego roku na Politechnice Krakowskiej. Tak się zdażyło że dopadła mnie kampania wrześniowa, jej powodem jest przedmiot zwany Programowanie. Nigdy do tej pory nie miałem z tym do czynienia, a że studiuję zaocznie, nasz profesor całego C++ przedstawił nam w 4 weekendy, co jest śmieszne. Oczywiście w własnym zakresie opracowałem dużo materiału, niestety to nie pozwoliło mi uzyskać zaliczenia we wrześniu (dokładnie tydzień temu).

 

Tak wiem , z punktu widzenia średniego programisty zadanie to jest banalne, nie wiem może ja jestem jakiś nie kumaty, ale nie umiem go do końca zrobić. Nie piszę tego tematu po to żebyście zadanie to całkowicie zrobili za mnie, po prostu mam problem w pewnym momencie i nie wiem jak go rozwiązać.

 

Od siebie dodam że głównie uczę się C++ z literatury, posiadam pozycję "C++ dla każdego" czy coś w ten deseń, każdy temat jest dla mnie zrozumiały. Jeżeli możecie mi poradzić jakieś poradniki w internecie (z zadaniami najlepiej) to będę wdzięczny. :)

 

Przejdę teraz do zadania, którego treść brzmi następująco:

"Zdefiniuj funkcję o nazwie F1 typu int z dwoma parametrami będącymi wskaźnikami typu int. Funkcja zwraca wartość większej z liczb otrzymywanych poprzez parametry.

Zdefiniuj funkcję o nazwie F2 typu int z dwoma parametrami będącymi wartościami typu int, funkcja ta wywołuje funkcję F1 przekazując jej otrzymywane wartości i zwraca wartość będącą wartości F1. F2 wykorzystaj w prostym programie."

 

Funkcję F1 zaprogramowałem bez problemu (Wow!!!) -

inf F1(int *x, int*y)

{

if ( *x > *y)

return *x;

else

return *y;

}

 

Jeżeli chodzi o funkcję F2 to jedynie stworzyłem jej prototyp:

F2(int liczba1; int liczba2);

 

Bo jakoś nie miałem pomysłu jak stworzyć jej definicję.

 

Tak jak mówiłem, jestem początkującym - jeżeli chodzi o wiedzę teoretyczną to znam takie zagadnienia jak do, while itp. Także tutaj nie ma problemu. Gorzej z praktyką, tutaj hm trzeba mieć ten pomysł jak to stworzyć żeby działało, a ja jak na razie tego nie widzę. Staram się skupić nad programem ale jednak czegoś jeszcze brakuje.

Dzięki z góry.

Weteran
Opublikowano

Funkcja F2 ma za zadanie wywołać funkcję F1 i zwrócić jej wynik. Pierwsza funkcja przyjmuję dwa wskaźniki na int, a druga dwa inty, więc jedyne co musisz zrobić, to po prostu wywołać funkcję F1 w ciele funkcji F2 z adresami dwóch argumentów tej funkcji, a następnie zwrócić wartość zwróconą przez funkcję F1. Adres zmiennej otrzymuję się operatorem adresu, czyli &.

Ciało funkcji F2 może wyglądać choćby tak: return F1(&liczba1,&liczba2);

Z drugim zdaniem w tym poleceni już chyba sobie poradzisz.

Opublikowano

 

Funkcja F2 ma za zadanie wywołać funkcję F1 i zwrócić jej wynik. Pierwsza funkcja przyjmuję dwa wskaźniki na int, a druga dwa inty, więc jedyne co musisz zrobić, to po prostu wywołać funkcję F1 w ciele funkcji F2 z adresami dwóch argumentów tej funkcji, a następnie zwrócić wartość zwróconą przez funkcję F1. Adres zmiennej otrzymuję się operatorem adresu, czyli &.

Ciało funkcji F2 może wyglądać choćby tak: return F1(&liczba1,&liczba2);

Z drugim zdaniem w tym poleceni już chyba sobie poradzisz.

 

 

#include <iostream>

using namespace std;

int F1( int *x, int *y);

int F2 ( int xx, int yy);

int main()

{

int a,b,c=5,d=7;

cout << "Podaj wartość a:";

cin >> a;

cout << "Podaj wartość b:";

cin>>b;

 

cout <<"Większe jest:"<< F1(&a,&B) << endl;

cout << "Wartość funkcji F2 jest następująca:" << F2(c,d)<<endl;

return 0;

}

int F1(int *x, int *y)

{

if(*x>*y)

return *x;

else

return *y;

}

 

int F2(int xx, int yy)

{

return F1(&xx,&yy);

}

 

Jak widać raczej nie poradziłem sobie z resztą zadania czyli wykorzystaniem F2 w prostym programie, przynajmniej odczuwam takie wrażenie.

Opublikowano

 

Referencji używamy do wskaźników.

Powinno to wyglądać tak:

int F1(int *x, int *y)
{
    if(&x>&y)
        return &x;
    else
        return &y;
}

int F2(int &xx, int &yy)
{
    return F1(xx,yy);
}
Poczytaj o wskaźnikach i referencjach. Jest to bardzo przydatne.

Analizuj przykłady z poradników, to bardzo dużo pomaga.

Po co & w funkcji(if(&x>&y) i returny)? W argumentach wystarczy.

 

int F1(int *x, int *y)
{
    if(*x>*y)
        return *x;
    else
        return *y;
}

int F2(int xx, int yy)
{
    return F1(&xx, &yy);
}

Nie pomagam na PW, od tego macie forum!!!

 

#PHP-things

 

 

08FMpDu.png

 

Weteran
Opublikowano

@Mordijc

Okey...


Jak widać raczej nie poradziłem sobie z resztą zadania czyli wykorzystaniem F2 w prostym programie, przynajmniej odczuwam takie wrażenie.

Kod działa i wykorzystuję funkcję F2, więc chyba jednak sobie z tym poradziłeś.

Nie było mowy o użyciu funkcji F1, więc coś takiego wystarczy:

cout << "Podaj dwie liczby calkowite\na=";
cin >> a;
cout << "b=";
cin >> b;
cout << "Wieksza liczba jest: " << (a == F2(a,  ? 'a' : 'b');
Opublikowano

 

 

@Mordijc

Okey...

Kod działa i wykorzystuję funkcję F2, więc chyba jednak sobie z tym poradziłeś.

Nie było mowy o użyciu funkcji F1, więc coś takiego wystarczy:

cout << "Podaj dwie liczby calkowite\na=";cin >> a;cout << "b=";cin >> b;cout << "Wieksza liczba jest: " << (a == F2(a,  ? 'a' : 'b');
 

 

Tego - (a == F2(a, B) ? 'a' : 'b') kompletnie nie rozumiem :) Da się to zapisać w inny mniej skomplikowany sposób ? :)

Opublikowano

To taki skrócony if else. Warunek jest przed ?, po nim jest wykonanie go w wypadku spełnieia , a po : wykonuje się kod, jeżeli warunek nie został spełniony.

 

Po prostu bez tego kod wyglądałby tak:

 

cout << "Wieksza liczba jest: " ;
if(a == F2(a,)
    cout<< "a";
else cout << "b";

 

A i dzięki temu tipowi możesz funkcje F1 ograniczyć do jednej linijki :).


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...