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

Czy mógłby mi ktoś pomóc z wyjaśnieniem funcji Void i wsyztkich funcji w C++, będę wdzięczny za odpowiedź

Object Storage Arubacloud
+1 głos
312 wizyt
pytanie zadane 1 października 2021 w C i C++ przez IgorS1 Początkujący (260 p.)

Witam wszystkich

Czy mógłby ktoś mi pomóc w wyjaśnieniu funkcji void na platformie discout, będę bardzi wdzięczny za pomoc. Uczę się na studia informatyczne już teraz i nie rozumiem funkcji void, kompletnie, pomimo że oglądałem odcinki i Pana Mirosława Z. i innych zagranicznych YouTube rów, chcę zrobić coś własnego a nie wiecie kopiować z internetu. I tutaj pojawia się mój problem, ponieważ tego nie potrafię napisać poprawnie, rozumiem czym jest funcja void, ale co z tego skoro nie mogę napisać ani jednego nawet tego na zdjęciu najprostszego programu który miał być 1 funkcją od prototypu kalkulatora na funkcjach. Będę wdzięczny za odpowiedź. :( :)

pozdrawiam

Igor Strzeżysz
 

#include <iostream>

using namespace std;
void dodawaniefunkcja(int wyborpier, int wybordrug);
int wyborpier, wybordrug, wyborOpcjiUzytkownika;
int main()
{
    cout << "Witaj oto jest kalkulator, podaj liczby? " << endl;

    cout <<"1 liczba ktora chcesz wybrac zebym to obliczyl"<< endl;
    cin >> wyborpier;

    cout <<"2 liczba ktora chcesz wybrac zebym to obliczyl "<< endl;
    cin >> wybordrug;

    cout << "1.Dodawanie" << endl;
    cout << "2.Odejmowanie" << endl;
        cout << "3.Mnozenie" << endl;
        cin >> wyborOpcjiUzytkownika;
if (wyborOpcjiUzytkownika==1)
{

    cout << "Wtoj wynik to " << dodawaniefunkcja << endl;
}
    return 0;
}
void dodawaniefunkcja (int wyborpier, int wybordrug)
{
     wyborpierwszyUzytkownika + wybordrugiUzytkownika;
}

 

komentarz 1 października 2021 przez tkz Nałogowiec (42,000 p.)

W teorii masz dwie możliwości. Albo zwrócisz wynik, albo prześlesz przez referencje(co moim zdaniem jest kompletnie bez sensu w tym przypadku). void nijak nie pasuje do tego, co chcesz zrobić.

int add(int a, int b)
{
  return a+b;
}

 

2 odpowiedzi

+1 głos
odpowiedź 1 października 2021 przez wizarddos Nałogowiec (25,930 p.)

czym jest void?

void to po prostu typ niezwracający. Czyli jeżeli jest sobie jakaś funkcja (np nazwijmy ją funkcjaX) i typ zwracany tej funkcji (czyli to co jest przed nazwą) to void znaczy że takowa nie zwraca nic.

czyli prosty przykład:

// Example program
#include <iostream>
#include <string>

using namespace std;

void funkcjaX(){
    cout << "To wywołano z FunkcjiX" << endl;    
}

int main()
{
    cout << "To wywołano z maina" << endl;
    funkcjaX();
}

z kolei przy czymś takim powinien być błąd

// Example program
#include <iostream>
#include <string>

using namespace std;

void funkcjaX(){
    cout << "To wywołano z FunkcjiX" << endl;    
    return 15;
}

int main()
{
    cout << "To wywołano z maina" << endl;
    int sth = funkcjaX();
    cout << sth;
    
}

poza tym twój kod nie jest poprawny i nie kompiluje się, więc musisz go trochę poprawić

0 głosów
odpowiedź 2 października 2021 przez VBService Ekspert (253,120 p.)
edycja 2 października 2021 przez VBService

Funkcja typu void

 

Funkcja typu void ... nie zwraca żadnych danych, które można byłoby poddać dalszej obróbce. Funkcja tego typu może wykonywać pewne czynności, ale nie przekazuje informacji zwrotnej. Słowo kluczowe void oznacza "pusty", informuje, że nic nie będzie zwracane.

 

Mam nadzieję, że ten prosty przykład ( on-line ), będzie dla Ciebie odpowiedzią

