• 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

VPS Starter Arubacloud
0 głosów
531 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ź 222 wizyt
pytanie zadane 26 marca 2017 w JavaScript przez Mimoid Użytkownik (760 p.)
0 głosów
1 odpowiedź 720 wizyt
pytanie zadane 28 września 2015 w SQL, bazy danych przez MrMock Bywalec (2,890 p.)
0 głosów
1 odpowiedź 173 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...