Benvenuto!
Accedi
o
registrati
.
11-12-2019, 15:40:22
Home
CDL Informatica
UniCT
CEA
Prof
Help
Search
Calendar
Login
Register
Forum Informatica Unict
»
LAUREA TRIENNALE (D.M. 270/04)
»
I anno
»
Programmazione 2, 9 CFU
(Moderators:
Rosalba Giugno
,
Alfredo Pulvirenti
,
Simone Faro
) »
ESERCIZIO 11 (Ricorsione)
Pages: [
1
]
Go Down
« precedente
successivo »
Print
Author
Topic: ESERCIZIO 11 (Ricorsione) (Read 910 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
kingborn86
Matricola
Offline
Posts: 59
ESERCIZIO 11 (Ricorsione)
«
on:
17-04-2009, 16:16:26 »
salve a tutti, ho un problemino con questo esercizio!
Code:
Scrivere un programma java ricorsivo che riordini un array A di interi, ponendo i valori pari prima di quelli dispari
Posto la mia soluzione, anche se non riesco a gestire il caso nel quale il numero sia dispari, e deve essere inserito alla fine dell'array.
Non trattandosi di una lista, non ho possibilità di inserire in coda, e la cosa si complica decisamente!
Code:
public static void riordina ( int [] A, int i, int [] B)
{
if (i<A.length)
{
if (A[i] % 2 == 0)
{
B[i]=A[i];
riordina (int [] A, ++i, int [] B);
}
else
{
riordina (int [] A, ++i, int [] B);
}
}
}
Logged
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
Offline
Gender:
Posts: 4.475
Più grande è la lotta, e più è glorioso il trionfo
Re:ESERCIZIO 11 (Ricorsione)
«
Reply #1 on:
18-04-2009, 00:09:52 »
Posto la mia soluzione
Code:
//ordina l'array A in cui le posizioni valide vanno da start (incluso) a end (escluso)
//l'utente programmatore lo richiama tramite ordinaPrimaPari (array, 0, array.length);
public static void ordinaPrimaPari (int [] A, int start, int end)
{
//la quantità "end - start" è quella che diminuisce di 1 unità ad ogni passo ricorsivo
//il caso base è quando al massimo tra start ed end c'è 1 elemento.
if (end - start > 1)
{
//se il primo elemento è pari, esso è già ordinato e procedo col passo ricorsivo sul resto dell'array
if ((A [start] % 2) == 0)
ordinaPrimaPari (A, start + 1, end);
else
{
int k = start + 1;
//cerca il primo elemento pari a partire da "start"
while (k < end && (A [k] % 2) == 1) k++;
//se non c'è, sono tutti numeri dispari e l'array è già ordinato
if (k < end)
{
//se c'è, si ricorda di tale numero pari
int p = A [k];
//fa scorrere tutti gli elementi dispari da "start" fino a
//quel pari di una posizione a destra
for (i = k; i > start; i--) A [k] = A [k - 1];
//e mette tale numero pari al primo posto
A [start] = p;
//infine richiama il metodo ricorsivamente sul resto
//dell'array escludendo il primo elemento
ordinaPrimaPari (A, start + 1, end);
}
}
}
}[/quote]
Logged
La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.
In tutto, amare e servire.
✚
ن
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...
...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...
▶
YouTube
❾
9GAG
ⅱ
anobi
i
S
Steam
☺
T.B.o.I. Wiki
[
]
Lezioni private
ʼ
Albo d'Ateneo
Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il
Regolamento
Crasher
Apprendista Forumista
Offline
Gender:
Posts: 417
Re:ESERCIZIO 11 (Ricorsione)
«
Reply #2 on:
18-04-2009, 10:40:24 »
Ho fatto 2 versioni di questo esercizio...
il primo che è mezzo bubblesort e passo un solo parametro al metodo
oppure il secondo un po' + generico.
Sapete se il prof accetterebbe il primo? Confermo però che nn è molto ricorsivo, ma di fatto lo è
MAIN
Code:
public class Esercizio11 {
public static void main(String args[]) {
int[] A = {1,2,3,4,5,6};
// Stampa
for (int i = 0; i<A.length; i++)
System.out.print(A[i] + "\t");
// Metodo
metodo(A);
//metodo(A,0);
System.out.println ();
// Ristampa
for (int i = 0; i<A.length; i++)
System.out.print(A[i] + "\t");
}
1° metodo
Code:
// 2 modi diversi x scrivere lo stesso metodo...
public static void metodo(int[] A){
if ( A.length == 0)
System.out.println ("Vettore Vuoto!");
else if ( A.length > 1){
// Mezzo BubbleSort
for (int i = 0; i<A.length-1; i++)
if ( A[i] %2 == 0 && A[i+1] %2 != 0){
int tmp = A[i];
A[i] = A[i+1];
A[i+1] = tmp;
metodo (A);
}
}
}
2° metodo
Code:
/*public static void metodo(int[] A, int i){
if ( A.length == 0)
System.out.println ("Vettore Vuoto!");
else if ( A.length > 1 && i<A.length-1){
if ( A[i] %2 == 0 && A[i+1] %2 != 0){
int tmp = A[i];
A[i] = A[i+1];
A[i+1] = tmp;
metodo (A,i);
}
// rifaccio il metodo... nel caso in cui ci siano 2 dispari consecutivi
metodo (A,++i);
}
}*/
} // end class
Logged
Diventa ciò che sei nato per essere
Vivynz
Forumista Eroico
Offline
Gender:
Posts: 2.033
File reality.sys corrupted, Reboot Universe? Y/N
Re:ESERCIZIO 11 (Ricorsione)
«
Reply #3 on:
18-04-2009, 11:34:28 »
io l'ho fatto così però non si mantiene l'ordine dei numeri dispari..anche se il prof stesso ha detto che se non è specificato..possiamo "fare finta di niente"
Code:
public static void riordina(int[] array,int da,int a)
{
if(a-da>0)
{
if(array[da]%2==0)
riordina(array,da+1,a);
else
{
int temp=array[da];
for(int i=da+1;i<a;i++)
array[i-1]=array[i];
array[a-1]=temp;
riordina(array,da+1,a);
}
}
else
return;
}
Logged
L'odrine delle lttere dnetro una praorla non è ipmortatne, la sloa cosa ipmortatne è che la pmria e l'utlima ltteera sinao nel potso giutso. Il rseto può essree in un dsiodrine più totlae e voi ptoerte smerpe lggeree sneza porblmea.
Pages: [
1
]
Go Up
Print
« precedente
successivo »
Jump to:
Please select a destination:
-----------------------------
Area Ufficiale
-----------------------------
=> Annunci Ufficiali
=> Segreteria Didattica
=> Aiuto, proposte e commenti
=> Stages e progetti finali
=> C.O.F. Centro Orientamento e Formazione
=> Messaggi (d)agli amministratori del forum
-----------------------------
LAUREA TRIENNALE (D.M. 270/04)
-----------------------------
=> I anno
===> Architettura degli Elaboratori, 9 CFU
===> Elementi di Analisi Matematica, 12 CFU
===> Fondamenti di Informatica, 9 CFU
===> Matematica Discreta, 12 CFU
===> Programmazione 1, 9 CFU
===> Programmazione 2, 9 CFU
=> II anno
===> Algoritmi, 9 CFU
===> Basi di Dati, 9 CFU
===> Fisica, 9 CFU
===> Ingegneria del Software, 9 CFU
===> Inglese, 3 e 6 CFU
===> Interazione e Multimedia, 9 CFU
===> Sistemi Operativi, 9 CFU
=> III anno
===> Calcolo Numerico, 6 CFU
===> Formazione Numerica, 6 CFU
===> Introduzione all'Analisi dei Dati, 9 CFU
===> Metodi Matematici e Statistici, 6 CFU
===> Reti di Calcolatori, 9 CFU
===> Tecniche di Programmazione Concorrente e Distribuita, 9 CFU
===> Teoria dell'Informazione e Crittografia, 9 CFU
=> III anno - Materie a scelta (crediti liberi)
===> Computer Forensics, 6 CFU
===> Computer Graphics, 9 CFU
===> Digital Game Development, 6 CFU
===> GPGPU/CUDA, 6 CFU
===> Informatica Musicale, 6 CFU
===> LAP 1: programmazione C/C++ 6 CFU
===> LAP 2: Programmazione Android, 6 CFU
===> Sistemi Centrali, 6 CFU
===> Startup d'impresa e Modelli di Business, 6 CFU
===> Internet Security 9 CFU
===> Social Media Management, 6 CFU
=> Corsi disattivati - Vecchio curriculum
===> E-Commerce, 6 CFU
===> Legislazione Informatica, 6 CFU
===> Teoria della Computabilità, 9 CFU
-----------------------------
LAUREA MAGISTRALE
-----------------------------
=> I ANNO
===> Intelligenza Artificiale e Lab, 9 CFU
===> Algoritmi e Complessità, 9 CFU
===> Computer Vision, 9 CFU
===> Crittografia, 9 CFU
===> Fondamenti e Linguaggi per la Programmazione Distribuita
===> Inglese Scientifico, 3 CFU
===> Metodi analitici per l'informatica, 6 CFU
===> Metodi Matematici per l'Ottimizzazione (Corso Integrato), 12 CFU
===> Multimedia, 9 CFU
===> Sicurezza dei Sistemi Informatici 9 CFU
===> Computer Security, 9 CFU
=> II ANNO
===> Machine Learning 6 CFU
===> Teoria della Computabilità, 9 CFU
===> Analisi e Gestione dei Dati, 9 CFU
===> Compilatori, 9 CFU
===> Computazione Naturale e BioIspirata, 6 CFU
===> Introduzione alla Bioinformatica, 9 CFU
===> Linguaggi Formali e Applicazioni, 9 CFU
===> Logica Computazionale, 9 CFU
===> P2P & Wireless Networks, 9 CFU
===> Pattern Recognition, 9 CFU
===> Sistemi Distribuiti, 9 CFU
===> Sistemi dedicati e laboratorio, 9 CFU
===> Web Reasoning
=> Corsi disattivati - Vecchio curriculum
===> Fisica moderna per l'informatica, 6 CFU
===> Linguaggi di Programmazione, 9 CFU
===> Protocolli di Rete
===> Teoria dei Codici, 6 CFU
-----------------------------
Vecchi ordinamenti ad esaurimento
-----------------------------
=> Laurea Triennale (D.M. 509/00)
===> Algoritmi 1
===> Algoritmi 2
===> Basi Teoriche dell'Informatica
===> Economia Aziendale
===> Fisica 1, 6 CFU
===> Fisica 2, 6 CFU
===> Fisica 3
===> Formazione Analitica 1
===> Formazione Analitica 2
===> Formazione Discreta 1
===> Formazione Discreta 2
===> J2ME
===> Lab. Amministrazione di Sistemi
===> Laboratorio di Interazione
===> Modelli Matematici
===> Multimedia per Dispositivi Mobile
===> Progetto Software
===> Reti 1, 6 CFU
===> Sicurezza dei Sistemi Informatici 1
===> Sistemi Distribuiti 1
===> Teoria dei Grafi
===> Usabilità ed Estetica del Web
===> Web Programming
=> Laurea Specialistica (D.M. 509/00)
===> Algoritmi 3
===> Analisi Numerica
===> Complessità
===> Computabilità
===> Data analysis e management
===> Ingegneria del software 2
===> Linguaggi Formali
===> Metodi algoritmici per l'ottimizzazione combinatoria
===> Programmazione Funzionale
===> Reti di Calcolatori 2
===> Ricerca Operativa
===> Sistemi Distribuiti 2
-----------------------------
Dottorandi
-----------------------------
=> Wall
=> Events
-----------------------------
Area Studenti
-----------------------------
=> Agorà
=> L'angolo del tecnico
=> Il Mercatino degli studenti
=> Software
===> -vecchia catalogazione [sarà rimossa a breve]-
=====> Proprietario
=====> Free Software
=====> Open Source
===> Approfondimenti
===> News
===> Studio
===> Videogiochi
===> Networking e telecomunicazioni
===> Sviluppo
===> Ufficio e produttività
===> Sistemi Operativi
=====> Microsoft Windows
=====> GNU/Linux, Unix e BSD
=====> Mac OS X
=====> Windows Phone
=====> Android
=====> iOS
=====> Altri
===> Eventi, conferenze, concorsi
=> Microsoft Student Partner - Avvisi e informazioni
=> ERASMUS/borse di studio internazionali
Caricamento in corso...