|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Jan 2017
Messaggi: 4
|
aiuto traduzione algoritmi in c++
ho svolto questi 2 algoritmi in linguaggio plike(simile al pascal) solo che sono abbastanza inesperto di c++, qualcuno riuscirebbe ad aiutarmi a riuscire a trascriverli per farli funzionare in c
![]() 1**si consideri la successione a(1)=0, a(2)=2, a(3)=2 , a(n)=a(n-1)+2a(n-2)+a(n-3) per n>3 progettare un algoritmo che controlli se, sommando a mano a mano gli elementi di posto pari della successione(fino a un masssimo k) si trovi che tale somma sia uguale a *numero*(supponendo che *numero*>2), restituendo in tale caso attraverso la variabile logica *somma*,il valore *true*, attraverso la variabile *valore*,*numero*,e attraverso la variabile posizione la posizione che l'ultimo elemento sommato occupa nella successione; altrimenti, restituisca false, ed indichi inoltre, in *valore* e *posizione*, velore e posizione dell ultimo elemento sommato che oiu fa avvicinare somma a *numero*. procedure somma_elementi_uguale_numero(in: k, NUMERO; out: somma, valore, posizione) var : a_n, a_1, a_2, a_3, sum, NUMERO, k, posizione, pos, valore : integer var : somma : logical begin a_1 := 0 a_2 := 1 a_3 := 2 pos := 3 somma := .false. sum := 0 if (NUMERO > 2) then while (pos <= k .OR. NOT somma) do {Aggiorniamo la variabile posizione indicando la posizione del prossimo elemento calcolato} pos := pos + 1 {Calcoliamo il nuovo termine della successione ed aggiorniamo gli altri termini per il prossimo calcolo} a_n := a_1 + 2*a_2 + a3 a_1 := a_2 a_2 := a_3 a_3 := a_n if (posizione % 2 = 0) then sum := sum + a_n endif if (sum = NUMERO) then somma := .true. valore := NUMERO posizione := pos endif if (sum > NUMERO) then somma := .false. valore := a_2 posizione := pos - 1 endif endwhile endif end 2** dato un array di tipo 2d *a* di tipo intero, di dimensione alpha*beta, con alpha pari e beta>5, progettare un algoritmo con function logica che restituisca *true* se la somma del primo,terzo,quarto e penultimo elemento di tutte le righe pari e' uguale alla somma dei restanti elementi della medesima riga, altrimenti restituisca *false*. si tenga presente che i valorei dell'array a apparttengono ll insieme z, coma da definizione di tipo integer. logical function quattro_elementi_uguali_somma_altri (A, alpha, beta) var A[1..Alpha , 1..Beta]: array of integer var sum1, sum2: integer var controllo, somma : logical begin controllo := .false. somma := .false. i := 2 sum1 := 0 sum2 := 0 while (i < alpha .AND. controllo := .false.) for (j = 1 to beta) if (j = 1 or j = 3 or j = 4 or j = Beta-1) then sum1 := sum1 + A[i,j] else sum2 := sum2 + A[i,j] endif endfor if (sum1 != sum2) controllo := .FALSE. somma := .FALSE. else controllo := .TRUE. somma := .TRUE. endif i := i+2 endwhile end |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:28.