Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: PSEUDOCOD - Structuri de date -  (Citit de 6250 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
alexthebest08
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 14



Vezi Profilul
« : Noiembrie 03, 2015, 00:19:58 »

Salutare!
Am urmatoarea problema:
1) Pentru un nr n citit de la tastatura se va afisa:
-multimea divizorilor lui n
-nr divizorilor lui n
-suma divizorilor lui n

Trebuie sa fac un algoritm care sa imi rezolve toate cele 3 cerinte sau trebuie sa fac cate un algoritm pentru fiecare cerinta in parte?

Am incercat ceva, la prima cerinta

n, i intreg
i <- 0
citeste n
{pentru n <- 0, 9
         executa
     i <- i + n
  {daca n % i = 0
         atunci
             scrie i
  }
}
    

Nu cred ca am scris bine algoritmul, va rog sa imi explicati ce trebuie sa fac.
Va multumesc anticipat! Very Happy

Memorat
TheNechiz
De-al casei
***

Karma: 30
Deconectat Deconectat

Mesaje: 145



Vezi Profilul
« Răspunde #1 : Noiembrie 03, 2015, 20:00:50 »

Poți să rezolvi toate cerințele cu un singur algoritm. Ok
Nu înțeleg dacă cerința se referă la numărul de divizori proprii sau improprii ai numărului n.  Think

Acum, ceea ce nu înțeleg la algoritmul tău:
- de ce n <- 0,9 Huh
- de ce i <- i+n Huh
- unde e rezolvarea celorlalte 2  Whistle

Ceea ce ar trebui să faci este să parcurgi cu o structură pentru ( div <- 2,n/2 ) posibili divizori ai numărului și să verifici dacă sunt divizori proprii ( adică dacă n % div = 0 ) . În cazul în care sunt, îi scrii, îi numeri și îi însumezi.

n,div,nr,sum intreg
citeste n
nr = 0
sum = 0
pentru div <- 2,n/2 executa
{
    daca n % div = 0 atunci
    {   
         scrie div,_
         nr = nr+1
         sum = sum + div
    }
}
scrie nr, sum
Memorat
alexthebest08
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 14



Vezi Profilul
« Răspunde #2 : Noiembrie 03, 2015, 20:56:01 »

Mersi, pentru ajutor, dar vreau sa te intreb cum numar? prin procesul de incrementare? si in algoritmul tau se va incrementa variabila div cu 1?
Daca poti te rog sa imi explici mai detaliat ti-as fi recunoscator Very Happy

Si n-am inteles de ce variabila div <- 2, n/2 ? Nu ar fi div <- 1, div? adica div ia valori de la 0 pana la el insusi inclusiv? ex: divizorii lui 6: 1, 2, 3, 6 ?

Memorat
TheNechiz
De-al casei
***

Karma: 30
Deconectat Deconectat

Mesaje: 145



Vezi Profilul
« Răspunde #3 : Noiembrie 04, 2015, 17:46:57 »

Variabila care "numără" divizorii e nr.

nr = 0
daca n % div = 0 atunci
    nr = nr+1

( daca div e un divizor a lui n , atunci nr e incrementat )

Div ia valori de la 2 pentru că orice număr are ca divizori improprii numărul și 1. Nu are sens să verific dacă 6 e divizibil cu 1 pentru că știu deja asta. Am zis mai sus că nu am înțeles dacă cerința se referă la numărul de divizori proprii, dar am presupus că așa e.

ex:
divizorii improprii a lui 6: 1,6
divizorii proprii a lui 6: 2,3

Dacă vrei să afișezi și divizorii improprii, poți să faci mici modificări în algoritm.
Memorat
alexthebest08
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 14



Vezi Profilul
« Răspunde #4 : Noiembrie 08, 2015, 19:57:44 »

de ce div ia valori de la 2 pana la n/2 ?
adica de ce div <-2, n/2 si nu div <-2, n
?

* nu se specifica daca divizori proprii sau improprii
Memorat
TheNechiz
De-al casei
***

Karma: 30
Deconectat Deconectat

Mesaje: 145



Vezi Profilul
« Răspunde #5 : Noiembrie 08, 2015, 21:57:42 »

Pentru că n nu mai are niciun divizor după n/2 în afară de n. Nu are rost să verifici dacă n e divizibil cu n/2+1,n/2+2... pentru că știi sigur că nu e.

Dacă e vorba de divizori improprii ( de obicei, atunci când nu se specifică, e vorba de divizorii proprii ), poți modifica algoritmul astfel:

n,div,nr,sum intreg
citeste n
nr = 0
sum = 0
scrie 1,
pentru div <- 2,n/2 executa
{
    daca n % div = 0 atunci
    {   
         scrie div,
         nr = nr+1
         sum = sum + div
    }
}
scrie n
scrie nr, sum
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines