Problem ze zmienną w funkcji oraz poza nią

Odpowiedz Nowy wątek
2019-10-02 18:07
0

Witam, może od razu przejdę do rzeczy, zrobiłem sobie osobną biblioteke do mojego programu gdzie zawieram wszystkie swoje funkcje i mam problem z jedną rzeczą otóż:

int menu(int a){

while((a>5) || (a<1)){
    cout << "________________________________" << endl;
    cout << "||====== MENU APLIKACJI ======||" << endl;
    cout << "________________________________" << endl;
    cout << "||                            ||" << endl;
    cout << "|| 1. Zgadnij liczbe          ||" << endl;
    cout << "|| 2. Gra Matematyczna        ||" << endl;
    cout << "|| 3. Wisielec                ||" << endl;
    cout << "|| 4. Kalkulator              ||" << endl;
    cout << "|| 5. Wyjscie                 ||" << endl;
    cout << "________________________________" << endl;
    cout << "|| Wybierz aplikacje (1-4)    ||" << endl;
    cout << "________________________________" << endl;
    cout << "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" << endl;
    cout << "==========>> ";
    cin >> a;

    system("cls");

    if((a>5) || (a<1))
    {

    cout << "________________________________" << endl;
    cout << "||======== INFORMACJA ========||" << endl;
    cout << "________________________________" << endl;
    cout << "||                            ||" << endl;
    cout << "||    Aplikacja o podanym     ||" << endl;
    cout << "||    numerze nie istnieje.   ||" << endl;
    cout << "||     Prosze podac numer     ||" << endl;
    cout << "||    z zakresu od 1 do 5.    ||" << endl;
    cout << "________________________________" << endl;
    Sleep(3000);
    system("cls");
    }
return a;
    }
}

To jest funkcja, która ma mi zwrócić wartość w zmiennej a do funkcji main, a nie moge jej wyciągnąć, wiem że musze zrobić albo wskaźnik albo referencje do tego ale nie wiem zbytnio jak, prosze o pomoc, dodaje jeszcze całego int maina

#include <iostream>
#include <windows.h>
#include <ctime>
#include "aplikacjegierka.h"
#include <stdio.h>
using namespace std;
int main()
{
int a;
menu(a);

cout <<a;
getchar();
    switch(a)
{
    case 1:
      cout << "Wypisuje program 1"<<endl;
      zgadnijliczbe();
      break;

      case 2:
      cout << "Wypisuje program 2"<<endl;
      break;

      case 3:
      cout << "Wypisuje program 3"<<endl;
      break;

      case 4:
      cout << "Wypisuje program 4"<<endl;
      break;

      case 5:
     system("quit");
      break;

}

    return 0;
}
edytowany 1x, ostatnio: cerrato, 2019-10-02 20:35
Dość nieciekawe połączenie C i C++ - AnyKtokolwiek 2019-10-02 18:50

Pozostało 580 znaków

2019-10-03 15:57
0
_13th_Dragon napisał(a):
lion137 napisał(a):

...
cout << "|| Wybierz aplikacje (1-4) ||" << endl;
...
cout << "|| z zakresu od 1 do 5. ||" << endl;

Genialne!
Czy to jest ważne? Prosze skupić się na moim problemie, a nie na głupim dogryzaniu, dzięki ;)
Co do problemu zaraz wszystko przeanalizuje i edytuje post, pozdrawiam.

edytowany 1x, ostatnio: Wayne, 2019-10-03 15:59

Pozostało 580 znaków

2019-10-03 16:01
0

Problem Masz rozwiązany, chociażby w moim poście powyżej, @tajny_agent oraz @_13th_Dragon też podali odpowiedzi.


Pozostało 580 znaków

2019-10-03 17:04
0
Wayne napisał(a):
_13th_Dragon napisał(a):
lion137 napisał(a):

...
cout << "|| Wybierz aplikacje (1-4) ||" << endl;
...
cout << "|| z zakresu od 1 do 5. ||" << endl;

Genialne!
Czy to jest ważne? Prosze skupić się na moim problemie, a nie na głupim dogryzaniu, dzięki ;)

Tak to bardzo ważne!
Jedna z podstawowych zasad OST (One Source of True) ty masz w małym kawałku kodu cztery razy użytą 5-kę i raz 4-kę (która jest tą 5-1).
Czyli masz 5 źródeł prawdy.
Czyli jak będziesz musiał dołożyć jedną pozycję menu to musisz dokonać zmian w co najmniej pięciu wierszach.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2019-10-04 15:29
0

@_13th_Dragon Próbuje się nauczyć, ale jest to dla mnie lekko skomplikowane czytałem dzisiaj o tym "One source of true", tylko niezbyt wiem jak to się odnosi do mojego kodu, chce się nauczyć jak najwięcej tylko, że dopiero ledwie co ukończyłem uczyć się podstawy podstaw C++ :)

Dobra zastosowałem prostą referencje, do zamknięcia.

edytowany 2x, ostatnio: Wayne, 2019-10-04 15:51
Czego tylko ludzie nie zrobią byle tylko czegoś przypadkiem się nie nauczyć! - _13th_Dragon 2019-10-04 15:46

Pozostało 580 znaków

2019-10-04 15:57
1

One source of true, nie kluczy się z podstawami podstaw, ba jest jedną z nich.
Zrób z tego menu tablicę napisów:

char *menu[]={"pierwzse","drugie","trzecie","czwarte","koniec"};

Do tego stałą określającą jej rozmiar:

size_t /*ewentualnie int*/ menuSize=sizeof(menu)/sizeof(*menu); // Całość dzielimy na rozmiar elementu

Wyświetlasz w pętli z tablicy, chodzi o to żeby w przypadku takiej tablicy w kodzie ta liczba 5 ma się nawet nie pojawić.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2019-10-04 16:39
0
_13th_Dragon napisał(a):

One source of true, nie kluczy się z podstawami podstaw, ba jest jedną z nich.
Zrób z tego menu tablicę napisów:

char *menu[]={"pierwzse","drugie","trzecie","czwarte","koniec"};

Do tego stałą określającą jej rozmiar:

size_t /*ewentualnie int*/ menuSize=sizeof(menu)/sizeof(*menu); // Całość dzielimy na rozmiar elementu

Wyświetlasz w pętli z tablicy, chodzi o to żeby w przypadku takiej tablicy w kodzie ta liczba 5 ma się nawet nie pojawić.

No dobrze pokombinuje z tym co mi podesłałeś, temat można zamknąć bo to podchodzi pod offtop(?), ewentualnie jeżeli będzie taka możliwość to podpytam na priv.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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