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

Pytanie, zwracanie funkcji do funkcji

VPS Starter Arubacloud
0 głosów
106 wizyt
pytanie zadane 17 lutego 2021 w C i C++ przez CheF123 Początkujący (450 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 2021 przez TOM_CPP Pasjonat (22,640 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 2021 przez Wiciorny Ekspert (269,120 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 2021 przez tkz Nałogowiec (42,000 p.)
A indeks "a" jest poza tablicą.
komentarz 18 lutego 2021 przez CheF123 Początkujący (450 p.)

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

 

komentarz 18 lutego 2021 przez Wiciorny Ekspert (269,120 p.)
tak, jak najbardziej jest pomijając fakt, że sam kod nie jest poprawny

Podobne pytania

0 głosów
1 odpowiedź 121 wizyt
pytanie zadane 5 sierpnia 2020 w Python przez Marak123 Stary wyjadacz (11,190 p.)
–3 głosów
0 odpowiedzi 170 wizyt
pytanie zadane 15 września 2019 w Sprzęt komputerowy przez Kubserq Nowicjusz (120 p.)
0 głosów
1 odpowiedź 146 wizyt
pytanie zadane 31 sierpnia 2020 w JavaScript przez BlueBox Nowicjusz (150 p.)

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...