[C++][Algorytmy] Cechy podzielności przez 6,8 i 343

calmosc
Użytkownik
Użytkownik
Posty: 41
Rejestracja: 4 cze 2013, o 15:28
Płeć: Mężczyzna
Lokalizacja: Toruń
Podziękował: 8 razy

[C++][Algorytmy] Cechy podzielności przez 6,8 i 343

Post autor: calmosc »

Jest takie zadanko:
Tak więc dla 6 sprawdzam czy suma cyfr jest podzielna przez 6, dla 8 czy liczba jest podzielna przez 11, a dla 343 czy jest podzielna przez 1000.
Tutaj kod:

Kod: Zaznacz cały

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int t;
    cin>>t;
    bool wynik6[t],wynik8[t],wynik343[t],czy_parzysta;
string liczba;
    long long int suma,roznica,d;
    for (int c=0;c<t;c++){
            
            suma=0;roznica=0;
        cin>>liczba;
        for (d=0;d<liczba.length();d++){
           suma+=liczba[d]-48;
           if(liczba.length()%2==0)
            czy_parzysta=1;
            else czy_parzysta=0;
           if(czy_parzysta==1){
            if(d%2==0)
                roznica+=liczba[d]-48;
           else roznica-=liczba[d]-48;
           }
           else{
            if(d%2==0)
                roznica-=liczba[d]-48;
           else roznica+=liczba[d]-48;
           }
        //cout<<roznica<<endl;
        }

    if(suma%6==0)
    wynik6[c]=1;
    else wynik6[c]=0;
    if(roznica%11==0)
    wynik8[c]=1;
    else wynik8[c]=0;
    int dlugosc=liczba.length();
    if(liczba[dlugosc-1]=='0' && liczba[dlugosc-2]=='0' && liczba[dlugosc-3]=='0' or liczba[0]=='0')
    wynik343[c]=1;
    else wynik343[c]=0;
    }
    int e=0;
    for (e;e<t-1;e++){
                if (wynik6[e]==1)
            cout<<"TAK ";
        else cout<<"NIE ";
        if (wynik8[e]==1)
            cout<<"TAK ";
        else cout<<"NIE ";
        if (wynik343[e]==1)
            cout<<"TAK\n";
        else cout<<"NIE\n";

            }
            e=t-1;
      if (wynik6[e]==1)
            cout<<"TAK ";
        else cout<<"NIE ";
        if (wynik8[e]==1)
            cout<<"TAK ";
        else cout<<"NIE ";
        if (wynik343[e]==1)
            cout<<"TAK";
        else cout<<"NIE";
return 0;
}
Jak ktoś mi powie, czemu to nie działa, to czapki z głów. Pozdrawiam. :D
binio
Użytkownik
Użytkownik
Posty: 181
Rejestracja: 14 paź 2009, o 15:50
Płeć: Mężczyzna
Lokalizacja: Zbąszyń
Podziękował: 4 razy
Pomógł: 42 razy

[C++][Algorytmy] Cechy podzielności przez 6,8 i 343

Post autor: binio »

Hmm a co konkretnie tu nie dziala bo ja to skompilowalem i wszystko jest ok nawet wyniki sie zgadzaja
calmosc
Użytkownik
Użytkownik
Posty: 41
Rejestracja: 4 cze 2013, o 15:28
Płeć: Mężczyzna
Lokalizacja: Toruń
Podziękował: 8 razy

[C++][Algorytmy] Cechy podzielności przez 6,8 i 343

Post autor: calmosc »

Właśnie sęk w tym, że nie wiem, też odnoszę wrażenie, że jest wszystko dobrze, a jednak na spoju wywala błąd "wrong answer", może są jakieś wyjątki, albo coś się wysypuje dla dużych liczb? Myślałem długo i dalej nie wiem.
calmosc
Użytkownik
Użytkownik
Posty: 41
Rejestracja: 4 cze 2013, o 15:28
Płeć: Mężczyzna
Lokalizacja: Toruń
Podziękował: 8 razy

[C++][Algorytmy] Cechy podzielności przez 6,8 i 343

Post autor: calmosc »

Aż wstyd przyznać, ale w linii 37. powinno być roznica%8==0 zamiast roznica%11==0. Teraz jest ok.
ODPOWIEDZ