8.7.. Ispisati na ekran da li je učitani broj palindrom.

Opis programa: Kroz WHILE petlju se izvodi izdvajanje cifre (ostat) sa desna iz učitanog broja (n). Fomira se novi broj u suprotnom smjeru (suprot). Proces se ponavlja za sve cifre učitanog broja. Cifre se izdvajaju MOD naredbom ostat = n % 10, umanjenje se izvodi cjelobrojnim dijeljenjem n = n / 10.

Opis izvođenja: Ako učitamo na primjer 151. WHILE petlja se ponavlja za sve cifre učitanog broja (n=151). Naredbom ostat = n % 10 se izdvaja cifra jedinica - cifra sa desna (ostat = n % 10 = 151 % 10 = 1). Izdvojena cifra se dodaj broju u suprotnu stranu (suprot = suprot * 10 + ostat = 0 * 10 + 1 = 1). Umanjuje se vrijednost testnog broja n (n = n / 10 = 151 / 10 = 15).
Početak WHILE petlja (n > 0, 15 > 0) istinit je logički izraz i ponavlja se petlja. Naredbom ostat = n % 10 se izdvaja cifra jedinica - cifra sa desna (ostat = n % 10 = 15 % 10 = 5). Izdvojena cifra se dodaj broju u suprotnu stranu (suprot = suprot * 10 + ostat = 1 * 10 + 5 = 15). Umanjuje se vrijednost testnog broja n (n = n / 10 = 15 / 10 = 1).
Još uvijek je logički izraz istinit (n > 0, 1 > 0) WHILE petlja se izvodi naredba (ostat = n % 10 = 1 % 10 = 1) se izdvaja cifra 1. Izdvojena cifra se dodaj broju u suprotnu stranu (suprot = suprot * 10 + ostat = 15 * 10 + 1 = 151). Umanjuje se vrijednost testnog broja n (n = n / 10 = 1 / 10 = 0).
Logički izraz WHILE petlje je nistinit (vrijednost testnog broja n = 0).
Naredbom IF se provjerava da li izračunati broj (suprot) jednak učitatnom broji i ispisuje se odgovarajuća poruka.

Listing programa:

// 08702109
#include <stdio.h>

int main() {
    int n, n1, suprot = 0, ostat;

    printf("Ucitati broj:");
    scanf("%d", &n);
    n1 = n;                // kopija ucitanog broja - testni broj

    while (n > 0){         // dok je vrijednost testnog broj > 0 ponavljaj - pocetak petlje
        ostat = n % 10;    // ostatak dijeljenja
        suprot = suprot * 10 + ostat;    // dodaj cifru desne strane broju u suprotnom smjeru
        n = n / 10;        // nova vrijednost testni broja - odbaci cifru sa desne strane
    }

    if (n1 == suprot){     // provjera da li ucitani broj palindrom
        printf("Ucitani broj je palindrom");
    }
    else{
        printf("Ucitani broj nije palindrom");
    }
    return 0;
}

Ispis na ekranu:
Ucitati broj:12344321
Ucitani broj je palindrom

Drugo izvođenje:
Ucitati broj:1234321
Ucitani broj je palindrom

Treće izvođenje:
Ucitati broj:12345
Ucitani broj nije palindrom

Index