Anteprima
Vedrai una selezione di 30 pagine su 145
Fondamenti di Informatica - Esercizi Pag. 1 Fondamenti di Informatica - Esercizi Pag. 2
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 6
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 11
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 16
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 21
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 26
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 31
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 36
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 41
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 46
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 51
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 56
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 61
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 66
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 71
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 76
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 81
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 86
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 91
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 96
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 101
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 106
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 111
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 116
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 121
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 126
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 131
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 136
Anteprima di 30 pagg. su 145.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica - Esercizi Pag. 141
1 su 145
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

RICORSIVA

} **/

public static int[] f(int[] a,int[] b){ //nel primo return metti subito i valori inizializzati

return f(a,b,0,0,new int[a.length]);

}

public static int[] f(int[]a,int[]b,int i,int j, int[]c){ //nella f di appoggio metti invece i dichiarati

if(i<a.length){

c[i]=a[i];

if(a[i]==0 && j<b.length){ //parti con la funzione come nell it ma il for diventa

un if c[i]=b[j];

j++;

if(j==b.length){

j=0;

}

}

return f(a,b,i+1,j,c); //alla fine ricordati prima di chiudere l'if di fare return f con i

valori del giro dopo

} //chiuso l'if metti il return c che è quello che ti chiede la

funzione

return c;

} public static boolean test(){

return arrayEquals(f(new int[]{1,1,0,1,1,0,0,1,0,0,1,1},new int[]{10,20,30}),new int[]

{1,1,10,1,1,20,30,1,10,20,1,1}) &&

arrayEquals(f(new int[]{1,1,1,1,1},new int[]{10,20,30}),new int[]{1,1,1,1,1}) &&

arrayEquals(f(new int[]{1,0,1,1,1,1},new int[]{10,20,30}),new int[]{1,10,1,1,1,1}) &&

arrayEquals(f(new int[]{0,0,0,1,1,1},new int[]{10,20,30}),new int[]{10,20,30,1,1,1}) &&

arrayEquals(f(new int[]{0,0,0,0,0,0,0},new int[]{10,20,30}),new int[]

{10,20,30,10,20,30,10}) &&

arrayEquals(f(new int[]{1,0,0,0,1,0,1,1,1},new int[]{10}),new int[]

{1,10,10,10,1,10,1,1,1}) &&

arrayEquals(f(new int[]{0,0,0},new int[]{10,20}),new int[]{10,20,10}) &&

arrayEquals(f(new int[]{0,0,0},new int[]{10,20,30,40,50}),new int[]{10,20,30});

}

public static void main(String[] s){

System.out.println(""+test());

}

static String arrayToString(int[] a){

String s="";

for (int i=0;i<a.length;i++) {

s+=a[i]+";";

}

return s;

}

static boolean arrayEquals(int[] a,int[] b){

if (a.length!=b.length) return false;

for (int i=0;i<a.length;i++){

if (a[i]!=b[i]) {

return false;

}

}

return true;

}

}

#include <stdio.h>

#include <stdlib.h>

/* Realizzare la funziona f che dato in ingresso una array 'a' di

puntatori a interi, e la sua lunghezza n(>0), ritorna un nuovo array (allocato con la malloc)

uguale ad 'a' tranne per il fatto che non deve eliminare il suo primo elemento (e quindi

deve avere dimensione n-1).

Come riferimento si consideri che l'esecuzione del test deve

fornire risultato positivo.

*/

int **f(int *a[],int n){

int i=1;

int**b=(int**)malloc((n-1)*sizeof(int*));

for(;i<n;i++){

b[i-1]=a[i];

}

return b;

} int test(){

int a[]={10,20,30,40,50,60};

int *pa[]={&a[0],&a[1],&a[2],&a[3],&a[4],&a[5]};

int **b=f(pa,6);

// si noti che *b[0] sarebbe il contenuto della cella puntata da b[0];

return *b[0]==20 && *b[1]==30 && *b[2]==40 && *b[3]==50 && *b[4]==60;

}

main(){

printf("%s\n",test()?"true":"false");

}

