problem ze wskaznikami c++

0

Chcialbym zeby ktos mi wytlumaczyl jak napisac program:

a) Napisz funkcję otrzymującą jako argumenty dwa wskaźniki na zmienne typu int, a następnie zwraca
minimum z wartości wskazywanych przez wskaźniki
ja niestety dzialam na adresach tych zmiennych, ale nie wiem jak w funkcji ogarnac dzialanie na wartosci tej zmiennej, wiem ze to banalne a siedze nad tym dobra godzine, pomoze ktos?
moj kod:

#include <iostream>
#include <cstdlib>
#include <conio.h>

using namespace std;

void minimum(int* a, int* b)
{
    int najmniejsza = 0;
    if (*a > * b) {
        *b = najmniejsza;
    }
    else
    {
        *a = najmniejsza;

    }
    cout << najmniejsza;
}

int main()
{
    int liczba1, liczba2;
    cout << "Podaj 2 liczby: " << endl;
    cin >> liczba1 >> liczba2;

    int* dwa;
    dwa = &liczba1;
    int* trzy;
    trzy = &liczba2;
    cout << *dwa << *trzy;

    cout << "najmniejsza liczba to: ";
    minimum(dwa, trzy);
    cout << minimum;

}
0

Przecież wkleiłeś prawie gotowy kod, tylko zamiast wypisać zwróć wybraną wartość...

0

ah niestety niezbyt rozumiem

0

Czy to Twój kod?

0

tak

chodzi o instrukcje return?

1

W takim razie zmodyfikuj funkcję minimum tak aby zwracała int i zwróć tego inta (return) zamiast go wypisywać.

0

okej wlasnie to zrozumialem, a jesli chcialbym to zrobic uzywajac procedury void, w jaki sposob daloby rade?

0

Nie dałoby¹. Zadanie wyraźnie każe zwrócić wartość z funkcji.

¹ out parameters na tym poziomie odpadają, dziękuję czepialskim.

2

Masz kilka błędów:

  1. pierwszy w linii 11
  2. pierwszy w linii 15
  3. Twoja funkcja nic nie zwraca a powinna zwracać wartość int jećli chciałbyś ją użyć w kontekście czegoś na podobieństwo linii 35.
  4. Zdecyduj się albo linia 34 wyświetla wynik albo chcesz ten wynik uzyskać jako rezultat funkcji w linii 35.

Po poprawieniu błędów 1 i 2 program właściwie już zaczyna działać choć wyświetla wynik 2 razy i jest mało elegancko.

screenshot-20201023193734.png

0

tutaj zmiana kodu

#include <iostream>
#include <cstdlib>
#include <conio.h>

using namespace std;

int minimum(int* a, int* b)
{
    int najmniejsza = 0;
    if (*a > * b) {
        *b = najmniejsza;
    }
    else
    {
        *a = najmniejsza;

    }
    return najmniejsza;
}

int main()
{
    int liczba1, liczba2;
    cout << "Podaj 2 liczby: " << endl;
    cin >> liczba1 >> liczba2;

    int* dwa;
    dwa = &liczba1;
    int* trzy;
    trzy = &liczba2;

    cout << "najmniejsza liczba to: ";
    minimum(dwa, trzy);
    cout << minimum;

}

a tu kompilacja, nadal to samo

001.png

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0