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-02 18:08
kq
1

Przekazywanie parametru przez wartość i referencję

Poczytaj o klasach.


Pozostało 580 znaków

2019-10-02 19:01
0

Nie powinno być tak?

int a = menu(0);

Pozostało 580 znaków

2019-10-02 20:02
0
lookacode1 napisał(a):

Nie powinno być tak?

int a = menu(0);

Z jakiej racji?

edytowany 1x, ostatnio: hauleth, 2019-10-02 22:36

Pozostało 580 znaków

2019-10-02 20:20
1

Ponieważ funkcja menu zwraca a jako wybor czegos z menu u Ciebie.

Pozostało 580 znaków

2019-10-02 20:29
0
lookacode1 napisał(a):

Ponieważ funkcja menu zwraca a jako wybor czegos z menu u Ciebie.

Nadal wywala ten sam błąd, czyli w konsoli pojawia sie jakas losowa liczba, gdyz funkcja menu nie przypisuje wartosci a ;(

edytowany 1x, ostatnio: hauleth, 2019-10-02 22:36

Pozostało 580 znaków

2019-10-02 22:09
1

wywołujesz funkcję z niezainicjalizowanym argumentem. Wprowadź dane do a przed wywołaniem funkcji.


"If there were an award for the most confusing new word in C++11, constexpr would
probably win it"
edytowany 1x, ostatnio: Sunnydev, 2019-10-02 22:10

Pozostało 580 znaków

2019-10-02 22:11
1

Boisz się nieskończonej pętli?:)

int menu(){
    int a;
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;

while(1){
    cout << "==========>> ";
    cin >> a;

    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;
    continue;

    }
break;
    }
   return a;
}

Pozostało 580 znaków

2019-10-03 01:28
2
lion137 napisał(a):

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

Genialne!


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
Ha, ha, ha, rzcezywiście, mistrzostwo:) - lion137 2019-10-03 13:09

Pozostało 580 znaków

2019-10-03 13:06
1
lion137 napisał(a):

Boisz się nieskończonej pętli?:)

Ale po co zaciemniać kod? Warunek zakończenia pętli jest znany.

bool process_option(int opt)
{
  if (opt == 5)
    return false;
  }
  switch (opt) {
    case 1: /*... */ break;
    case 2: /* ... */ break;
    case 3: /* ... */ break;
    case 4: /* ... */ break;
    default: show_invalid_option_screen(); break;
  }
  return true;
}

int main()
{
  bool show_menu{true};
  while (show_menu) {
    system("cls");
    auto option = menu();
    show_menu = process_option(option);
  }
  return 0;
}

Wole wizerunek z nożem w zębach, przejść po trupie
Niż zgrywać ćwierćinteligenta z piórkiem w d.

Pozostało 580 znaków

2019-10-03 15:05
1

http://forum.4programmers.net/1100492
Pod C++ lepiej przerobić na klasy i konstruktory.


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

Odpowiedz
Liczba odpowiedzi na stronę

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