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
|