• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pytanie, zwracanie funkcji do funkcji

Fiszki IT
Fiszki IT
0 głosów
71 wizyt
pytanie zadane 17 lutego w C i C++ przez CheF123 Początkujący (430 p.)

Witam, mam taki kod:

#include <iostream>
using namespace std;
int wczytaj(int a);
bool s(int a,int sz);
int a=15;
int main()
{
    int a=15,sz=11;
    wczytaj(a);
    if(s(a,sz)==true)
        cout<<"TAK!"<<endl;
    else
        cout<<"NIE!"<<endl;

    return 0;
}
int wczytaj(int a)
{
    int *tab=new int [a];
    for(int i=0;i<=a;i++)
    {
        cin>>tab[i];
    }
    return tab[a];
}
bool s(int a,int sz)
{
    for(int i=0;i<a;i++)
        if(wczytaj(a)<=11) return true;
    return false;
}

Mam pytanie dlaczego zamiast 15 w tablicy musi wpisać 30, i czy taki zapis if(wczytaj(a)<=11) return true; jest poprawy, czy jakoś inaczej zwraca się funkcję do funkcji.

Z góry dziękuję za odpowiedzi!

2 odpowiedzi

+2 głosów
odpowiedź 18 lutego przez TOM_CPP Pasjonat (17,820 p.)

Twój kod to jedna wielka katastrofa.

  1. Za każdym razem kiedy wywołujesz funkcję wczytaj alokujesz tablicę dynamiczną, której nie zwalniasz = wyciek pamięci.
  2. W funkcji wczytaj nie zwracasz ostatniej wartość w tablicy ale to co znajduje się bezpośrednio za nią w pamięci ( czyli to może być dosłownie wszystko ). Pamiętaj że w C++ indeksy tablicy zaczynają się od zera a kończą na wartości o jeden mniejszej od wielkości tablicy.
  3. Do czego potrzebna jest tablica tab? Przecież zwracasz tylko jedną liczbę typu int.
  4. W funkcji s nie używasz w ogóle zmiennej sz - poza tym te nazwy niczego nie mówią, równie dobrze mógłbyś nazwać swoją funkcję hjadhkas6834njsa.
  5. Do czego potrzeba jest Ci globalna zmienna a, skoro zasłaniasz ją zmienną lokalną w main()
0 głosów
odpowiedź 17 lutego przez Wiciorny Mędrzec (165,960 p.)

zy jakoś inaczej zwraca się funkcję do funkcji.

u Ciebie jest wywołanie funkcji, w funkcji a nie jej zwracanie, zwracasz rezultat, ale wywołujesz funkcje wczytaj w wfunkcji "s", a sama funkcja wczytaj zwraca Ci wartosc z tablicy pod indeksem [a].  

1
komentarz 17 lutego przez tkz Nałogowiec (39,540 p.)
A indeks "a" jest poza tablicą.
komentarz 18 lutego przez CheF123 Początkujący (430 p.)

@Wiciorny, ale takie wywołanie funkcji jest poprawne?

 

komentarz 18 lutego przez Wiciorny Mędrzec (165,960 p.)
tak, jak najbardziej jest pomijając fakt, że sam kod nie jest poprawny

Podobne pytania

0 głosów
1 odpowiedź 65 wizyt
pytanie zadane 5 sierpnia 2020 w Python przez Marak123 Dyskutant (9,150 p.)
–3 głosów
0 odpowiedzi 136 wizyt
pytanie zadane 15 września 2019 w Sprzęt komputerowy przez Kubserq Nowicjusz (120 p.)
0 głosów
1 odpowiedź 83 wizyt
pytanie zadane 31 sierpnia 2020 w JavaScript przez BlueBox Nowicjusz (150 p.)
Porady nie od parady
Forum posiada swój własny serwer Discord, dzięki któremu będziesz mógł po prostu pogadać z innymi Pasjonatami lub zapytać o jakiś problem. Podstrona z chatem znajduje się w menu pod ikoną człowieka w dymku.IRC

84,721 zapytań

133,527 odpowiedzi

295,923 komentarzy

55,997 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...