Studente (Cognome Nome):

Documenti analoghi
Studente (Cognome Nome):

Studente (Cognome Nome):

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2015/ Luglio 2016

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2016/ Febbraio 2017

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2016/ Giugno 2017

Programmazione 1 A.A. 2015/2016

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2012

Array. Definizione e utilizzo di vettori

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2018/ Luglio 2019

Studente (Cognome Nome): Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a Primo scritto 14 Gennaio 2010

Cognome Nome Matricola Postazione PC. Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a Giugno 2014

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a luglio 2011

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a febbraio 2013

System.out.print("\tATTENZIONE: hi inserito un valore non valido!\n");

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a giugno 2011

Cognome Nome Matricola Postazione PC. Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a Gennaio 2015

Cognome Nome Matricola Postazione PC. Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a Luglio 2014

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2018/ Giugno 2019

3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso;

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2017/ Luglio 2018

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a Quinto scritto 2 Luglio 2010

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a Terzo scritto 19 Febbraio 2010

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a luglio 2011

Algoritmi di Ricerca. Esempi di programmi Java. Prof. Angela Bonifati

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a giugno 2013

Algoritmi di Ricerca. Esempi di programmi Java

Realizzare un applicazione console che stampi la somma dei primi n numeri dispari oppure pari (a scelta dell operatore). import java.io.

Algoritmi di Ricerca. Esempi di programmi Java

Laboratorio di Programmazione 1 [Java]

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a Giugno 2015 Testo

Corso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Dicembre Alcune Soluzioni

Esercitazione n 2. Obiettivi

Esercitazione Fondamenti di informatica 2

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a gennaio 2012

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

import public static boolean int boolean false boolean false boolean false boolean false true false

Fondamenti di informatica T-1 (A K) Esercitazione 4: controllo del flusso

Introduzione a Java e all'ambiente di sviluppo

Lezione 12 programmazione in Java. Anteprima. ADT Array ... Nicola Drago Dipartimento di Informatica Università di Verona

Corso di Programmazione

import java.io.*; boolean condizioneciclo = true;

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a luglio 2013

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a Febbraio 2016 Testo

import java.io.*; double massa = 0.0; double velocità = 0.0; double coefficienteattrito = 0.0; int numeroveicoli = 0;