class Esame57{

/*

Realizzare la funzione f qui sotto riportata, che dato un array di interi e un numero 'n'

maggiore di zero, verifichi che l'array contenga una sottosequenza contigua fatta da 'n' zeri.

Si presti attenzione a realizzare una funzione che non comporti inutili penalizzazioni in

performance.

Come riferimento si consideri che l'esecuzione del test

(eseguita dal metodo main) deve riportare il risultato true.

*/ public static boolean f(int[] a,int n){

int i=0;

int j=0;

for(;i<a.length;i++){

if(a[i]==0){

j=i;

for(i=i+1; i<a.length && a[i]==0;i++);

if(i-j==n){

return true;

}

}

} return false;

}

public static boolean test(){

return f(new int[]{1,2,1,0,2,1,2,2},1)&&

f(new int[]{1,0,2,1,0,2,1,2,2},1) &&

f(new int[]{1,2,1,0,0,2,1,2,2},2) &&

f(new int[]{1,2,1,0,0,0,2,1,2,2},3) &&

f(new int[]{1,2,1,0,0,0,2,1,2,0,0,2},3) &&

f(new int[]{1,2,1,0,0,0,2,1,2,0,0,2},2) &&

f(new int[]{1,0,0,2,1,0,0,0,2,1,2,2},2) &&

f(new int[]{1,0,0,2,1,0,0,0,2,1,2,2},3) &&

f(new int[]{1,0,0,2,1,0,0,0,2,1,2,0},1)&&

f(new int[]{0,0,0,0},4) &&

f(new int[]{0,0,0,0,1},4) &&

f(new int[]{1,0,0,0,0},4)&&

!f(new int[]{1,2,1,0,0,0,2,1,2,0,0,2},1)&&

!f(new int[]{1,2,1,0,0,0,2,1,2,0,0,2},4) &&

!f(new int[]{1,0,2,1,0,2,1,2,2},2) &&

!f(new int[]{1,0,2,1,0,2,1,2,2},3)&&

!f(new int[]{0,0,0,0},1) &&

!f(new int[]{0,0,0,0},2) &&

!f(new int[]{0,0,0,0},3) &&

!f(new int[]{0,0,0,0,1},1) &&

!f(new int[]{0,0,0,0,1},2) &&

!f(new int[]{0,0,0,0,1},3);

}

public static void main(String[] s){

System.out.println(""+test());

}

static String arrayToString(int[] a){

String s="";

for (int i=0;i<a.length;i++) {

s+=a[i]+";";

}

return s;

}

static boolean arrayEquals(int[] a,int[] b){

if (a.length!=b.length) return false;

for (int i=0;i<a.length;i++){

if (a[i]!=b[i]) {

return false;

}

}

return true;

}

}

#include <stdio.h>

#include <stdlib.h>

#define TRUE 1

#define FALSE 0

/* Realizzare la funzione sotto riportata che prende in ingresso un intero 'size'produce in uscita

una matrice 'size x size' di interi, del tipo (caso size=4):

0 1 2 3

-1 0 1 2

-2 -1 0 1

-3 -2 -1 0

Come riferimento si consideri che l'esecuzione del test deve fornire risultato positivo.

*/

int **f(int size){ //ricordati che per le matrici devi prima allocare spazio per

il puntatore a puntatore e poi per il puntatore a intero

int **m=(int**)malloc(size*sizeof(int*));

int i=0; //in questo modo , dopo il primo for che scorre le righe,

allochi spazio per gli interi da inserire nelle colonne

// j scorre le colonne, in questo caso la formula di inserimento

è j-i for(;i<size;i++){

m[i]=(int*)malloc(size*sizeof(int));

int j;

for(j=0;j<size;j++){

m[i][j]=j-i;

}

}

return m;

}

int test(){

int **a3=f(3);

int o3[3][3]={{0,1,2},{-1,0,1},{-2,-1,0}};

int **a4=f(4);

int o4[4][4]={{0,1,2,3},{-1,0,1,2},{-2,-1,0,1},{-3,-2,-1,0}};

return

array_equals(a3[0],o3[0],3) &&

array_equals(a3[1],o3[1],3) &&

array_equals(a3[2],o3[2],3) &&

array_equals(a4[0],o4[0],4) &&

array_equals(a4[1],o4[1],4) &&

array_equals(a4[2],o4[2],4) &&

array_equals(a4[3],o4[3],4);

}

main(){

printf("%s\n",test()?"true":"false");

}

int array_equals(int a[],int b[],int size){

for (;size--;)

if (a[size]!=b[size])

return FALSE;

return TRUE;

}

