Problem z funkcjami-nie przekazują dalej zmiennych
Ostatnio zmodyfikowano 2017-03-29 16:20
JanRos Temat założony przez niniejszego użytkownika |
Problem z funkcjami-nie przekazują dalej zmiennych » 2017-03-23 17:23:05 Witam, napisałem prosty program który działa, chciałem go podzielić na funkcje (bo nauczyciel informatyki tego wymaga) ale one tak jakby nie współpracują(on sam tego nie ogarnia). Oto kod, byłbym wdzieczny za napisanie jak mam zrobić to aby zmienna była zmieniona przez funkcje. #include <iostream> #include <cstring> using namespace std; string wpisywanie( string tekst ) { cout << "Tu wpisz swoj tekst: "; getline( cin, tekst ); return tekst; } string szyfrowanie( string tekst ) { char tab[ 50 ] = { 'g', 'a', 'd', 'e', 'r', 'y', 'p', 'o', 'l', 'u', 'k', 'i' }; for( int i = 0; i < tekst.length(); i++ ) { if( tekst[ i ] == tab[ 0 ] ) tekst[ i ] = tab[ 1 ]; else if( tekst[ i ] == tab[ 1 ] ) tekst[ i ] = tab[ 0 ]; else if( tekst[ i ] == tab[ 2 ] ) tekst[ i ] = tab[ 3 ]; else if( tekst[ i ] == tab[ 3 ] ) tekst[ i ] = tab[ 2 ]; else if( tekst[ i ] == tab[ 4 ] ) tekst[ i ] = tab[ 5 ]; else if( tekst[ i ] == tab[ 5 ] ) tekst[ i ] = tab[ 4 ]; else if( tekst[ i ] == tab[ 6 ] ) tekst[ i ] = tab[ 7 ]; else if( tekst[ i ] == tab[ 7 ] ) tekst[ i ] = tab[ 6 ]; else if( tekst[ i ] == tab[ 8 ] ) tekst[ i ] = tab[ 9 ]; else if( tekst[ i ] == tab[ 9 ] ) tekst[ i ] = tab[ 8 ]; else if( tekst[ i ] == tab[ 10 ] ) tekst[ i ] = tab[ 11 ]; else if( tekst[ i ] == tab[ 11 ] ) tekst[ i ] = tab[ 10 ]; } return tekst; } void wypisywanie( string tekst ) { cout << tekst << endl; } main() { string tekst; wpisywanie( tekst ); szyfrowanie( tekst ); wypisywanie( tekst ); return 0; }
|
|
carlosmay |
» 2017-03-23 18:22:58 void wpisywanie( string & tekst ) { cout << "Tu wpisz swoj tekst: "; getline( cin, tekst ); } Wystarczy tak, lub string wpisywanie() { string tekst; cout << "Tu wpisz swoj tekst: "; getline( cin, tekst ); return tekst; } natomiast brak efektów działania programu spowodowany jest brakiem przypisania zwracanych wyników do miejsca wywołania. wpisywanie( tekst ); szyfrowanie( tekst ); |
Tutaj przekazujesz tekst do funkcji przez wartość (kopiowanie), więc oryginalny obiekt nie jest modyfikowany, a zwracana wartość (ta zmodyfikowana) z funkcji idzie w niebyt. edit: #include <cstring> - w jakim celu jest dodany ten nagłówek? #include <string> - a tego brakuje w tym kodzie. |
|
JanRos Temat założony przez niniejszego użytkownika |
» 2017-03-27 20:19:13 A to nie jest ta sama biblioteka tylko jedna starsza druga nowsza? Mi działa na tej string. Dziękuje za odpowiedź i pozdrawiam. |
|
carlosmay |
» 2017-03-27 20:51:57 To są dwa różne nagłówki. Możesz sprawdzić różnice w naszej dokumentacji, lub np. cplusplus. To, że działa ci std::string ze strumieniami wynika z tego, że iostream jest tak napisany. Nie wszędzie to działa i należy dodawać <string>. |
|
JanRos Temat założony przez niniejszego użytkownika |
» 2017-03-29 16:20:23 Dobrze, będę pamiętał, dziękuje za pouczenie. |
|
« 1 » |