Interfacce. Esempio: interfaccia I con una sola funzione g() public interface I {

Richiami di Fondamenti di Informatica - 1

import java.io.*; System.out.print("\tInserire il valore (in OHM) della resistenza \"R1\": ");

Si descriva il comportamento del metodo main della classe ES2: cosa viene stampato sul video? Giustificare la risposta.

COGNOME NOME MATRICOLA DATA

Prova d Esame Compito A

Laboratorio di Programmazione 1 [Java]

Insieme.java. Printed by Paolo. Feb 24, 04 16:44 Page 1/1 class Insieme { private int[] elementi; Tuesday February 24, /10

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Esercitazioni del Corso di Fondamenti di Informatica ARRAY. Prof. Giuseppe Manco. A cura di Ing. Andrea Tagarelli

Esercizi su array di array

import java.io.*; System.out.print("\tInserire il tasso di spesa: ");

Laboratorio di sistemi Strutture dati ricorsive (2) Java

Corso di Laurea Ingegneria Informatica. Dispensa E11. Esercizi su array e. Gennaio 2012

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Corso sul linguaggio Java

import java.io.*; System.out.print("\tInserire la velocità (in km/h) dell\'automobile: ");

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Esercizi sui metodi. Carla Limongelli. Maggio Esercizi 1

Algoritmi di Ricerca. Esempi di programmi Java

Esercitazione n 4. Capacità di analisi e di estensione di progetti esistenti Il concetto di filtro Linguaggio Java:

Corso sul linguaggio Java

Fondamenti di informatica 2 Claudio Biancalana. Esercitazione capitolo 19 Array

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

import java.io.*; char sceltautente = '_'; boolean condizionesn = true; boolean condizionedowhile = true; boolean condizioneprogramma = true;

Corso: Fondamenti di Informatica (Gruppo 2) a.a Corsi di laurea: Ing. Settore Informazione

Esercitazione n 2. Obiettivi

Lezione 2 Primi programmi

Programmazione in Java (I modulo)

Programmazione I - corso B a.a prof. Viviana Bono

Esercizi su array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E08. C. Limongelli Gennaio 2012

A. Ferrari. informatica. Java basi del linguaggio. Alberto Ferrari Informatica

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a II scritto Febbraio 25 Febbraio 2011

Metodi statici. Dichiarazione e chiamata di metodi statici

Laboratorio di Programmazione Ottobre. Simone Zaccaria

Esercizi di Algoritmi e Strutture Dati

Transcript:

Studente (Cognome ): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Primo Scritto 12 Gennaio 2007 Si noti che le soluzioni ai quesiti saranno considerate valide solo se il materiale consegnato includera' anche lo svolgimento. Tale foglio deve essere consegnato insieme allo svolgimento. Quesito 1 Un magazino è rappresentato da un array di pezzi, identificati dal nome e dal prezzo di ciascun elemento. Un preventivo richiesto da un cliente è rappresentato da un array di pezzi, identificati dal nome e dalla quantità richiesta. a) Scrivere un metodo Java che calcoli il costo di un preventivo. Il metodo deve avere il seguente prototipo: public static double costo(string [] mag_nome, double [] mag_prezzo, String [] prev_nome, int [] prev_quantità) Prerequisiti del metodo: gli array non sono null, i prezzi e le quantità sono >=0, tutti i pezzi del preventivo sono presenti in magazino. b) Scrivere un metodo Java che ordini in modo decrescente un preventivo rispetto al costo dei singoli elementi (costo=quantità X prezzo).. Il metodo deve avere il seguente prototipo: public static void ordina(string [] mag_nome, double [] mag_prezzo, String [] prev_nome, int [] prev_quantità) Prerequisiti del metodo: gli array non sono null, i prezzi e le quantità sono >=0, tutti i pezzi del preventivo sono presenti in magazino. Esempio: se il contenuto del magazino è il seguente, prezzo Cinghia 50 Cerchione 350 Spazzola 10 Freni 300 e il preventivo è il seguente Quantità Cinghia 6 Spazzola 1 Cerchione 4 L invocazione del metodo di cui sopra riorganizza il preventivo nel seguente modo: Quantità Cerchione 4 Cinghia 6 Spazzola 1 c) Scrivere un metodo Java che individua gli elementi non validi all interno di un preventivo. Il metodo deve avere il seguente prototipo (il preventivo si suppone ordinato in modo decrescente rispetto al costo degli elementi, come indicato dal metodo b): public static boolean [] validi(string [] mag_nome, double [] mag_prezzo, String [] prev_nome, int [] prev_quantità)

un preventivo è valido se il costo del preventivo è <= 1000 Euro. Se il preventivo è valido, il metodo deve restituire un vettore le cui componenti sono tutte true. Se il preventivo non è valido, ossia il costo è > 1000 Euro, sono considerati validi gli elementi a costo minore, (costo = prezzoxquantità), la cui somma dei costi è <= 1000 Euro. Esempio: se il contenuto del magazino è il seguente: prezzo Cinghia 50 Cerchione 350 Spazzola 10 Freni 300 E l ordine è il seguente: Quantità Cerchione 4 Cinghia 6 Spazzola 1 Il metodo restituisce l array {false, true, true. Prerequisiti del metodo: gli array non sono null, i prezzi e le quantità sono >=0, tutti i titoli del preventivo sono presenti in magazino, il preventivo si suppone ordinato in modo decrescente rispetto al costo degli elementi, come indicato dal metodo b Quesito 2 a) Rappresentare in C2 su 8 bit i seguenti numeri: -127 +28 b) Calcolare la somma di tali numeri su 8 bit se rappresentabile. Quesito 3 Si consideri il seguente file system, di cui esistono solo la directory C:\ e TEMP, con i relativi file contenuti (non directory). Si tenga presente che nel mese di novembre è arrivato java.doc, nel mese di dicembre La meloria.doc. a) Impartire i comandi per creare le directory mancanti, supponendo che la directory corrente sia C:\. b) Impartire la sequenza di comandi per spostare i file da C:\TEMP nelle relative cartelle/directory, eventualmente creando link, utilizzando solo path-name relativi. Si suppone che la directory corrente sia C:\TEMP. É possibile navigare fra le directory utilizzando il comando cd.