class Esame59{

/*

Realizzare la funzione f qui sotto riportata, che dato un array di interi "a", lo modifica

e ritorna in uscita (quindi NON se ne crei uno nuovo) in modo che l'inizio dell'array sia rimpiazzato

da quello che c'è dopo l'ultimo zero (si assuma che "a" abbia almeno uno zero).

Per ritrovare l'ultimo zero si consiglia di eseguire un ciclo a partire dall'ultimo

elemento dell'elenco.

Come riferimento si consideri che l'esecuzione del test

(eseguita dal metodo main) deve riportare il risultato true.

*/ public static int[] f(int[] a){

int i=a.length-1;

int n=0;

for(;a[i]!=0;i--);

if(a[i]==0){

for(;n<a.length-i-1;n++){

a[n]=a[i+1+n];

}

}

return a;

}

public static boolean test(){

return arrayEquals(f(new int[]{10,20,30,0,40,50,0,60,70}),new int[]

{60,70,30,0,40,50,0,60,70}) &&

arrayEquals(f(new int[]{10,20,30,0,40,50,0,60}),new int[]{60,20,30,0,40,50,0,60}) &&

arrayEquals(f(new int[]{10,20,30,0,0,60,70,80,90}),new int[]

{60,70,80,90,0,60,70,80,90}) &&

arrayEquals(f(new int[]{10,20,0,0,0,60,70,80,90}),new int[]

{60,70,80,90,0,60,70,80,90}) &&

arrayEquals(f(new int[]{10,20,0,21,0,22,0,60,70,80,90}),new int[]

{60,70,80,90,0,22,0,60,70,80,90}) &&

arrayEquals(f(new int[]{10,0,60,70}),new int[]{60,70,60,70}) &&

arrayEquals(f(new int[]{10,20,30,40,0,50}),new int[]{50,20,30,40,0,50}) &&

arrayEquals(f(new int[]{10,20,30,40,50,0}),new int[]{10,20,30,40,50,0}) &&

arrayEquals(f(new int[]{0,0}),new int[]{0,0});

}

public static void main(String[] s){

System.out.println(""+test());

}

static String arrayToString(int[] a){

String s="";

for (int i=0;i<a.length;i++) {

s+=a[i]+";";

}

return s;

}

static boolean arrayEquals(int[] a,int[] b){

if (a.length!=b.length) return false;

for (int i=0;i<a.length;i++){

if (a[i]!=b[i]) {

return false;

}

}

return true;

}

}

class Esame60{

/*

Realizzare la funzione f qui sotto riportata, che dato un intero "n" e un array

di interi "a", ne crea uno nuovo (e lo ritorna in uscita) ottenuto da "a"

aggiungendo in testa e in coda la sequenza dei sui primi "n" elementi.

Si ipotizzi che "n" non sia piu' grande della lunghezza degli elementi di "a".

Come riferimento si consideri che l'esecuzione del test

(eseguita dal metodo main) deve riportare il risultato true.

*/ public static int[] f(int[] a,int n){

int i=0;

int j=0;

int[]b=new int[a.length+2*n];

for(;j<a.length;j++){

b[j+n]=a[j];

for(;i<n;i++){

b[i]=a[i];

b[a.length+n+i]=a[i];

}

}

System.out.println(arrayToString(b));

return b;

}

public static boolean test(){

return arrayEquals(f(new int[]{10,20,30,40},2),new int[]{10,20,10,20,30,40,10,20}) &&

arrayEquals(f(new int[]{10,20,30,40},1),new int[]{10,10,20,30,40,10})&&

arrayEquals(f(new int[]{10,20,30,40},0),new int[]{10,20,30,40}) &&

arrayEquals(f(new int[]{10,20,30,40},4),new int[]

{10,20,30,40,10,20,30,40,10,20,30,40}) &&

arrayEquals(f(new int[]{10,20,30},2),new int[]{10,20,10,20,30,10,20});

}

public static void main(String[] s){

System.out.println(""+test());

}

static String arrayToString(int[] a){

String s="";

for (int i=0;i<a.length;i++) {

s+=a[i]+";";

}

return s;

}

static boolean arrayEquals(int[] a,int[] b){

if (a.length!=b.length) return false;

for (int i=0;i<a.length;i++){

if (a[i]!=b[i]) {

return false;

}

}

return true;

}

}

class Esame61{

/*

Risolvere l'esercizio precedente ma in modalità ricorsiva.

Come riferimento si consideri che l'esecuzione del test

(eseguita dal metodo main) deve riportare il risultato true.

*/ public static int[] f(int[] a,int n){

return f(a,n,new int[a.length+2*n],0,0);

}

public static int[]f(int[]a,i

Dettagli
Publisher
A.A. 2013-2014
145 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher balzo21 di informazioni apprese con la frequenza delle lezioni di Fondamenti di Informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Bologna o del prof Viroli Mirko.