Napisać w C++ funkcję (nagłówek i ciało)

0

Witam :-)

Mam problem w napisaniu nagłówka i ciała w funkcji w dwóch przykładach. Dopiero uczę się języka C, C++ i byłbym wdzięczny za okazaną pomoc. Nie wiem jak poprawnie je zapisać i nie chciałbym popełnić gdzieś błędu. Z góry bardzo dziękuję za pomoc.

Napisać w C++ funkcję (nagłówek i ciało), dla danych liczbowych:

n, a1,a2,…..,an

zwraca

c

takie, że w ciągu { a1,a2,…..,an} istnieją dokładnie trzy elementy większe od c.

i

Napisać w C++ funkcję (nagłówek i ciało), dla danych liczbowych:

n, a1,a2,…..,an

zwraca

m, b1, b2,….,bm

złożony z elementów dodatnich występujących w ciągu { a1,a2,…..,an}.

0

Czy rozumiesz różnicę pomiędzy pomocą a odwaleniem pracy domowej za ciebie?
Jeżeli znasz to pisz konkretnie z czym masz problem.

0

Nie proszę o odwalenie roboty za mnie.
Z pierwszym przykładem poradziłem sobie jedynie nie wiem co zrobić z tym drugim napisałem taki kod ale nie wiem czy jest dobry:

#include <iostream>

using namespace std;

int znajdz_dodatnie(int n, float wejscie[], float *wyjscie)
{
    int m = 0;
    
    for(int i = 0; i < n; i++)
    {
        if(wejscie[i] >= 0) m++;
    }
    
    wyjscie = new float[m];
    
    int p = 0;
    
    for(int i = 0; i < n; i++)
    {
        if(wejscie[i] >= 0)
        {
            wyjscie[p] = wejscie[i];
            p++;
        }
    }
    
    return m;
}

int main()
{
    int n;
    float *wejscie, wyjscie;
    
    cout << "Podaj ilosc elementow: ";
    cin >> n;
    
    wejscie = new float[n];
    
    for(int i = 0; i < n; i++)
    {
        cout << "Podaj element nr " << i+1 << ": ";
        cin >> wejscie[i];
    }
    
    int m = znajdz_dodatnie(n,wejscie,&wyjscie);
    
    cout << "Wartosci dodatnie: ";
    for(int i = 0; i < m; i++)
    {
        cout << wyjscie[i] << ", ";
    }
    
    return 0;
}    
0

Na pierwszy rzut oka prawie ok. Zmień prototyp funkcji na

int znajdz_dodatnie(int n, float wejscie[], float *&wyjscie)

a w main:

float *wejscie, *wyjscie;

referencja do wskaźnika jest po to, żeby operować na oryginalnym wskaźniku przekazanym do funkcji, a nie na jego kopii.
Na końcu musisz pamiętać o zwolnieniu pamięci:

delete [] wejscie;
delete [] wyjscie;

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