Struktury - wartość zwracana.

Odpowiedz Nowy wątek
2019-04-11 02:09
0

Witam, mam pewien problem odnośnie wartości zwracanej, a raczej wykombinowania w jaki sposób mógłbym zwrócić wartość kiedy w prototypie jest "const". Prototypu samej funkcji oraz struct plik nie można modyfikować. Jedyne co to zawartość funkcji znajdz_minimum. Chciałbym dowiedzieć się w jaki sposób mogę zwrócić WSKAŹNIK DO STRUKTURY Z MINIMUM. "const struct plik* pliki" to jest tablica struktur. "int rozmiar_tablicy" to jest rozmiar tej tablicy. <Tak wiem return wynik nie jest możliwy w formie "const" więc nie piszcie mi tego. (dlatego jest w komentarzu, lecz ma pomóc wam zrozumieć o co mi chodzi)>

struct plik
{
    FILE *uchwyt;
    int rozmiar;
};

struct plik* znajdz_minimum(const struct plik* pliki, int rozmiar_tablicy)
{
    int i=0;
    int min=0;
//  dante
//  const struct plik* wynik;
    while(i<rozmiar_tablicy)
    {
        int wielkosc=funkcja() // mało istotne po prostu liczy dlugosc pliku.
        if(min>wielkosc)
        {
            min=wielkosc;
        //  wynik=(pliki+i);
        } 
        i++;
    }

//  return wynik;
}
edytowany 2x, ostatnio: kq, 2019-04-12 02:52

Pozostało 580 znaków

2019-04-11 02:18
kq

Rozsądna, ale najwyraźniej niezgodna z zadaniem odpowiedź: zwróć wskaźnik do const struktury.

const struct plik* znajdz_minimum(const struct plik* pliki, int rozmiar_tablicy)

W obecnej formie możesz castować zwracany wskaźnik:

struct plik* znajdz_minimum(const struct plik* pliki, int rozmiar_tablicy)
{
    int i=0;
    int min=0;
    const struct plik* wynik;
    // dante
    while(i<rozmiar_tablicy)
    {
        int wielkosc=funkcja() // mało istotne po prostu liczy dlugosc pliku.
        if(min>wielkosc)
        {
            min=wielkosc;
            wynik=(pliki+i);
        } 
        i++;
    }

  return (srtuct plik*)wynik;
}

To jest bardzo brzydkie, ale chyba jedyne rozwiązanie zadania. Musisz zwrócić uwagę, że panuje to podobna zasada jaka panuje przy konwersji literałów stringowych na char*. T.j. to jest ok, tak długo, jak przez taki wskaźnik nie modyfikujesz wartości, która jest const. Tym powinien zarządzać system typów, ale jak go łamiesz to sam musisz to zapewnić.


edytowany 2x, ostatnio: kq, 2019-04-12 02:52
Prototypu nie można zmieniać :) - TheKryszczynPL 2019-04-11 03:18
Phew, późno już i nie doczytałem. - kq 2019-04-11 03:19
Nie ma sprawy :P tak to bym nie pytał o to, bo to wręcz było by oczywiste by zmienić jedną rzecz :) - TheKryszczynPL 2019-04-11 03:20
Zmodyfikowałem treść posta. - kq 2019-04-11 03:23
Ale masz zwrócić wskaźnik do struktury plik, dla której >wymagana wartość< (bez znaczenia co to jest) jest najmniejsza, a nie tę wartość, nie? W takim razie odpowiedź bez zmian, choć zadanie mi się nie spina nadal. - kq 2019-04-11 03:27

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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