Witam, to moj pierwszy post wiec jesli popelniam wraz z tym postem coś karygodnego to prosze o informacje (i tak bym ją pewnie dostal).
Rozwiazuje zadania z strony project euler (http://projecteuler.net/index.php?section=about ) zadanie 4 o tresci:
"A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 99.
Find the largest palindrome made from the product of two 3-digit numbers."
dopiero zaczynam nauke c++ wiec kod wyglada jak wyglada, ale moj problem polega na tym, ze nie spelnia on swojej funkcji. sądzę, że problem jest z linijkami
for(int i=1;i<=999;i++)
{
for(int j=1;j<=999;j++)
{
wynik = i*j;
bo gdy ustawie odgornie 'wynik' jako np. 9009 czy 1234 program dziala i odpowiednio rozroznia liczby.
oto pełny kod:
#include <iostream>
#include <conio.h>
#include <cmath>
using namespace std;
int wynik,dupa,odwr;
int ILEdlugosc(int a)
{
int dlugosc=0;
while (a >=1)
{
a=a/10;
dlugosc++;
}
return dlugosc;
}
int cyfraNaPozycji(int a,int pozycja)
{
a = a / pow(10.0f,pozycja);
a = a %10;
return a;
}
void main()
{
for(int i=1;i<=999;i++)
{
for(int j=1;j<=999;j++)
{
wynik = i*j;
int dlugosc = ILEdlugosc(wynik);
int licznik = dlugosc-1;
for (int k=0; k < dlugosc;k++,licznik--)
{
odwr = odwr + cyfraNaPozycji(wynik,k) * pow(10.0f,licznik);
if (wynik == odwr)
{
cout << wynik << "\n";
}
}
}
}
getch();
}
za pomoc dziekuję!