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

Błąd przy kompilowaniu przy tablicy zadeklarowanej jako typ string

Ostatnio zmodyfikowano 2014-10-03 21:38
Autor Wiadomość
treekt
Temat założony przez niniejszego użytkownika
Błąd przy kompilowaniu przy tablicy zadeklarowanej jako typ string
» 2014-10-03 19:15:31
Napisałem program który będzie losował wcześniej podane słówka i będzie trzeba podać do nich tłumaczenia które wcześniej sie zadeklarowało. Po poprawnym wpisaniu tłumaczenia wyświetla sie komunikat że odpowiedz jest poprawna, w przeciwnym wypadku że odpowiedzieliśmy błędnie.
Na początku deklaruje ile będzie słówek.
Potem podaje kolejko słówko->tłumaczenie i tak tyle razy ile miało być słówek.
Wszystko zapisuje sie do tablic.
Następnie losowane są słówka do których mamy wpisac odpowiedź.
Słówka są losowane bez możliwości powtórzenia.

Błąd pojawia się w 61 linijce "if(c = Tlumaczenie[wylosowane[wylosowanych]])" zaraz po kwadratowych nawiasach.
Problem chyba wisi tutaj -> "string Slowko/, Tlumaczenie/, c;"
Bo gdy zmieniłem typ na char wszystko działało tak jak chciałem natomiast char pozwala wypisywać tylko znaki a potrzebuje słów.

Oto cały kod, bardzo proszę o wskazanie i poprawienie błędu żebym mógł to przeanalizować.

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <string>

using namespace std;

bool czyBylaWylosowana( int iLiczba, int tab[], int ile )
{
    if( ile <= 0 )
         return false;
   
    int i = 0;
    do
    {
        if( tab[ i ] == iLiczba )
             return true;
       
        i++;
    } while( i < ile );
   
    return false;
}

int main() {
int a,b=-1,x;
cout<<"Wpisz: ";
cin>>a;
string Slowko[a], Tlumaczenie[a], c;

while(b < a-1){ //Podanie słówek i tłumaczeń
b++;
cout<<"Podaj slowko: ";
cin>>Slowko[b];

cout<<"Podaj tlumaczenie: ";
cin>>Tlumaczenie[b];
}


    srand( time( 0 ) );
    int wylosowane[ a ];
    int wylosowanych = 0;
    do
    {
        int liczba = ( rand() % a ) + 0;
        if( czyBylaWylosowana( liczba, wylosowane, wylosowanych ) == false )
        {
            wylosowane[ wylosowanych ] = liczba;
            wylosowanych++;
        }
    } while( wylosowanych < a );
   
    wylosowanych = 0;
   
   
    do{
        cout<< Slowko[wylosowane[wylosowanych]] <<" - ";
        cin>>c;
        if(c = Tlumaczenie[wylosowane[wylosowanych]])
        {
        cout<<"Odpowiedziales poprawnie!"<<endl;
        }
        else
        {
        cout<<"Odpowiedziales blednie!"<<endl;
        }
        wylosowanych++;
} while( wylosowanych < a );
   
    return 0;
}
P-117885
stryku
» 2014-10-03 19:39:16
zgaduje że miało być
c == Tlumaczenie[ wylosowane[ wylosowanych ] ]
 ( == nie =)
mogłeś też wkleić treść błędu

EDIT
jest też pare innych błędów jak np
C/C++
cout << "Wpisz: ";
cin >> a;
string Slowko[ a ], Tlumaczenie[ a ], c;
nie tak się deklaruje tablice. Zrób to z wykorzystaniem wektora(std::vector).

Najlepiej będzie jak wkleisz cały log kompilacji. Przynajmniej błędy, które wskazuje kompilator
P-117887
treekt
Temat założony przez niniejszego użytkownika
» 2014-10-03 21:18:25
Oh, dzięki nie wiedziałem o tym ==.
To co w takim razie oznacza = a ==
PS: program juz dziala
P-117894
stryku
» 2014-10-03 21:38:11
Jak to co oznacza? Operator przypisania. Przypisuje wartość do zmiennej. Jak do char próbujesz przypisać stringa, a nie przeciążyłeś operatora to się kompilator zezłości.
Nie wiem za bardzo co miałeś na myśli mówiąc co oznacza. Przecież już tego używałeś, nawet w tym programie :p
P-117898
« 1 »
  Strona 1 z 1