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

invalid operands of types 'int' and 'char' to binary 'operator-'

Ostatnio zmodyfikowano 2014-10-04 19:01
Autor Wiadomość
olokotampus
Temat założony przez niniejszego użytkownika
invalid operands of types 'int' and 'char' to binary 'operator-'
» 2014-10-03 10:54:00
Problem prostacki: nie kompiluje się i nie wiem czemu. Na stack overflow szukałem podobnych problemów, ale bez rezultatu. Rzutowanie z char na int / z int na char też nie powoduje rozwiązania problemu.

Piszę funkcję do odwzorowania mnożenia pisemnego, w linijce:
przesuniecie =( liczba[ i ] * liczba[ j ] - macierzLinijkowa[ iAnty ] ) / 10;

wywala taki błąd:

invalid operands of types 'int' and 'char' to binary 'operator-'
Oto kod funkcji mn. pis.:
C/C++
//implementacja mnożenia (dalej mn.) pisemnego (dowolna długość mn. liczb, trololo~)
char * kwadratLiczby( char * liczba, int liczbaCyfr )
{
    //*2 to w rzeczywistości suma liczby cyfr obu mn. liczb (są takie same...)
    char * wynik = new char[ liczbaCyfr * 2 ];
    //zawsze zeruj tablice dynamiczne (losowe śmieci z RAMu... >__>")
    for( int i = 0; i < liczbaCyfr; i++ )
         wynik[ i ] = 0;
    /*
        macierzLinijkowa:
        To są te linijki w mnożeniu pisemnym, które na koniec dodaje się do siebie
        w pionie. Linijek będzie dokładnie tyle, co cyfr mniejszej z mn. liczb
        (tu łatwiej, bo liczby są takie same).
        Długość max każdej linijki to liczba cyfr dłuższej z liczb + 1.
        Długość max tablicy wynikowej to suma liczby cyfr obu mn. liczb.
        */
    char ** macierzLinijkowa = new char *[ liczbaCyfr ];
    for( int i = 0; i < liczbaCyfr; i++ )
         macierzLinijkowa[ i ] = new char[ liczbaCyfr + 1 ];
    //jak pomnożysz 4*3 to masz 12, przesuniecie to ta 1
    int przesuniecie = 0;
    //iAnty to odwrotny licznik niż i (liczy od 0)
    int iAnty;
    //i liczy od końca (i to licznik wierszy macierzy)
    for( int i = liczbaCyfr - 1; i >= 0; i-- )
    {
        iAnty = 0;
        //j liczy od końca (j to licznik kolumn macierzy)
        for( int j = liczbaCyfr; j >= 0; j-- )
        {
            macierzLinijkowa[ iAnty ][ j ] =( liczba[ i ] * liczba[ j ] ) % 10 + przesuniecie;
            przesuniecie =( liczba[ i ] * liczba[ j ] - macierzLinijkowa[ iAnty ] ) / 10;
            iAnty++;
        }
    }
    return wynik;
}
P-117864
Monika90
» 2014-10-03 17:08:24
invalid operands of types 'int' and 'char' to binary 'operator-'
źle przepisałeś komunikat o błędzie
P-117872
olokotampus
Temat założony przez niniejszego użytkownika
poprawka
» 2014-10-04 11:40:57
Dzięki, faktycznie masz rację. ^^" Powinno być:

invalid operands of types 'int' and 'char*' to binary 'operator-'
(gwiazdka za char)
P-117912
pekfos
» 2014-10-04 17:07:09
I z czym ty właściwie masz problem..? Nie rozumiesz komunikatu?
P-117927
olokotampus
Temat założony przez niniejszego użytkownika
» 2014-10-04 19:01:24
Niby rozumiem, co jest w nim napisane, ale jednak... nie rozumiem.
P-117931
« 1 »
  Strona 1 z 1