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

Funkcja zmieniająca wartości zmiennych z konsoli

0 głosów
998 wizyt
pytanie zadane 23 stycznia 2019 w C i C++ przez thekibi27 Bywalec (2,110 p.)

Cześć,

chciałbym napisać funkcję, która zmieni mi wartości kilku (w tym przypadku dwóch) zmiennych, o które to wartości spyta użytkownika. Zarys takiego programu:

 

void zmienwartosci(int a, int b)
{
   scanf("%d", &a);
   scanf("%d",&b);
}

main()
{
   int a;
   int b;

   zmienwartosci(a,b);

}

Niestety w takiej konwencji (kod jest poglądowy, nie gotowy do kompilacji) program w dalszej fazie działania nie korzysta z nowych wartości zmiennych. Teoretycznie nie zostały one zwrócone, jednak w tym wypadku trzeba by zwrócić dwie wartości.

Sens takiej funkcji jest taki, że podczas działania mojego programu wielokrotnie będę pytał użytkownika o "aktualną" wartość a i b, po wykonaniu się jakiegoś innego kodu.

2 odpowiedzi

0 głosów
odpowiedź 23 stycznia 2019 przez manjaro Nałogowiec (37,390 p.)
wybrane 24 stycznia 2019 przez thekibi27
 
Najlepsza

W funkcji przy zmiennych musisz dać ampersandy

#include <iostream>
using namespace std;

void zmienwartosci(int &a, int &b){
   scanf("%d",&a);
   scanf("%d",&b);
}

int main(){
   int a;
   int b;

   zmienwartosci(a,b);
   cout << a << " " << b<< endl;

   return 0;
}

 

komentarz 23 stycznia 2019 przez RafalS VIP (122,820 p.)
Kod C++, a wszystko sugeruje, że autor pyta o język C (tag i scanf)
komentarz 23 stycznia 2019 przez manjaro Nałogowiec (37,390 p.)
1. To jest dział C/C++ więc napisałem w C++ bo autor nie określił.

2. scanf w c++ używa się również

3. Autor jest na tyle inteligentny że przerobi sobie co trzeba jeśli isttonie chodzi mu o C

4. Czepiasz się niepotrzebnie o głupotę?
1
komentarz 23 stycznia 2019 przez RafalS VIP (122,820 p.)
Czepiam się właśnie dlatego, że nie przerobi tak łatwo, bo w C nie da się przekazać argumentów przez referencje :P

Można wskaźnikami, ale gdyby autor o tym wiedział to by nie pytał :P
komentarz 23 stycznia 2019 przez manjaro Nałogowiec (37,390 p.)
A to wybacz, zwracam honor. W takim razie ma to duże znaczenie.

Tylko wypadałoby żeby jednak autor się określił teraz ;)
komentarz 24 stycznia 2019 przez thekibi27 Bywalec (2,110 p.)
Chodziło mi o język C, stąd właście zapis scanf/printf a nie cin/cout
komentarz 24 stycznia 2019 przez manjaro Nałogowiec (37,390 p.)

To masz na wskaźnikach 


void zmienwartosci(int *a, int *b){
   scanf("%d",a);
   scanf("%d",b);
}

int main(){
   int a;
   int b;
   zmienwartosci(&a,&b);

}

 

komentarz 24 stycznia 2019 przez thekibi27 Bywalec (2,110 p.)
Dzięki, o to mi chodziło
komentarz 24 stycznia 2019 przez manjaro Nałogowiec (37,390 p.)
A tak z ciekawości dlaczego akurat C?
komentarz 26 stycznia 2019 przez thekibi27 Bywalec (2,110 p.)
Studia :)
–1 głos
odpowiedź 23 stycznia 2019 przez Snejki Stary wyjadacz (14,520 p.)
Użyj wskaźników
komentarz 23 stycznia 2019 przez thekibi27 Bywalec (2,110 p.)
W jaki sposób?

Podobne pytania

0 głosów
1 odpowiedź 384 wizyt
pytanie zadane 26 marca 2017 w JavaScript przez Mimoid Użytkownik (760 p.)
0 głosów
1 odpowiedź 988 wizyt
pytanie zadane 28 września 2015 w SQL, bazy danych przez MrMock Bywalec (2,890 p.)
0 głosów
1 odpowiedź 247 wizyt

93,427 zapytań

142,421 odpowiedzi

322,649 komentarzy

62,787 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...