<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Pasja Informatyki - Najnowsze z tagiem zabawne</title>
<link>https://forum.pasja-informatyki.pl/tag/zabawne</link>
<description>Powered by Question2Answer</description>
<item>
<title>SPOJ Zabawne dodawwanie Piotrusia</title>
<link>https://forum.pasja-informatyki.pl/293614/spoj-zabawne-dodawwanie-piotrusia</link>
<description>

&lt;p&gt;Mam problem z zadaniem&amp;nbsp; z serwisu SPOJ zabawne dodawanie Piotrusia. Program działa dla liczb jednocyfrowych, gdy wpiszę do niego liczbę 10 program pokazuje, że jest ona palindronem, a gdy wpiszę liczbę większą niż 10 wyświetla mi się program przestał działać i nie mogę znaleźć błędu. Link do zadania:&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://pl.spoj.com/problems/BFN1/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://pl.spoj.com/problems/BFN1/&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;cmath&amp;gt;

using namespace std;

int main() {
    int liczba, n, ileDodawan = 0, liczba2, ileCyfr;
    bool czyLiczbaJestPalindronem = false;
    cin &amp;gt;&amp;gt; n;
    for (int i = 0; i&amp;lt;n; i++) {
        cin &amp;gt;&amp;gt; liczba;
        czyLiczbaJestPalindronem = false;

        while (!czyLiczbaJestPalindronem) {
            //obliczenie ilo cyfrowa jest liczba
            ileCyfr = 1;
            while (liczba/(10^ileCyfr)!=0) {
                ileCyfr++;
            }

            //sprawdzenie czy liczba jest palindronem
            for (int j = 0, k = ileCyfr-1; j&amp;lt;=ileCyfr; j++, k--) {
                if ((liczba/(10^j))%10!=(liczba/(10^k))%10) {
                    czyLiczbaJestPalindronem = false;
                    break;
                } else {
                    czyLiczbaJestPalindronem = true;
                }
            }

            //jeœli liczba nie jest palindronem to obliczenie sumy tej liczby z jej lustrzanym odbiciem
            liczba2 = 0;
            if (!czyLiczbaJestPalindronem) {
                for (int j = ileCyfr-1; j&amp;gt;=0; j--) {
                    liczba2 = liczba2*10 + (liczba/(10^j))%10;
                }
                liczba += liczba2;
                ileDodawan++;
            }
        }
        cout &amp;lt;&amp;lt; liczba &amp;lt;&amp;lt; &quot; &quot; &amp;lt;&amp;lt; ileDodawan &amp;lt;&amp;lt; endl;
    }
    return 0;
}
&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>SPOJ</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/293614/spoj-zabawne-dodawwanie-piotrusia</guid>
<pubDate>Sat, 14 Oct 2017 16:55:26 +0000</pubDate>
</item>
<item>
<title>Zadanie SPOJ, Zabawne dodawanie Piotrusia</title>
<link>https://forum.pasja-informatyki.pl/284607/zadanie-spoj-zabawne-dodawanie-piotrusia</link>
<description>

