Switch w Funkcji

0

Witam, jak w temacie problematyczne jest umieszczenie switcha w funkcji, i pozniej wywołanie go w kodzie.

Chciałbym umieścić w funkcji ( Void ? ) Switch z parametrami wywołania, i poźniej wywołać je w kodzie.

Mógłby ktoś się poświęcić i nabazgrolić te kilka linijek z jakimś przykładem?

Google/forum nie dało mi satysfakcjonującej odpowiedz.

2

O coś takiego chodzi?

void foo(int n){
	switch(n){
	case 1: cout << "foo(1)" << endl; break;
	case 2: cout << "foo(2)" << endl; break;
	case 3: cout << "foo(3)" << endl; break;
	default: cout << "foo(n), n = " << n << endl; break;
	}
}

http://melpon.org/wandbox/permlink/F7B7H6J49MkPnncx

0

Zamysł jest taki

http://wklej.org/id/2033583/

Wstawić potrafie ( chyba), tylko poźniej chcę wcyztać 1 albo 2 przy wywołaniu tej funkcji ze switchem

4
int Menu_Switch(int liczba)
  {
   switch(liczba)
     {
      case 1: return 5;
      case 2: return 10;
     }
  }

int main()
  {
   int liczba;
   cin>>liczba;
   Menu_Switch(liczba);
   return 0;
  }
  1. albo tak: http://4programmers.net/Forum/1100492
4

Używaj tagów <co​de=cpp>.

#include <iostream>
using namespace std;

void Menu_Switch()
{
    switch(liczba)
    {
    case 1:
        return 5;
        break;
    case 2:
        return 10;
        break;
    }
}

int main()
{
    int liczba;
    Menu_Switch();          
    cin >> liczba;

    return 0;
}

Żebyś mógł zwrócić int z funkcji nie może ona być zadeklarowana jako zwracająca void. Funkcja Menu_Switch, żeby mogła operować na liczba, potrzebuje albo przekazania tej wartości w parametrze, albo aby była to zmienna globalna (to tragiczne rozwiązanie). Ponadto zgodnie z zamysłem wykonujesz funkcję zanim wczytasz wartość liczby - to też jest źle.

0

Niestety nie zwraca mi wartości ( wczytuje tylko na ekranie "liczba" )

 
#include <iostream>
using namespace std;

int Menu_Switch(int liczba)
  {
   switch(liczba)
     {
      case 1: return 5;
                break;
      case 2: return 10;
                break;
     }
  }

int main()
  {
   int liczba;
   cin >> liczba;
   Menu_Switch(liczba);

   cin.get();
   return 0;
  }
0

A gdzie wypisujesz tę wartość? :​)

0

Ten sposób zapisu jest "profesjonalny" ?

#include <iostream>
using namespace std;

int Menu_Switch(int liczba)
  {
   switch(liczba)
     {
      case 1:
            cout << "5";
            break;
      case 2:
            cout << "10";
            break;
     }
  }

int main()
  {
   int liczba;
   cin >> liczba;
   Menu_Switch(liczba);

   cin.get();
   return 0;
  }
```cpp

1

Zdefiniuj profesionalny.

Ta funkcja zwraca Ci wartość tylko Ty tego nie widzisz bo nigdzie tego nie wypisujesz. O patrz

```cpp #include <iostream> using namespace std;

int Menu_Switch(int liczba)
{
switch(liczba)
{
case 1:
cout << "5";
break;
case 2:
cout << "10";
break;
}
}

int main()
{
int liczba;
cin >> liczba;
cout << Menu_Switch(liczba);

cin.get();
return 0;
}

</del>

```cpp
#include <iostream>
using namespace std;
 
int Menu_Switch(int liczba)
  {
   switch(liczba)
     {
      case 1:
            return 5;
      case 2:
            return 10;
     }
  }
 
int main()
  {
   int liczba;
   cin >> liczba;
   cout << Menu_Switch(liczba);
 
   cin.get();
   return 0;
  }
 
2

Po usunięciu instrukcji return z funkcji która powinna zwrócić int masz UB.

cout << Menu_Switch(liczba) << endl;

0

kq trafiłeś w 10 w mój problem, albo czegoś nie doczytałem albo jeszcze nie doszedłem "do tego działu".
Nie wiedziałem w jaki sposób wyrzucić na ekran wartość wybranego Case.

Dziękuje za pomoc :)

0

A może potrzebujesz czegoś prostszego:

#include <iostream>
using namespace std;
 
int main()
  {
   int Menu_Switch[]={0,5,10};
   int liczba;
   cin>>liczba;
   cout<<Menu_Switch[liczba]<<endl;
   return 0;
  }

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