Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z funkcjami-nie przekazują dalej zmiennych

Ostatnio zmodyfikowano 2017-03-29 16:20
Autor Wiadomość
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.
C/C++
#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;
}
P-159282
carlosmay
» 2017-03-23 18:22:58
C/C++
void wpisywanie( string & tekst )
{
    cout << "Tu wpisz swoj tekst: ";
    getline( cin, tekst );
}
Wystarczy tak, lub
C/C++
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.
C/C++
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.
P-159289
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.
P-159484
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>.
P-159489
JanRos
Temat założony przez niniejszego użytkownika
» 2017-03-29 16:20:23
Dobrze, będę pamiętał, dziękuje za pouczenie.
P-159574
« 1 »
  Strona 1 z 1