eMatematikas Prisijunk Forumas VBE užduotys ONLINE testai

C++ uždavinys su palindromais


Sveiki,

gal kas nors rastų laiko padėti parašyti programą, "kuri nustatytų, ar sveikasis skaičius sk yra palindromas (vienodai skaitomas iš abiejų pusių)?" Pvz., sk = 1221 yra palindromas.

Ačiū!

Daug būdų yra spręsti tokį uždavinį. Turbūt paprasčiausias būtų paversti skaičių į string'ą ir tada tikrinti ar tai palindromas. Na bet sprendimas kurio turbūt tikimasi yra sukonstruoti duoto skaičiaus "atvirkštinį" (skaičių parašytą iš kito galo, pvz., jei duota 123, tai tas skaičius būtų 321) ir palyginti su pačiu skaičiumi. Šitas kodas turbūt ir gauna tą skaičių, tai jį įtraukęs į savo programą turėtum gauti veikiantį sprendimą:

int x = 123;
int atvirkstinis = 0;
while(x > 0){
  atvirkstinis = atvirkstinis*10 + x%10;
  x /= 10;
}

Paprasta ir genialu. Ačiū, Valdai!

Jei kam nors ateityje bus aktualu, pilnas kodas:
#include <io.h>
#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    setlocale(LC_ALL, "Lithuanian");

    int sk;
    int tikrinimoK;
    int atvirkstinis = 0;

    wcout << "Įveskite skaičių: "; cin >> sk;
    wcout << endl;

    tikrinimoK = sk;

    while (tikrinimoK > 0)
    {
        atvirkstinis = atvirkstinis * 10 + tikrinimoK % 10;
        tikrinimoK = tikrinimoK / 10;
    }

    if (atvirkstinis == sk) wcout << "Skaičius yra palindromas." << endl;
    else wcout << "Skaičius nėra palindromas." << endl;

    return 0;
}

Nori sudalyvauti šioje temoje ir parašyti savo pranešimą? Prisijungti »