Wątek przeniesiony 2017-04-09 20:53 z C/C++ przez kq.

Problem z funkcja tworząca tablice

0
int* wielkoscB(int* pocz, int rozmA, int rozmb, float sred, float odch)
{
    int k = 0;
    for (int i = 0; i < rozmA; i++) { // wczytuje wszystkie wartosci z tablicy A
        if (*(pocz + i) > sred - odch && *(pocz + i) < sred + odch) { // sprawdza czy liczba spelnia warunek jezeli spelnia to wypisuje ja oraz inkrementuje zmienna k
            cout << *(pocz + i) << endl;
            k++;
        }
    }
    int* tab;
    tab = new int[k]; // tworzy nowa tablice o rozmiarze k
    for (int j = 0; j < rozmA; j++) { // wczytuje wszystkie wartosci z tablicy A
        int liczba = 0;
        if (*(pocz + j) > sred - odch && *(pocz + j) < sred + odch) { // sprawdza czy liczba spelnia warunek jezeli spelnia to wpisuje wartosc liczbowa do tablicy B
            for (int l = 0; l < k; l++) {
                liczba = *(pocz + j);
                *(tab + l) = liczba;
            }
        }
    }
}

zmienne *pocz , rozm_a określają początek i wielkość tablicy A
sred i odch to wartości liczbowe.

Problem polega na tym, że muszę sprawdzić wszystkie szufladki tablicy A w poszukiwaniu liczb spełniających warunek oraz utworzyć druga tablice B tylko z tymi wartościami.

Jednak nie potrafię tego ogarnąć konceptualnie i koniec końców tablica B wczytuje mi tylko jedna wartość.Mam wątpliwości czy na pewno da się to zrobić w jednej funkcji, zastanawiam się czy słusznie funkcja powinna cokolwiek zwracać. Na pewno w kodzie jest mnóstwo rzeczy które można było przyspieszyć i zastąpić ale taka wizje miałem zęby to wszystko zrobić w jednej funkcji. Ktoś pomoże i objaśni ?

0

Co konkretnie objaśnić?

Brzmi jak zadanie dla std::vector (dlaczego nie new?) i std::copy_if

0

Czy na pewno prawidłowo tworzę tablice b ? Jak przypisać tablicy B wartości z tablicy A

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