Przypisanie do zmiennej jednej z wartości z funkcji

0

Witam, mam mały problem związany z funkcją, chciałbym, aby po wylosowaniu w funkcji liczb, można było je przypisać do zmiennej z poza funkcji, a jako, że jestem początkujący to nie jestem w stanie tego wygłówkować:

void funkcja(){
srand(time(null));
int a = rand()%20;
int b = rand()%40;
cout << a << "  " << b << endl;
}

main(){
int zmienna;
funkcja();
zmienna = a;  // tutaj chce aby wylosowana wartość z funkcji "funkcja" została przypisana do zmiennej
}
1

Niech funkcja zwraca to co wylosuje i wtedy:
zmienna = funkcja();
Tylko się zdecyduj co ma zwrócić bo teraz losujesz dwie wartości.

0

A co jeśli z jednej funkcji chce dwie wartości przypisać? Np do zmienna = a, a do zmienna2 = b?

1

jezeli C++ to uzyj struct/class
jezeli C to juz struct

0
Koral293 napisał(a):

Witam, mam mały problem związany z funkcją, chciałbym, aby po wylosowaniu w funkcji liczb, można było je przypisać do zmiennej z poza funkcji, a jako, że jestem początkujący to nie jestem w stanie tego wygłówkować:

void funkcja(){
srand(time(null));
int a = rand()%20;
int b = rand()%40;
cout << a << "  " << b << endl;
}

main(){
int zmienna;
funkcja();
zmienna = a;  // tutaj chce aby wylosowana wartość z funkcji "funkcja" została przypisana do zmiennej
}

ale w czym problem

0

Jeżeli wiesz ze ta funkcja zwraca dwie wartości to niech zwraca obiekt typu pair

0

A nie da rady wykonać tego bez klas? Dopiero uczę się klas.

1

Huh?

int funkcja() {
  int a = rand();
  
  std::cout << a << " ";

  return a;
}

int main() {
  int zmienna = funkcja();

  std::cout << zmienna << " ";
}
0
Patryk27 napisał(a):

Huh?

int funkcja() {
  int a = rand();
  
  std::cout << a << " ";

  return a;
}

int main() {
  int zmienna = funkcja();

  std::cout << zmienna << " ";
}

Chodzi mi w przypadku więcej niż 1 zmiennej.

0

Zamiast void zrób pair lub tablicę

1
struct RezultatFunkcji {
  int a, b;
};

RezultatFunkcji funkcja() {
  int a = rand();
  int b = rand();

  return RezultatFunkcji { a, b };
}

int main() {
  RezultatFunkcji rezultat = funkcja();

  std::cout << rezultat.a << ", " << rezultat.b;
}
1

Może po prostu wywołać funkcję dla każdej zmiennej?

int f() {
   int val;
   //...
   return val;
}

int main() {
   int a, b;
   a = f();
   b = f();
}
0

A użycie voida i referencji w argumentach? Czy nie bardzo, bo to niezbyt czytelne?

1

Niezbyt czytelne.
Dlaczego nie pasuje Ci struktura?

0

Dziwne, że nikt nie zaproponował referencji albo wskaźnika?

void func(int x, int &out1, int *out2) {
    out1 = x + 3;
    *out2 = x - 3;
}

int x = 5, y, z;

func(x, y, &z);
// tu x = 5, y = 8, z = 2

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