21 / 41
May 2010
2 months later
1 month later

-- kod usunięty --

Dla przykładowych danych działa prawidłowo, no idea dlaczego sędzia uparcie daje SIGSEGV? Z góry thx.

8 months later

Bardzo ładny kod, ale liczby nie zmieszczą się w standardowym typie - 1000 cyfr to jednak trochę dużo... smile
Polecam zrobienia na stringach...

1 year later

AC :D

Jako ciekawostkę powiem żebyście pamiętali o długości stringa smile

3 years later

Cześć, sędzie nie przyjmuje mi tego kodu mimo przejścia pozytywnie wszystkich testów które mu podaje. Proszę o jakąś podpowiedź wink

kod usuniety


Zadanie już rozwiązałem. Po prostu zamiast stringów użyłem long double...

8 months later

Żeby nie tworzyć nowego tematu wstawiam tutaj swój kod.
Może ktoś zerknie. Ogólnie nie jest ładnie zrobiony, ale skupiłem się kodzie. Na początku sprawdziłem możliwości ze znakami i liczbami i wyglądało dobrze. Niestety WA. Doczytałem, że występują zera wiodące to zaimplementowałem odpowiedni kod. Przetestowałem i było w porządku, jednak znowu to samo. Może popełniam jakiś błąd albo muszę zmienić podejście. Dzięki za jakąkolwiek pomoc :wink:

Jesteś niestarannym coderem albo sknerusem. Jeżeli wczytujesz string 2 elementowy, to jakiej wielkości tablicę potrzebujesz? Analogicznie string 1000 elementowy, a szczególnie gdy potem używasz strlen - wiesz jak działa ta funkcja?
Np jakoś tak [moja interpletacja, prostsza - do zrozumienia]:

int strlen (char *a){
  int i = 0;
  while (*a++ != '\0') i++;
  return i;
}

PS
Moim zdaniem i według mojego testu, nie ma w tym zadaniu żadnych zer wiodących, a czy są/były błędne testy nie wiem. Dlatego oba komentarze usuwam z pod zadania a przenoszę tutaj i jeszcze raz zwracam uwagę, że oba komentarze mogą być bardzo błędne, nie przemyślane, błednie przetestowane.

2015-01-19 20:40:43 Karol Ka¼mierczak

			Czy dane wejściowe zawierają zera wiodące?

Edit: zawierają.

Proste porównywanie łańcuchów nie wystarczy.

	Ostatnio edytowany: 2015-02-13 20:52:09






	2013-06-19 11:34:16 Paweł Ciosek

W testach sprawdzających jest błąd, np. dla 1234 >= 1235, mój

program wypisywał złą odpowiedz, mimo tego dostałem AC. Proponuje
zaktualizować testy. Pozdrawiam.

Witam. Jestem początkujący i stworzyłem kod, który u mnie działa bez zarzutów, ale sędzia odrzuca z podpisem "Przekroczono limit czasu". Mógłby ktoś rzucić okiem?

include iostream

using namespace std;

int main()
{
for(;; )
{

string k1,k2,x;

cin>>k1>>x>>k2;

if (x=="==")
{
    if (k1==k2) cout<<"1"<<endl;
    else cout<<"0"<<endl;
};

if (x==">=")
{
    if (k1>=k2) cout<<"1"<<endl;
    else cout<<"0"<<endl;
};
if (x=="<=")
{
    if (k1<=k2) cout<<"1"<<endl;
    else cout<<"0"<<endl;
};
if (x=="!=")
{
    if (k1!=k2) cout<<"1"<<endl;
    else cout<<"0"<<endl;
};

}
return 0;

}

Z góry dzięki za pomoc :slight_smile:

a skąd twój program ma wiedzieć, kiedy ma skończyć ?

nie zadałeś sobie trudu przeczytania dyskusji w tym wątku, gdybyś przeczytał to wiedziałbyś, że twoja metoda nie da właściwych odpowiedzi dla przypadków typ:

100000 >= 9

Masz racje. Dla stringów nie da mi właściwej odpowiedzi, ale po zmianie na long double

long double k1, k2;

string x;

program już działa bez problemu, aczkolwiek sędzia dalej wyświetla, że przekroczono limit. Myślę, że problem leży właśnie w tym, że program nie wie, kiedy skończyć. Dzięki za sprawdzenie :slight_smile:

1 year later

potrzebna pomoc zadanie proste a z odpowiedzia ciezko edit porownywalem stringi

8 months later

Czy można się spodziewać chamskich przykładów typu:
0000 <= 001
@edit rozumiem mogą się pojawić…
Dla pokoleń późniejszych sugeruję też pamiętać, że są wczytywane liczby i nigdzie nie jest wspomniane, że każda jest dodatnia :slight_smile:

27 days later

Co tu jest nie tak?

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

int main()
{
    string a,b;
    string znak;
    int dla,dlb,i,j,ile;
    bool w,e;
    while(cin>>a>>znak>>b)
    {
        i=0;
        j=0;
        ile=0;
        w=true;
        e=true;
        dla=a.length();
        dlb=b.length();
        while(e=true&&j<dla)
        {
            if(a[j]=='0') ile++;
            else e=false;
            j++;
        }
        if(ile>0) a.erase(0,ile);
        j=0;
        ile=0;
        e=true;
        while(e=true&&j<dlb)
        {
            if(b[j]=='0') ile++;
            else e=false;
            j++;
        }

        if(ile>0) b.erase(0,ile);
        dla=a.length();
        dlb=b.length();
//cout<<a<<" "<<b<<endl;
        if(znak=="!=")
        {
            if(a!=b) cout<<1<<endl;
            else cout<<0<<endl;

        }
        else if(znak==">=")
        {
            if(dla==dlb)
            {
                while(i<dla&&w==true)
                {
                    if(a[i]>=b[i]) i++;
                    else w=false;
                }
                if(i==dla) cout<<1<<endl;
                else cout<<0<<endl;
            }
            else if(dla>dlb) cout<<1<<endl;
            else cout<<0<<endl;

        }
        else if(znak=="<=")
        {
            if(dla==dlb)
            {
                while(i<dla&&w==true)
                {

                    if(a[i]<=b[i]) i++;
                    else w=false;
                }
                if(i==dla)cout<<1<<endl;
                else cout<<0<<endl;
            }
            else if(dla<dlb) cout<<1<<endl;
            else cout<<0<<endl;
        }
        else if(znak=="==")
        {
            if(a==b)cout<<1<<endl;
            else cout<<0<<endl;
        }
   }
    return 0;
}
5 months later