Informatică
Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive
 

Se dau 3 numere naturale (sau întregi) de la tastatură. Se cere algoritmul care verifică dacă aceste numere sunt consecutive.

Rezolvare:

Întotdeauna, înainte de a scrie un algoritm e bine să luăm un exemplu și să observăm ce condiții și variabile intervin, apoi să încercăm să definim pașii pe acel exemplu. Deci, să facem acest lucru și să vedem ce se întâmplă.

FIe numerele 2,4 si 3. Se observă de la început că ele sunt consecutive dar...trebuie să ne gândim cum demonstrăm acest lucru prin calcule. În primul rând ne gândim la o propietate generală a numerelor consecutive și anume aceea că fiecare număr se obține din precedentul la care adunăm 1. Adică: 3=2+1, 4=3+1. Deci putem spune că numerele sunt consecutive dacă diferența dintre două numere este 1. Dar problema ne spune că avem 3 numere. Să facem 2 scăderi nu e greu dar dacă trebuie să verificăm faptul că 100 de numere sunt consecutive? Ar fi ineficient sa calculăm 99 de diferențe chiar dacă ele sunt făcute de computer. Asta se traduce in programare prin "complexitatea algoritmului".  Cu alte cuvinte, numărul de operații efectuate de calculator.

Revenind, metoda cu verificarea diferenței ne rezolvă problema dar destul de rudimentar și ineficient din punct de vedere al complexității algoritmului și al timpului de execuție al programului. Deci trebuie să găsim altă metodă mult mai bună. De exemplu, dacă am face doar o singură scădere? Și anume 4-2=2. Singura problemă este să vedem dacă numărul 3 se află între 2 și 4 sau nu. Dacă da, atunci cele 3 numere sunt consecutive.

Ca să rezum, trebuie calculată diferența dintre cel mai mare număr (maximul) și cel mai mic număr (minimul). Dacă diferența dinttre ele este 2, atunci cel de-al treilea număr se află între maxim și minim iar cele 3 numere sunt consecutive. Dacă diferența dintre maxim și minim nu este 2 atunci numerele nu sunt consecutive. Se deduce simplu că pe lângă cele 3 numere citite de la tastatură (a,b,c), mai intervin 2 variabile (max, min). Să scriem algoritmul:

var a, b ,c, min, max:int;

START

scrie("Dati 3 numere întregi:"); /îi spunem computerului să afișeze acest mesaj pentru ca utilizatorul să știe ce trebuie să facă la execuția programului

citește (a,b,c); /computerul reține în locațiile de memorie cele 3 valori introduse de utilizator de la tastatură

/Acum începem algoritmul propriu-zis cu stabilirea maximului și minimului dintre cele 3 numere

dacă a<b atunci max=b /(și min=a, dar nu e necesar să specificăm acest lucru)

                altfel min=b; /(și max=a)

dacă b<c atunci max=c

                altfel min=c;

dacă a<c atunci min=a

                 altfel max=a; /aici se termină determinarea maximului și minimului dintre cele 3 numere

dacă max-min=2 atunci scrie ("Numerele sunt consecutive!")

                            altfel scrie ("Numerele NU sunt consecutive!");

STOP.

Pentru ca să puteți înțelege mai bine algoritmul și logica sa, luați 3 numere oarecare neconsecutive și executați algoritmul cu ele. Apoi luați 3 numere consecutive și repetați procedura algoritmului.

Observație: algoritmul nu este valabil pentru un șir de mai mult de 3 numere.

 

 

Share

Comments powered by CComment

Cauchy
Mulțumesc pentru că vizitați blogul meu! Reveniți pentru și mai multe noutăți interesante!
 
 

DESPRE SITE
Blog - MateCuprinde articole despre anumite capitole sau subiecte din matematică tratate punctual.
CategoriiToate materialele le găsiți sortate în funcție de categoria în care doriți să le căutați.
MediaMuzica, video și altele...
 
Euler
MATH LEGION
Salut! Am creat acest site pentru a împărtăși cu voi ideile în stilul meu personal.

Ultimele articole

Abonează-te

Guests Online

We have 71 guests and no members online

Login