Soluzione della parte Java * * Soluzione scritto del 12 gennaio 07 * * Magazino * * @author Nicola Serreli public class PrimoScritto_B { * Funzione che calcola il costo di ciascun elemento del preventivo public static double[] prev_costi(string[] mag_titolo, double[] mag_prezzo, int i, j; double[] prev_costi = new double[prev_titolo.length]; calcolo i vari costi (simile alla funzione costo) for (i = 0; i < prev_titolo.length; i++) { * Per ogni pezzo in preventivo : * 1) lo cerco in magazino. * 2) conoscendo il prezzo, calcolo il suo costo. for (j = 0; j < mag_titolo.length; j++) { if (prev_titolo[i].equals(mag_titolo[j])) { // Nota: l'indice dei costi e' lo stesso del preventivo prev_costi[i] = prev_quantita[i] * mag_prezzo[j]; return prev_costi; public static double costo(string[] mag_titolo, double[] mag_prezzo, double costo_totale = 0; calcolo prima i costi dei singoli elementi e poi sommo int i = 0; for (i = 0; i < prev_costi.length; i++) { costo_totale += prev_costi[i]; return costo_totale; * Scambia due elementi appartenenti ad un vettore di double public static void scambio_costi(double[] prev_costi, int i, int j) { double tmp_c = prev_costi[i]; prev_costi[i] = prev_costi[j]; prev_costi[j] = tmp_c; * Scambia due elementi appartenenti ad un vettore di int public static void scambio_quantita(int[] prev_quantita, int i, int j) { int tmp_i = prev_quantita[i]; prev_quantita[i] = prev_quantita[j]; prev_quantita[j] = tmp_i; * Scambia due elementi appartenenti ad un vettore di String public static void scambio_titoli(string[] prev_titolo, int i, int j) { String tmp_t = prev_titolo[i]; prev_titolo[i] = prev_titolo[j]; prev_titolo[j] = tmp_t; public static void ordina(string[] mag_titolo, double[] mag_prezzo,

int i = 0; int j = 0; * Per ordinare il preventivo, e' utile avere un vettore contenente i * costi dei singoli libri. * * Notare che questo vettore e' "parallelo" ai vettori del preventivo, * quindi nell'ordinare dovro' fare 3 scambi. ordino rispetto al nuovo vettore for (i = 0; i < (prev_costi.length - 1); i++) { for (j = i + 1; j < prev_costi.length; j++) { if (prev_costi[i] < prev_costi[j]) { // scambi scambio_costi(prev_costi, i, j); scambio_titoli(prev_titolo, i, j); scambio_quantita(prev_quantita, i, j); public static boolean[] validi(string[] mag_titolo, double[] mag_prezzo, * Per risolvere questo quesito ho bisogno di conoscere il costo dei * singoli elementi e di sommare gli elementi a costo minore, finche' il * costo totale rimane <= 1000. Poiche' l'ordine e' decrescente, gli * elementi a costo minore stanno nelle ultime posizioni. boolean[] prev_validi = new boolean[prev_titolo.length]; // per calcolare il costo dei singoli elementi sfrutto la funzione prev_costi double costo_totale = 0; int i = 0; // NOTA : inizio dall'ultimo elemento for (i = prev_costi.length-1; i >=0 ; i--) { costo_totale += prev_costi[i]; // controllo se l'elemento e' valido, cioe' se non fa salire // il costo totale oltre i 1000 if (costo_totale <= 1000) { prev_validi[i] = true; else { prev_validi[i] = false; return prev_validi; // soluzione alternativa public static boolean[] validi_2(string[] mag_titolo, double[] mag_prezzo, * Per risolvere questo quesito ho bisogno di conoscere il costo dei * singoli elementi e di sommare gli elementi a costo minore, finche' il * costo totale rimane <= 1000. Poiche' l'ordine e' decrescente, gli * elementi a costo minore stanno nelle ultime posizioni. boolean[] prev_validi = new boolean[prev_titolo.length];

// per calcolare il costo dei singoli elementi sfrutto la funzione prev_costi // il costo totale puo' essere calcolato con la funzione costo double costo_totale = costo(mag_titolo, mag_prezzo, int i = 0; // NOTA : inizio dal primo elemento e li sottraggo al preventivo, // finche' il totale non e' <= 1000 while (costo_totale>1000) { costo_totale -= prev_costi[i]; prev_validi[i] = false; i++; // tutti gli altri elementi saranno validi for (; i < prev_costi.length ; i++) { prev_validi[i] = true; return prev_validi; public static boolean[] validi_3(string[] mag_titolo, double[] mag_prezzo, * Per risolvere questo quesito ho bisogno di conoscere il costo dei * singoli elementi e di sommare gli elementi a costo minore, finche' il * costo totale rimane <= 1000. Poiche' l'ordine e' decrescente, gli * elementi a costo minore stanno nelle ultime posizioni. boolean[] prev_validi = new boolean[prev_titolo.length]; // per calcolare il costo dei singoli elementi sfrutto la funzione prev_costi // il costo totale puo' essere calcolato con la funzione costo double costo_totale = costo(mag_titolo, mag_prezzo, // elimino i vari elementi, partendo dal primo, controllando di volta in // volta il costo totale. for (int i = 0; i < prev_costi.length ; i++) { if (costo_totale<=1000) { prev_validi[i] = true; else { prev_validi[i] = false; // in ogni caso, elimino l'elemento corrente costo_totale -= prev_costi[i]; return prev_validi; // main di test, non richiesto dal quesito public static void main(string[] args) { String[] mag_titolo = new String[] {"Cinghia", "Cerchione", "Spazzola", "Freni"; double[] mag_prezzo = new double[] {50, 350, 10, 300; String[] prev_titolo = new String[] {"Cinghia", "Spazzola", "Cerchione"; int[] prev_quantita = new int[] {6, 1, 4; // costo double costo = costo(mag_titolo, mag_prezzo, System.out.println("Il costo totale e' " + costo); // ordinamento ordina(mag_titolo, mag_prezzo, System.out.println("Ordinato "); for (int i=0; i<prev_titolo.length; i++) {

System.out.println(" " + prev_titolo[i] + "\t"+prev_quantita[i]); // validita' boolean[] valid_1 = validi(mag_titolo, mag_prezzo, System.out.print("Validita' (1) ="); for (int i=0; i<valid_1.length; i++) { System.out.print(" " + valid_1[i]); System.out.println(); boolean[] valid_2 = validi(mag_titolo, mag_prezzo, System.out.print("Validita' (2) ="); for (int i=0; i<valid_2.length; i++) { System.out.print(" " + valid_2[i]); System.out.println(); boolean[] valid_3 = validi(mag_titolo, mag_prezzo, System.out.print("Validita' (3) ="); for (int i=0; i<valid_3.length; i++) { System.out.print(" " + valid_3[i]); System.out.println();