&lt;p&gt;Witam, SPOJ nie chce mi zaakceptować mojego rozwiązania zadania (&lt;a href=&quot;http://pl.spoj.com/problems/BFN1/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot; title=&quot;&quot;&gt;http://pl.spoj.com/problems/BFN1/)&lt;/a&gt;ze znanego mi powodu, mianowicie. To podesłane niżej jest jego roboczą wersją, tzn. ma pomocnicze cout-y. Na początku mamy liczbę testów, pętle z każdym, wczytanie liczby, wyznaczenie jej cyfr, zapisanie liczby przestawionej - i tu jest ów problem. Dla liczb dwucyfrowych przestawiona liczba jest poprawna, lecz&lt;strong&gt; dla liczb 4-cyfrowych &lt;span style=&quot;text-decoration: underline;&quot;&gt;rząd jedności jest wyznaczany błędnie - o 1 mniej&lt;/span&gt;&lt;/strong&gt;, choć przy błędnych cyfrach liczba jest obliczona poprawnie (tyle że jest zła, ze względu na złe wyznaczenie cyfr). Zaś &lt;strong&gt;dla liczb 3-cyfrowych cyfry wyznaczone są dobrze, &lt;span style=&quot;text-decoration: underline;&quot;&gt;ale szwankuje obliczenie liczby przestawionej&lt;/span&gt;&lt;/strong&gt; (po to dodałem linie&lt;span style=&quot;text-decoration: underline;&quot;&gt; 45-47&lt;/span&gt;, żeby to zaobserwować). O liczbach 5+-cyfrowych nie wspomnę. Nie wiem dlaczego przy 3-cyfrowych, &lt;span style=&quot;text-decoration: underline;&quot;&gt;źle się sumuje- o 1 za mało&lt;/span&gt; (pierwsze &quot;&lt;span style=&quot;text-decoration: underline;&quot;&gt;po zsumowaniu&lt;/span&gt;&quot;), a dlaczego &lt;span style=&quot;text-decoration: underline;&quot;&gt;przy 4-cyfrowych, błędnie jest ostatnia cyfra wyznaczana - o 1 za mała&lt;/span&gt;. Prosiłbym o pomoc. (Dorobiłem też toporną wersję, bo w zadaniu jest, że liczba nie większa od 80 i większość (poza 79-dopisałem ręcznie) wtedy działa (z dopisanym wyniki są dobre), ale przekraczam czas - mniejsza o to). Chodzi mi o te wyniki za małe o 1. Proszę o pomoc.&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;cmath&amp;gt;
#include &amp;lt;cstdlib&amp;gt;
 
using namespace std;
 
int liczba, dlugosc, liczbap,k,t;
 
 
int main()
{
    cout&amp;lt;&amp;lt;&quot;ile testow: &quot;;
    cin&amp;gt;&amp;gt;t;
        for(int z=0;z&amp;lt;t;z++)
        {
        cout&amp;lt;&amp;lt;&quot;Podaj liczbe do sprawdzenia (&quot;&amp;lt;&amp;lt;z+1&amp;lt;&amp;lt;&quot;. test): &quot;;
        cin&amp;gt;&amp;gt;liczba;
 
petla:
 
        cout&amp;lt;&amp;lt;endl&amp;lt;&amp;lt;&quot;Sprawdzamy liczbe: &quot;&amp;lt;&amp;lt;liczba&amp;lt;&amp;lt;endl;
 
int liczba2=0;
        liczbap=liczba;
        dlugosc=(int)log10(liczba)+1;
 
        system(&quot;PAUSE&quot;);
 
int cyfra[dlugosc];
 
            for(int i=0; i&amp;lt;dlugosc; i++)
            {
                if(i&amp;gt;0)  liczba=liczba-cyfra[i-1]*pow(10,dlugosc-i);
                if(i==0) cyfra[i]=floor(liczba/pow(10,dlugosc- i-1));
                else cyfra[i]=floor(liczba/pow(10,dlugosc- i-1));
 
            cout&amp;lt;&amp;lt;i+1&amp;lt;&amp;lt;&quot;. cyfra: &quot;&amp;lt;&amp;lt;cyfra[i]&amp;lt;&amp;lt;endl;
 
            kp: ;
            }
 
cout&amp;lt;&amp;lt;endl;
            for(int i=0; i&amp;lt;dlugosc; i++)
            {
            cout&amp;lt;&amp;lt;endl&amp;lt;&amp;lt;i+1&amp;lt;&amp;lt;&quot;. rzad: &quot;&amp;lt;&amp;lt;cyfra[dlugosc-i-1]*pow(10,dlugosc-i-1);
            liczba2+=cyfra[dlugosc-i-1]*pow(10,dlugosc-i-1);
            cout&amp;lt;&amp;lt;endl&amp;lt;&amp;lt;&quot;Po zsumowaniu: &quot;&amp;lt;&amp;lt;liczba2&amp;lt;&amp;lt;endl;
            }
 
        cout&amp;lt;&amp;lt;endl&amp;lt;&amp;lt;&quot;Przestawiona liczba: &quot;&amp;lt;&amp;lt;liczba2&amp;lt;&amp;lt;endl;
 
        if (liczbap==liczba2)
        {
        cout&amp;lt;&amp;lt;&quot;Liczba jest palindromem!!!&quot;&amp;lt;&amp;lt;endl&amp;lt;&amp;lt;endl&amp;lt;&amp;lt;endl;
        }
        else
        {
        cout&amp;lt;&amp;lt;&quot;Liczba nie jest palindromem&quot;&amp;lt;&amp;lt;endl&amp;lt;&amp;lt;endl&amp;lt;&amp;lt;endl;
        liczba=liczbap+liczba2;
        goto petla;
        }
 
 
        }
    return 0;
}&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>SPOJ</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/284607/zadanie-spoj-zabawne-dodawanie-piotrusia</guid>
<pubDate>Sun, 10 Sep 2017 16:54:44 +0000</pubDate>
</item>
</channel>
</rss>