error: must return a value c++

0

Witam serdecznie.
Jakoś z pomocą internetu i slajdow z wykladow udalo mi sie napisac program ( baza danych w C++) ale niestety wyskakuja mi 4 errory podczas proby kompilacji, oto one:
error C4716: 'dodawanie_studentow' : must return a value
error C4716: 'usuwanie_studenta' : must return a value
error C4716: 'szukanie_studenta' : must return a value
error C4716: 'wyswietlanie_bazy' : must return a value

Kod:
funkcje:

 #include <iostream>
#include "naglowki.h"
#include <string>

using namespace std;

dane_studenta dane[100];
int ilosc_studentow = 0;

int dodawanie_studentow()
{
        string dodanie_studenta = "tak";

        do
        {
                
                cout << "Podaj imie: ";
                cin >> dane[ilosc_studentow].imie;
        
                cout << "Podaj nazwisko: ";
                cin >> dane[ilosc_studentow].nazwisko;
        
                cout << "Podaj nr indeksu: ";
                cin >> dane[ilosc_studentow].nr_indeksu;
        
                cout << "Podaj grupa: ";
                cin >> dane[ilosc_studentow].grupa;

                cout << "Podaj wydzial: ";
                cin >> dane[ilosc_studentow].wydzial;

                ilosc_studentow++;

                cout << "\nczy dodac kolejnego: ";
                cin >> dodanie_studenta;
        }while(dodanie_studenta == "tak" || dodanie_studenta == "t");
}

int usuwanie_studenta()
{
        int nr_indeksu;
        cout << "\n podaj indeks: ";
        cin >> nr_indeksu;
        
        for(int i=0; i<=ilosc_studentow-1; ++i)
        {
                if(dane[i].nr_indeksu == nr_indeksu)
                {
                        if(ilosc_studentow > 1)
                        {
                                dane[i].imie = dane[ilosc_studentow-1].imie;
                                dane[i].nazwisko = dane[ilosc_studentow-1].nazwisko;
                                dane[i].nr_indeksu = dane[ilosc_studentow-1].nr_indeksu;
                                dane[i].grupa = dane[ilosc_studentow-1].grupa;
                                dane[i].wydzial = dane[ilosc_studentow-1].wydzial;
                        }

                        dane[ilosc_studentow-1].imie = "";
                        dane[ilosc_studentow-1].nazwisko = "";
                        dane[ilosc_studentow-1].nr_indeksu = 0;
                        dane[ilosc_studentow-1].grupa = 0;
                        dane[ilosc_studentow-1].wydzial = "";

                        ilosc_studentow--;
                }
        }
}

int szukanie_studenta()
{
        int nr_indeksu;
        cout << "\n podaj indeks: ";
        cin >> nr_indeksu;

        for(int i=0; i<=ilosc_studentow-1; ++i)
        {
                if(dane[i].nr_indeksu == nr_indeksu)
                {
                        cout << '\n';
                        cout << dane[i].imie << '\n';
                        cout << dane[i].nazwisko << '\n';
                        cout << dane[i].nr_indeksu << '\n';
                        cout << dane[i].grupa << '\n';
                        cout << dane[i].wydzial << '\n';
                        cout << '\n';
                }
        }
		
}

int wyswietlanie_bazy()
{

        cout << "imie    nazwisko    nr indeksu    grupa    wydzial \n";

        for(int i=0; i<=ilosc_studentow-1; ++i)
        {
                cout << dane[i].imie << "    ";
                cout << dane[i].nazwisko << "    ";
                cout << dane[i].nr_indeksu << "    ";
                cout << dane[i].grupa << "    ";
                cout << dane[i].wydzial << '\n';
                cout << "-------------------------------------" << '\n';
        }
} 

program:

 #include <iostream>
#include "naglowki.h"
#include <string>
 
using namespace std;