#include <iostream>
#include <string>

using namespace std;

void menu_void()
{
    std::cout << "Menu void\n---------\n"
              << "1. Dodawanie\n"
              << "2. Odejmowanie\n"
              << "3. Mnozenie\n";
}
string menu_no_void()
{
    string menu;
    menu = "Menu no void\n------------\n1. Dodawanie\n2. Odejmowanie\n3. Mnozenie\n";
              
    return menu;
}

int main()
{
    menu_void();
    
    cout << "\n\n";
    
    cout << menu_no_void();

    return 0;
}

 

Wracając do Twojego kodu, funkcja dodawaniefunkcja, Moim zdaniem nie powinna być typu void, bo wykonuje obliczenia i dobrze by było zwrócić do programu głównego wynik tych obliczeń, czyli

void dodawaniefunkcja (int wyborpier, int wybordrug)
{
     wyborpierwszyUzytkownika + wybordrugiUzytkownika;
}

na

int dodawaniefunkcja (int wyborpier, int wybordrug)
{
     return wyborpier + wybordrug;
}

 

druga sprawa domyślam się, że w menu w Twoim kalkulatorze może pojawić się więcej opcji niż tylko dodawanie, odejmowanie i mnożenie, w tym przypadku zapisywanie tego za pomocą if-ów może stać się nieco kłopotliwe i kod może stracić na "czytelności", może rozważ użycie switch-a.

 

Przykład zastosowania switch-a [ on-line ]

#include <iostream>
 
using namespace std;

void menu();
int dodawaniefunkcja (int liczba_1, int liczba_2);
int odejmowaniefunkcja (int liczba_1, int liczba_2);
int mnozeniefunkcja(int liczba_1, int liczba_2);

int main()
{
    int uzytkownik_liczba_1 = 0, uzytkownik_liczba_2 = 0, uzytkownik_wybor_menu = 0;
    
    
    // dla celów demonstracyjnych, uzytkownik podał takie liczby
    uzytkownik_liczba_1 = 5;
    uzytkownik_liczba_2 = 2;
    cout << "Uzytkownik podał:\n"
         << "Pierwsza liczba: " << uzytkownik_liczba_1 << "\n" 
         << "   Druga liczba: " << uzytkownik_liczba_2 << "\n\n";
         
    
    menu();
    cin >> uzytkownik_wybor_menu;
    
    switch(uzytkownik_wybor_menu)
    {
        case 1: cout << uzytkownik_liczba_1 << " + " << uzytkownik_liczba_2 << " = "
                     << dodawaniefunkcja(uzytkownik_liczba_1, uzytkownik_liczba_2);
        break;
        
        case 2: cout << uzytkownik_liczba_1 << " - " << uzytkownik_liczba_2 << " = "
                     << odejmowaniefunkcja(uzytkownik_liczba_1, uzytkownik_liczba_2);
        break;
        
        case 3: cout << uzytkownik_liczba_1 << " * " << uzytkownik_liczba_2 << " = "
                     << mnozeniefunkcja(uzytkownik_liczba_1, uzytkownik_liczba_2);
        break;
        
        /*
        case 4: // itd.  ;-)
        break;
        */
        
        case 0: cout << "Dziekuje za uzycie programu";
        break;        
   
        default: cout << "Nie ma takiego dzialania w menu!";
        break;
    }

    return 0;
}

void menu()
{
    cout << "Menu\n----\n"
         << "1. Dodawanie\n"
         << "2. Odejmowanie\n"
         << "3. Mnozenie\n\n"
         << "0. Koniec\n\n"
         << "Wybor: ";
}

int dodawaniefunkcja (int liczba_1, int liczba_2)
{
    return liczba_1 + liczba_2;
}
int odejmowaniefunkcja (int liczba_1, int liczba_2)
{
    return liczba_1 - liczba_2;
}
int mnozeniefunkcja(int liczba_1, int liczba_2)
{
    return liczba_1 * liczba_2;
}

 

Podobne pytania

0 głosów
2 odpowiedzi 352 wizyt
pytanie zadane 9 lipca 2018 w C# przez matmati2003 Użytkownik (620 p.)
0 głosów
1 odpowiedź 273 wizyt
0 głosów
1 odpowiedź 251 wizyt

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,941 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...