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

Problem ze zmiennymi(?)

Ostatnio zmodyfikowano 2008-08-20 15:40
Autor Wiadomość
emu23
Temat założony przez niniejszego użytkownika
Problem ze zmiennymi(?)
» 2008-08-20 13:41:50
Witam, od jakiegoś czasu uczę się cpp, mam już jakie takie podstawy i chciałem napisać program. ma to być "słownik" do pewnej gry. Napisałem:
C/C++
int main()
{
    string tekst;
    string literka;
   
    cout << "Podaj tekst: ";
    cin >> tekst;
    cout << "Wprowadziles: \"" << tekst << "\"" << endl;
   
    for( int i = 0; i < sizeof( tekst ); ++i ) {
       
        literka = tekst[ i ];
        literka = zamiana( literka );
       
        cout << literka;
    }
   
    getch();
   
    return 0;
}


I stworzyłem funkcję zamiana

C/C++
string zamiana( string literka ) {
   
    switch( literka ) {
       
        case "a";
        literka = "a" );
        break;
       
        case "b" '
        literka = "bey" );
        break;
       
    case "c":
        literka = "set" );
        break;
        //(...)
to nie cała funkcja nie wklejałem całej bo jest dość długa ;p

Próbuję kompilować i wyskakuje mnóstwo błędów ( nie wątpię że takowe istnieją więc proszę o poprawienie kodu )
P-1385
DeBugger
» 2008-08-20 13:45:34
Includuj iostream i spróbuj wsadzić tam przestrzenie nazw.
C/C++
include < iostream >
using namespace std;
int main() { /* itd */ }
a zamiast string to:
std::string
P-1386
emu23
Temat założony przez niniejszego użytkownika
» 2008-08-20 14:01:38
Chyba cie do końca nie zrozumiałem ;p co to znaczy wsadzić przestrzenie nazw?
A sam kod teraz wygląda tak:
C/C++
#include <iostream>
#include <conio.h>
using namespace std;

std::string zamiana( string literka ) {
   
    switch( literka ) {
       
        case "a";
        literka = "a" );
        break;
       
        case "b";
        literka = "bey" );
        break;
       
        case "c";
        literka = "set" );
        break;
       
        default;
        literka = literka;
        break;
       
    }
    return literka;
}


int main()
{
    string tekst;
    string literka;
   
    cout << "Podaj tekst: ";
    cin >> tekst;
    cout << "Wprowadziles: \"" << tekst << "\"" << endl;
   
    for( int i = 0; i < sizeof( tekst ); ++i ) {
       
        literka = tekst[ i ];
        literka = zamiana( literka );
       
        cout << literka;
    }
   
    getch();
   
    return 0;
}
Oczywiście wyciąłem z funkcji część słownika ale wygląda tak samo jak to co jest.
P-1387
DejaVu
» 2008-08-20 14:20:21
Funkcja switch... może przyjmować tylko liczby całkowite jako parametr wejściowy. Ty próbujesz wykonywać switch...case po tekście (zmienna string) - co jest niedozwolone i stąd masz błędy.
P-1388
emu23
Temat założony przez niniejszego użytkownika
» 2008-08-20 14:32:29
Zamieniłem na


C/C++
#include <iostream>
#include <conio.h>
using namespace std;

std::string zamiana( string literka ) {
   
    if( literka = "a" );
   
    literka = "a";
   
   
    if( literka = "b" );
   
    literka = "bey" );
   
   
    if( literka = "c" );
   
    literka = "set";
   
    (...)
   
    if( literka = "z" );
   
    literka = "zh";
   
   
   
}
return literka;
}


int main()
{
string tekst;
string literka;

cout << "Podaj tekst: ";
cin >> tekst;
cout << "Wprowadziles: \"" << tekst << "\"" << endl;

for( int i = 0; i < sizeof( tekst ); ++i ) {
   
    literka = tekst[ i ];
    literka = zamiana( literka );
   
    cout << literka;
}

getch();

return 0;
}


ale teraz przy każdym Ifie kompilator (Dev-C++)pokazuje błąd:

In function `std::string zamiana(std::string)': 7  could not convert `(&literka)->std::basic_string<_CharT, _Traits, _Alloc>::operator= [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>](((const char*)"a"))' to `bool'
P-1391
DejaVu
» 2008-08-20 15:24:27
Rozwiązanie:
C/C++
#include <iostream>
#include <conio.h>
using namespace std;

std::string zamiana( string literka )
{
   
    if( literka == "a" ) literka = "a";
   
   
    if( literka == "b" ) literka = "bey";
   
   
    if( literka == "c" ) literka = "set";
   
   
    if( literka == "z" ) literka = "zh";
   
    return literka;
}


int main()
{
    string tekst;
    string literka;
   
    cout << "Podaj tekst: ";
    cin >> tekst;
    cout << "Wprowadziles: \"" << tekst << "\"" << endl;
   
    for( int i = 0; i < sizeof( tekst ); ++i ) {
       
        literka = tekst[ i ];
        literka = zamiana( literka );
       
        cout << literka;
    }
   
    getch();
   
    return 0;
}
P-1392
emu23
Temat założony przez niniejszego użytkownika
» 2008-08-20 15:40:03
Działa, wielkie dzięki.
P-1393
« 1 »
  Strona 1 z 1