int main()
{

        string co_ma_robic_program = "pytac_o_dzialanie";
        string wybor;

        do
        {
                cout << "\nwybierz dzialanie z listy:\n";
                cout << "d - dodanie studenta,\n";
                cout << "u - usuniecie studenta,\n";
                cout << "w - odnalezienie studenta po indeksie,\n";
                cout << "b - wyswitlenie bazy danych.\n";
                cout << "exit - wyswitlenie bazy danych.\n";

                cin >> wybor;

                if(wybor == "d") dodawanie_studentow();
                if(wybor == "u") usuwanie_studenta();
                if(wybor == "w") szukanie_studenta();
                if(wybor == "b") wyswietlanie_bazy();
                if(wybor == "exit") co_ma_robic_program = "zakonczyc dzialanie";

        }while(co_ma_robic_program == "pytac_o_dzialanie");
        
        return 0;
}

naglowki:

 using namespace std;

#ifndef _NAGLOWKI
#define _NAGLOWKI

struct dane_studenta{
        string imie;
        string nazwisko;
        int nr_indeksu;
        int grupa;
        string wydzial;
};

#endif

int dodawanie_studentow();

int usuwanie_studenta();

int szukanie_studenta();

int wyswietlanie_bazy();

Z gory dzieki za pomoc!

3

Próbowałeś przeczytać treść błędu?

0

Jeśli treścią błędu jest to co jest napisane po słowie "error" to tak, ale jestem kompletnym laikiem, dopiero ogarniam podstawy programowania i nic mi to nie mówi, szukałem w internecie dużo ale nic nie moge znaleźć, możliwe że to coś banalnego ale i tak nie moge wpaść na to o co chodzi.

0

No to co mówi ci treść błędu? Przetłumacz mi to na polski, tak, żebym wiedział, że rozumiesz co próbuje ci powiedzieć kompilator. Potem ci powiem, w które miejsce masz spojrzeć w kodzie.

0

musi zwrócić wartość?

0

To teraz spójrz na deklarację twoich funkcji, powiedz mi w jaki sposób funkcja może zwrócić wartość i pokaż mi miejsce, w twoim kodzie, gdzie to robi. Następnie sobie przypomnij co może zwracać funkcja i jak zmienić deklarację, żeby błędu nie było.

0

Brawo. Więc kompilator napisał ci które funkcje muszą coś zwrócić, a nie zwracają. Na przykład :
dodawanie_studentow
zadeklarowałeś ją jako zwracajacą wartość int, a nie ma w niej żadnego return.

0

Czyli wpisac return int wewnatrz tych funkcji?

0
mokasyn15 napisał(a)

Czyli wpisac return int wewnatrz tych funkcji?

Nie. Wpisać return <to co ma zwrocic funkcja bedace wyrazeniem o typie int>.

0

Czyli w moim przypadku:
return dodawanie_studentow;
return usuwanie_studenta;
return szukanie_studenta;
return wyswietlanie_bazy;
tak? naprawde jestem zielony w tym temacie

0

Nie. Te funkcje nie powinny nic zwracać, bo nie miałoby to sensu.

0
mokasyn15 napisał(a)

Czyli w moim przypadku:
return dodawanie_studentow;
return usuwanie_studenta;
return szukanie_studenta;
return wyswietlanie_bazy;
tak? naprawde jestem zielony w tym temacie

wpisz, skompiluj i zobacz.

0

Niech mi nikt później nie zarzuca, że nie próbowałem i nie jestem wyrozumiały nazywając kogoś debilem :D.

0

Wpisalem i juz widze ze zle: cannot convert from 'int (__cdecl *)(void)' to 'int'
Juz powoli sie gubie w tym :D

0

@mokasyn15 więc zamiast zabierać się za taki program otwórz kurs C++ na 1 stronie i zacznij od nauki elementarnych podstaw.

0

Wpisalem return 0; i dziala

0
mokasyn15 napisał(a)

Wpisalem i juz widze ze zle: cannot convert from 'int (__cdecl *)(void)' to 'int'
Juz powoli sie gubie w tym :D
poczytaj sobie o funkcjach w c++ w jakimś kursie lub książce, a za 10 min sam się będziesz śmiał z głupot, które wypisujesz :)

mokasyn15 napisał(a)

Wpisalem return 0; i dziala
wpisz sobie return 1; i powiedz czy działa.

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