Wątek przeniesiony 2018-05-28 15:01 z C/C++ przez Patryk27.

Odwrotnosc wyrazu – wytłumaczenie działania kodu

0

Cześć jestem mocno początkującym w C++ I mam pytanie. Mógłby mi ktoś opisać jak działa ten program? Ma jaki kolwiek wyraz odwrócić np DWA i ma wyjść AWD

#include<bits/stdc++.h>
using namespace std;
void rek()
{
    char a;
    if(cin>>a)
    {
    rek();
    cout << a;
    }
}
int main(){

    rek();

return 0;
}
0

Trudno opisać jak działa ten program gdy on za bardzo nie działa.
Bzdury!

0

Nie no jednak mi działa normalnie
https://ideone.com/QxJUEy

0

Program używa rekurencji, jak nie wiesz co to koniecznie Google. Jego działanie dla "123" można rozpisać tak:

  1. Odpal rek() po raz pierwszy.
  2. Pobierz pierwszy znak z stdin, czyli "1", do lokalnej zmiennej A w stdin zostało "23"
  3. Odpal rek() po raz drugi.
  4. Pobierz pierwszy znak z stdin, czyli "2", do lokalnej zmiennej A, w stdin zostalo "3"
  5. Odpal rek() po raz trzeci.
  6. Pobierz pierwszy znak z stdin, czyli "3", do lokalnej zmiennej A, w stdin nie zostalo nic.
  7. Odpal rek() po raz czwarty.
  8. Nie ma nic w stdin, czwarte wywołanie rek() zostaje zakończone nie robiąc nic.
  9. Program wraca do trzeciego wywołania rek(), robi cout<<a, czyli wypisuje "3".
  10. Program wraca do drugiego wywowała rek(), robi cout<<a, czyli wypisuje "2".
  11. Program wraca do pierwszego wywołania rek(), robi cout<<a, czyli wypisuje "1".
  12. Program wraca do main(), i zwraca 0, koniec działania programu.
0

Odpal ten program pod debuggerem i linijka po linijce analizuj jego działanie, jednocześnie podglądając zawartość zmiennej a. W ten sposób zrozumiesz jak działa.

0

Dlaczego się cofamy?

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