Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


algoritmi di informatica, Esercizi di Elementi di Informatica

file di algoritmi informatici!

Tipologia: Esercizi

2025/2026

Caricato il 27/04/2026

chiara-scali-1
chiara-scali-1 🇮🇹

2 documenti

1 / 20

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14

Anteprima parziale del testo

Scarica algoritmi di informatica e più Esercizi in PDF di Elementi di Informatica solo su Docsity!

ESERCIZI ALGORITMI IN C

N

. Dati n

,

meI

,

calcola il

resto

e 2.

Dati n

,

me calcola il

prodotto nem per

addizione

ripetuta

: mam ...tm

quoziente

della divisione intera

  1. INIZIO

nim

per

sottrazione successiva

LEGGI

n

,

m

  1. INIZIO

go

Efficienza

1 LEGGI n ,

m

  1. Se no

.

=

  • m
  1. Se nam

if

.

2 n

= n-1 - Valdre di

N DECREMENTATO

DI 1

  1. 1 n = n - m

if

.

TORNO A 9

PERCHE UNA SOMMA Si È GIA FATTA

29

=

9

. STAMPA 9

TORNO

A

9 -

4 .

STAMPA ne a FACCIAMO IN MODO CHE N SIA IL VALORE

PIÙ

PICCOLOTRANEM Se(NIMI

temp = m Scambio

CIÓ

LO SCRIVO IN EFFICIENZA - m = n DI

-n =

temp

Variabili

3. trovare il massimo

0

. INIZIO E SE DEVO CONFRONTARE I ELEMENTI?

MASSIMO TRA 1

,

3 e 2?

1

. EGGO 8. INIZIO 4. 2 Se

num max

a = 1

b= 3 C = 2

  1. Se acb

1

. LEGGI

n

(numero elementi da

leggere

.

1 MAX =

num

  1. 1 max = b 2. LEGGI max

->

e il

primo

elemento che

leggo

4 .

3n= n - 1

asb 3 .ESE MAX = a 3. n = n

  • 1 4. 4 TORNA A

4

Si

No

a

Si

acc

b

No

b

4. Se maxac

1 .

Senso

  1. STAMPA MAX

ND

H

Si

C

NON

e Efficiente

C

  1. 1 C= max

4 .I

LEGGI num

5

. STAMPO MAX

Scrivere un

algoritmo

  1. Inizio 5. scrivere un

algoritmo

per

trovare n!

per

sommare i

primi

. LEGGI n 0

. INIZIO

n numeri

naturali

  1. Somma

= o

. LEGGI

n

  1. i= 0

2. fattoriale

= 1

4

. Se

in

  1. i= 0

i

+ + 4. Se in

Somma = Somma

  • 1 4 .1i + +

4. 3 TORNA

A

4

4. 2 fattoriale = fattoriale * i

5. Se i=

n

4 .

TORNA A 4

  1. 1 SCRIVI Somma 5.

Scrivi fattoriale

ALGORITMI RICORSIVI

Un

problema

è

di carattere ricorsivo se è

espresso

in

termini

di se

stesso

ALGORITMI RICORSIVI

=

problemi scomponibili

in sotto

problemi

ALGORITMO RICORSIVO SOMMA DEL PRIMI

N NATURALI ALGORITMO PER IL CALCOLO Di

Somma

R

(neIN)

numero FattorialeR

(nEI)

  • > numero SFRUTTO IL FATTO CHE

if (n =

If

(n =

all

S

return 1

: 3

return 1

:

4 n

= n

. (n - 1)!

else

( elseh

return n + Somma R (n-1)

4

return n * Fattoriale Rin-1)

AGORITMO RICORSIVO DEL RESTO

E

DEL QUAZIENTE DI N

: M ALGORITMO RICORSIVO PER LA CODIFICA BINARIA

RAR (nEIN ,

mEIN)

  • numero ,

numero

Codifica

Binaria R (n EN)

  • numero

CRESTOL IQUOZIENTEL

If(n

< m) / If

(n = 1) (

return

n

. oh

return o

3

essel

else

(

cresto

, quoziente)

= Rar(n-m ,

n) return

Codifica

Binaria

R

(n/2)

10

Ny. 2

quoziente

4

return resto

, quoziente

4

ALGORITMO RICORSIVO

PER

LA DECODIFICA BINARIA ALGORITMO RICORSIVO PER CALCORO DEL

GCD/Greatest

Common Divisors

Decodifica

Binaria

R

(neN)

  • numero GCDR (nEIN ,

meI)

<

numero SFRUTTO IL FATTO SHE

If

(n = 1)4 If

(m y n = 0 (

GCD (m,

n) = GCD(n

,

m

  • n) = GCD(m - n ,

n)

return n :

3

return n

:

4

else/ else If (m-nn)!

return

Decodifica

Binaria R

,

return

GCDR (m-n ,

n) ,

)

else

h

ALGORITMO RICORSIVO DI EUCLIDE

return

GCDR (n ,

m-n)

,pinem

Euclide R

In

EN

,

mem)

If

(m yn = 0 &

return

n , 4

Eese

return

EuclideR(mn

,

n)

hp

: nem

ALGORITMI

PATIVI

Ripetizione

dello stesso procedimento

ALGORITMO ITERATIVO PER CALCORO DEL

GCD/Greatest

Common Divisors ALGORITMO ITERATIVO DI EUCLIDE

G CDI (nE ,

meI) >

numero

E Euclide I (ne

,

meI)

> numero eIN

while

(m

= n

= 0 while (m%

no)

If

(m

  • m n)/

temp

= n ;

temp

= m-n ;

n

= my n

;

m

= n

;

m

=

temp

;

4

n

=

temp

4 returnm

Else

(

m = m

  • n = 4

return

n ;

ESERCIZIO

neg

= o

indice

che si

arresta su valori co

pos=o

indice che

si

arresta su valorico

k = 0

variabile indice

del

rettore b

cerco

neg

=true

While

(k(n)

if

(cerconeg

trovato n = false

While

(neg

=n -

&d

not

trovaton)

if

(b(neg)

= d

neg

esse

trovato n = tre

If (neg

n -

b(k)

=

v

(neg)

neg

k

cerca

neg

= false

Else

svolgo

la

stessa cosa

per

il

positivo

trovato p

=

false

While (pos

n-

&& (not

trovato

if

(v (

pos)

-d)

pos ++

esse

trovato

p

= tre

If

(pos

n -

b(k)

=

V (

pos)

pos

k

cerca

neg

=

true

ESERCIZIO 3 PROVA 9/9/

Dato

un vettore v :

I vi = n di numeri

naturali

ordinato

,

scrivere il

Corpo

di un

algoritmo

che restituisce

la

sua

d- uniformità

Un vettore

è

duniforme

se

ogni

elemento

compared-volte

V= 13

,

,

,

,

8 ,

8

,

6 ,

,

d = 3

d = 1 è

il

numero totale

i

= 0

dei valori nel vettore

e

while (i

< n-

AND v(i) =

v(i

La

v

j

inizio fine

If

(n % d

return

Fese

inizio

=

i + 1

fine-inizio

d-

uniforme-true

while /uniforme And fine n

If

(V (inizio)

U(fine)

uniforme

=

false

Else

-If

(fine-1 AND UCfine)

= u(fine

e)

uniforme

= false

else

inizio

=

fine

fine

= inizio + d-

u

If (uniforme

=

false

stampa

d = o

Else

stampa

d

ALGORITMIR-CORI

ALGORITMO RICERCA DI UN DATO ALGORITMO

PER ALLOCAZIONE

PER POSIZIONE

Search /testa puntatore , k

interol >

puntatore

Insert

P

(info

intero

, jintero ,

testa

puntatore)

>

puntatore

trovato =falso If (j

successivo

=

testa P

.phore =

testa

While (not trovato and successivo fol

testa =

p

I I successivo. numero =

h)

trovato : true Else

Else(successivo =

successivo

. ptore)

successivo-testa

return successivo

For (i = 1 , ij

,

i+ + )

precedente

= successivo

ALGORITMO DI

CANCELLAZIONE PER POSIZIONE successivo= successivo.

ptore

DeleteP I testa puntatore , jnumerol

> puntatore precedente

.

ptore

=

p

If

(j

p

. ptore

=

successivo

testa :

testa .

ptore

return testo

Else

successivo - testa

For

(i =

,

i =

j

  • 1

,

i + + )

precedente

= successivo

successivo - successivo

. ptore

precedente

ptore

= successivo

. ptore

disalloca successivo

return testa

ALGORITMI

PIA

A

MEMORIZZAZIONE CON VETTORE

ALGORITMO

VERIFICA PILA

VUOTA

ALGORITMO INSERIMENTO ALGORITMO CANCELLAZIONE

Is

Empty1)

"boolean Push /e numeros

>

boolean si : successo

Pop

>numero

return (T = -1)

overflow

false ;

&

No

: altrimenti If(T=

per

indicare

I

If

(T= n

1) return o -

l'underflow

si

usa prima

di

ogni

codice

overflow

: true

Else

Else

T--

T= T +

1 return (SIT+ 1)

S(i)

= e

retur

overflow

B) MEMORIZZAZIONE CON CATENA

ALGORITMO VERIFICA

PILA VUOTA

ALGORITMO INSERIMENTO ALGORITMO CANCELLAZIONE

Is

Empty1)

"boolean Push /e numeros

>

void Pop 1)

> numero

return (T

=

-1) create

prms

e 11 Iftesta

p)

I

p

. ptore

= Testo

return

0 _

per

indicare

l'underflow

si

usa

prima

di

ogni

codice testa

=

p

Else

temp

: testa . info

testa : testa

. ptore

return

temp

ALGORITMI ALBERI

VISITA IN MODO ANTICIPATO (RICORSIVO VISITA IN MODO

SIMMETRICO

/RICORSIVO VISITA IN MODO

POSTICIPATO (RICORSIVO

DFAR Ir

puntatore)

:

niente DFSR

(r

puntatore)

:

niente DFPR Ir

puntatore)

: niente

Jf(r

+ y)

Jf(r

+ y)

Jf(r

y)

scrivi

contenuto

DESR (r. SX) DFPR

(r. SX)

nodo

puntato

da

r

scrivi

contenuto

DFPR (r .

dx)

DFAR (r. SX)

nodo

puntato

da r

scrivi

contenuto

DFAR

(r .

dx)

DFSR

(r .

dx)

nodo

puntato

da r

VISITA IN MODO ANTICIPATO (ITERATIVO VISITA IN MODO SIMMETRICO (ITERATIVO VISITA IN MODO POSTICIPATO LITERATIVO)

DFAI (r puntatore) DFSI /r puntatore) DFPI (r puntatore)

If

(r

d)

If

(r

d)

If

(r

d)

S. Push (r) S. Push Ir

, false

S.

Push

/r

, false)

While

(not S.

IsEmpty(l)

While

(not S.

IsEmpty(l)

While

(not S.

IsEmpty(l)

u = S

. Pop1)

,

bool)

= S

.

Pop

(m.

bool) = S

. Pop 1)

If (n

If (bool If

(boot

visita le visita

le

visita

le

S. Push

/u

. dx) Else

If

(u

. dx +

g)

Else

If

(u

.

dx + g)

S. Push

.

SX)

S. Push

/U

. dx

,

False -S. Push

/U

. dx

,

false

  • S

. Push

(U

,

true)

If

(u

.

Sx +

d)

D =

Depth If

(u

.

Sx +

d)

S. Push (U

,

true)

F

= First -S.

push

(U

.

SX

,

false) -S.

push

(U

.

SX

,

false)

VISITA

PER

LIVELLI/ITERATIVA)

BFI

Ir puntatore)

If

(r

= d)

C

. enqueue(r)

While (NOT c.

IsEmpty

(l)

U

= C.

denqueue()

"visitau

"

If

(u

.

SX

C

.

enquere

(U.

SX)

If

(n

.

dx

+ b)

C

.

enqueue

(U. dx)

ESERCIZIO

: dato

un albero

puntato

da

r ESERCIZIO 3 11/06/19 altezza iterativa

di

un

scrivere

algoritmo

ricorsivo che dia

il albero

binario

puntato

da r

puntatore

al

record

contenente K IPOTESI

:

N &

SearchR(r

puntatore ,

k numerol

>

puntatore

Altezza

I

Ir puntatore)

  • numero

If

(r =

p

or

r . info

= k) altezza

=

o

return S . push

(r

,

Else While (Not /S

.

IsEmpty

temp

= SearchR(r. sx ,

k) (u

,

h)

= S

. pop

If /temp + d) If

(h

>

altezza

return Search

R (r

.

dx

,

K)

altezza

h

Else If(

u

. SX + p)

return temp S.

Push

(U. SX

,

h+ 1)

If

(u

.

dx

+ P)

S

.

Push (u .

dx

,

n +

return altezza

Esercizio

: dato un albero puntato Esercizio

:

dato un albero

puntato

Esercizio :

dato

un albero puntato

da r scrivere

algoritmo

ricorsivo da r scrivere

algoritmo

ricorsivo da r scrivere

algoritmo

ricorsivo

che

restituisce

il numero di

foglie

che

restituisce

il numero di nodi che

restituisce l'altezza

Foglie

(r

puntatore)

>

numero

Nodi In

puntatore)

:

numero Altezza

(r

puntatore) :numero

ff(r

+ d)

If(r

Jf (r

= d

or (r

. SX = 0 And

r. dx = x)

return o

return o return o

Else

If

(r. Sx

=

0 AND r

.

dx

=

g)

Elsa

Else

return

1

return (

Nodi(r. sx)

+ Nodi (r

.

dx)

I+

max/Altezza

(r

. Sx)

,

Altezza

(r . dx))

Else

  • return

(Foglie

(r

. Sx)

Foglie

(r

.

dx))

ALGORITMO LCI (RICORSIVO ALGORITMO LCE (RICORSIVO

LCIR (r radice)

  • >

numero

LCE (r

puntatore)

-> numero

If

Tr = Nulli

If

Tr

= Nulli

Creturn

o

Creturn

o

Else Else

Lreturn

(LCIRCr .

Sx) + (CIR) V

.

dx) + Numeronodicri)

(return (LCIRCr+ 2x numeronodicr) +

ESERCIZI ALBERI

Esercizio Dati 2 attraversamenti ricostruire l'albero .

Soluzioni possibili

:

I ;

I

!

E

R

R

dx

SX

dX

I I

. ANTICIPATO 3

.

,

,

8 ,

,

,

,

,

,

7

in

Anticipato

,

,

,

,

8 ,

4

,

,

,

,

,

,

SX

i

d

X

I

P

Simmetrico 2 .

.

,

,

,

,

,

,

,

,

7 ↓

1 posticipato

,

8 6

,

5 ,

,

,

,

,

,

,

co

i

R

ANTICIPATO

: a ,

b

,

d

,

h

,

e

,

i

,

c ,

f

,

l

, p, q

,

m

,

r ,

s ,

g

,

n ,

o A

AMPIEZZA : a

,

b

,

c

,

d

,

e ,

fig

,

h

,

i

,

C

,

m

,

n ,

,

p , 9 ,

r

,

S

D

'd

d'è

f'g

n'é'

e

mi

D'gr's

Esercizio : Inserire le

seguenti

chiavi

in un

albero AVL

inizialmente visto

,

,

,

,

,

,

,

,

,

,

,

A

no

sposto

tutto

a

sx

3g

=

i

1

  • 21

I

= non

19

va

perno

nel

bene

quindi

si

fanno

due

ROTAZIONI

figlio

A

di

A

Ott 12

14

B

I

=

=

1

o

/

sullo

stesso

livello

Quando

faccio

un

inserimento

ESTERNO

, svolgo

una doppia

rotazione

=

12

=

23

=

d

21

1

I

14

62

= a628i

62

I

primi

10 elementi

X

CASA

Esercizio fornire

una permutazione

di

41 ,

7

,

,

,

,

,

,

,

,

,

, 694

tale

che ad

ogni

inserimento

in un

albero

AVI, partendo

da

quello

vuoto , se effettui

il massimo numero di

rotazioni

E

elemento Colo

metto a de

in Modo ARBITRARIO

(asx

non cambiaval

⑤T

·

effettuo

le rotazioni

39

ALBERO

BILANCIATA

, quindi

,il

do

o

lo

posso

mettere a sx o a di

a

·

il 50

%

inserisco a sx

%

o

20

ROTAZIONI

&

almeno

mi

compie

o ↑

40

ROTAZIONI

/X

·

inserisco

il

gi

sotto 30

o

ste

,

20 go

Io

il 4 °,

così

fa

3

I

/pe

to

go

20

ROTAZIONI

I

/

%

40

·

inserisco

il

40 ·

inserisco e'8e

40

sole e

faccio

una

sole ·

10

Rotazione

10

o 30

s

2010

zze

%

· 30

bo 'o

40

·

zo

inserisco il 10

°

sull'

°

percheSetinsere e

e

1

is

so

o

e

interno e quindi

fa

I

SEMPUCE

(

og

UnaDoppia Rotazione

Una

ROTAZIONE

·

FINALE

.

/

o

%

ge

36

10

10 g

V

.

Ivan

mas

> min

,

met

int

main

( intEnclideR (intm

,

intul

E E

intsthI

,

min

max

If(min

= =

max

=

v(ol

E

min

= VCol

return

n

;

For

(j

= 0

, j

< n

, j

x)

3

9

Ele

If (VE)Vet))

S

S

return

Enclider (n,

min)

3

V(j

= max

3

3

Y

int main (EuclideR(((

S

For

(k

= 0

,

k

< n

,

k +

x)

inti

9

scauf ("id" ,

mi ;

stauf

,

ul

j

If (V(K V(k

+))

If (man

S S

V(k+1)

= min

,

i =

Euclider

(m,

n)

3

3

Ere

Y &

i

=

Euclider (n

,

m)

media-max

min / e

3

Printe

(*d ,

&il

i

4

Partition

lint i

,

intf) QuickSort 11

inf

= i

If

(i <

f)

perno

=

~(i)

pos

=

partition

(i, f)

sup

=

f

  • 1 QuickSort/i

, pos-1)

finito

= false QuickSort(pos

,

f)

while

(finito

= false)

do

Merge

(int i,

intm

,

intf)

inf

inizio=i

While

(inff

AND

~(inf)perno j

= m

do K = i

Sup--

While (i < m And

j

=

f)

While

(v(sup)

= perno If

(v

(i) <

sj)

If /inf

<

sup)

2(k) = v(i)

temp

=

visup)

i+

visup)

= elinf

Else

(inf)

= temp

c(k) =

v(j)

Else -

j

finito-true k

t = perno If(i

= m

perno

=

v(sup)

For

(t=

j,

t

= f ,

t + +

visups

= t c(t) =

v(j)

return sup Else

For(t= i

,

t = m

,

t +

1

c (t) =

v(i)

for/tinizio ,

tef ,

t + + 1

~ (t) =

c(t)