Tags:
tag this topic
create new tag
view all tags
---++ Domande Homework 6 - Ore di Filosofia - backtrack * Inserite le vostre domande usando la form [[#form][in fondo alla pagina]] * Vedi anche HomeWork6, SoluzioneHomework6, RisultatiHomework6. ---- %TOC% ---- ---+++ 2 Domande 1-Noi oltre alle varie funzioni in stile "8regine" dobbiamo anke farne una ricorsiva, per così dire "principale", in modo tale ke venga stampata alla fine solo la mossa finale? 2-Nel programma delle 8regine definiamo le colonne della matrice e poi giustamente la mettiamo come argomento delle varie funzioni. Ma qui come facciamo se nn sappiamo a priori quanto è grande la matrice, ovvero quante colonne ha? Se nella funzione metto "m[][]" mi da errore alla compilazione. -- Comment added by Users.DavidVulpetti on 12 Dec 2003 ---- ---+++ Inizio della ricerca e Output Mi chiedevo se l'1 dovesse andare per forza nell'angolo in alto a sinistra o se potesse essere messo in un qualsiasi punto della matrice. In altre parole, dobbiamo considerare anche il fatto che l'1 possa cominciare in un punto arbitrario o lo si puo' far partire sempre dall'angolo superiore sinistro? Inoltre io sono riuscito ad ottenere una matrice funzionante di 5x5, tuttavia è diversa da quella riportata nel testo dell'esercizio, quindi presumo che sia possibile ottenere una matrice completa in più modi differenti. Immagino che ogni "variazione sul tema" sia buona, giusto? Ultima cosa: Nel testo dell'esercizio si dice che in una matrice 4x4 è possibile infilare 8 numeri, il mio codice ne trova solo 5, questo fatto è perchè il codice è sbagliato o il motivo risiede nella prima domanda che ho fatto? (ovvero in questo caso l'1 non deve partire dall'angolo superiore sinistro) -- Comment added by Users.StefanoNoffke on 13 Dec 2003 ---- ---+++ Gestione errori Bisogna controllare in qualche modo l'input che legge la dimensione dellla matrice nxn? tipo non accettare valori negativi o sotto un certo numero (tipo n deve essere maggiore di 0) -- Comment added by Users.StefanoNoffke on 13 Dec 2003 ---- ---++++ Re: Gestione errori Non gestite errori, viene letto un solo numero intero (la dimensione del lato quadrato) ---++++ Re: 2 Domande 1) non ho capito la domanda :-( 2) Per indirizzare una matrice di cui non si conoscono le dimensioni si può usare un vettore di N^2 elementi e calcolare la posizione dell'elemento (x,y) calcolando l'indice (y*lato---+x). ---++++ Re: Inizio della ricerca e Output Se leggi attentamente l'esercizio vedrai che c'e' scritto "si comincia da una posizione arbitraria" Una qualsiasi matrice va bene. -- Comment added by Users.AndreaSterbini on 13 Dec 2003 ---- ---+++ Il vettore Allora è necessario un vettore dinamico per gestire il campo. Come lo dichiaro se N lo prendo da tastiera? Non esiste allo stesso modo la possibilità di lavorare direttamente su una matrice dinamica? -- Comment added by Users.JacopoBusso on 15 Dec 2003 ---- Non mi dica che la soluzione è usare una lista con i valori di ciascuna posizione perchè mi sembra sprecata una lista per una cosa del genere! -- Comment added by Users.JacopoBusso on 15 Dec 2003 ---- ---+++ Matrice Come si fa a definire una matrice n x n dopo aver letto da input il valore di n? il compilatore mi dice che non si puo fare... -- Comment added by Users.MorenoDeVincenzi on 15 Dec 2003 ---- ---++++ Re: Il vettore Lo dichiari come puntatore al tipo dell'elemento e usi malloc per allocarlo. ---++++ Re: Matrice Vedi sopra (allocate un vettore di N^2 elementi) -- Comment added by Users.AndreaSterbini on 15 Dec 2003 ---- ---+++ Matrice Scusi la persistenza. Ma lo stesso problema si crea quando vado ad inizializzare il vettore, n non e' ancora conosciuto. -- Comment added by Users.MorenoDeVincenzi on 15 Dec 2003 ---- ---+++ Output l'output e' la stampa della matrice ma c'e' anche una newline sotto ad essa o no? -- Comment added by Users.MorenoDeVincenzi on 15 Dec 2003 ---- ---+++ Vari casi <verbatim> Volevo chiedere se il comportamento con gli input 0, 1, 2, 3 è il seguente: input 0: esco input 1: stampo 1 esco input 2: stampo 1 0 (per esempio) 0 0 esco input 3: stampo 0 0 1 (per esempio) 0 0 0 2 0 0 esco Volevo chiedere se devo ottimizzare il prog. se: input>=7: non sono riuscito a controllare il funzionamento del programma perchè ci mette troppo a trovare la soluzione Volevo far notare che: input 4: si riescono a mettere 8 numeri solo se il primo viene messo in una posizione opportuna; credo quindi che la posizione di default migliore da scegliere sia una di quelle che vanno bene per l'input 4; </verbatim> -- Comment added by Users.EmanueleQuattrini on 15 Dec 2003 ---- ---+++ Output giusto Il testo dell'esercizio dice che dobbiamo stampare la soluzione milgiore trovata, significa che in caso di riempimento completo del quadrato dobbiamo stampare obbligatoriamente una delle almeno 4 soluzioni in cui stono stati impiegati meno tentativi? o possiamo anche stamparne una qualunque basta che sia una soluzione Grazie -- Comment added by Users.AlessioDiMauro on 16 Dec 2003 ---- ---++++ Re: Output giusto basta stamparne una (chi ti tice che sono solo 4?) ---++++ Re: Output stampa la matrice seguita da newline (e come senno'?) ---++++ Re: Matrice Come ho detto prima, per allocare una matrice o vettore di dimensioni variabili si usa malloc. -- Comment added by Users.AndreaSterbini on 16 Dec 2003 ---- ---+++ Posizione iniziale la prima cifra deve essere posizionata in modo arbitrario. giusto? ma arbitrariamente per me, cioe' io scelgo dove posizionarla? o devo usare una funzione random per posizionare "a caso" la prima cifra? -- Comment added by Users.MicheleFacecchia on 17 Dec 2003 ---- ---++++ Re: Posizione iniziale Dovete cercare la posizione di partenza che vi dà il percorso che inserisce più valori. Per cercare il numero massimo di valori inseriti bisogna alla peggio esaminare le posizioni che si trovano in uno degli 8 ottanti (dividete la matrice in 8 spicchi) della matrice. Quindi alla peggio N*N/8 (più le caselle sul bordo dello spicchio). E' possibile ridurre il numero di caselle da cui partire in questo modo per ragioni di simmetria (è possibile ribaltare la matrice in 3 modi, lungo le 2 mediane e lungo una diagonale). -- Comment added by Users.AndreaSterbini on 17 Dec 2003 ---- ---++++ Esempio di caselle da esaminare | X | X | X | | | | | X | X | | | | | | X | | | | | | | | | | | | | | | -- Comment added by Users.AndreaSterbini on 17 Dec 2003 ---- ---+++ Non ho capito Potrebbe rispiegare questo punto, non mi è stato molto chiaro. Cosa sono gli ottanti? Ma questa cosa va applicata sempre o solo per i valori inferiori uguali a quattro? Che significa esaminare? Ho il mal di testa :( -- Comment added by Users.JacopoBusso on 17 Dec 2003 ---- Aspetti forse ho capito ma che il prog deve fare i tentativi partendo da tutte le caselle dello spicchio e stampare il caso migliore?!? E' così? Qualcuno ha moment! :( -- Comment added by Users.JacopoBusso on 17 Dec 2003 ---- ---+++ Flash MOB Andate alla pagine Users.FlashMob per sapere cos'è!!! Ps: Scusatemi tanto per OFF - TOPIC -- Comment added by Users.MatteoLaBella on 17 Dec 2003 ---- ---++++ Re: Non ho capito Invece hai capito benissimo. ---++++ Re: Flash MOB Peccato, a quell'ora sono a cena con amici. :-) -- Comment added by Users.AndreaSterbini on 18 Dec 2003 ---- ---+++ Re: Flash Mob Professore non si preoccupi appena posso gli racconto com'è andata....!!! -- Comment added by Users.MatteoLaBella on 18 Dec 2003 ---- ---+++ Non ho capito La mia mente si rifiutava di capire :) -- Comment added by Users.JacopoBusso on 18 Dec 2003 ---- ---+++ Segmentation fault Il dev-C---++ mi da un errore di segmentazione a questa riga: campo[j*n---+k] dove: campo è il vettore dinamico che funziona da matrice j e k contatori di riga e colonna. ho inserito l'istruzione in due cicli annidati per inizializzarla a 0 Non so se l'errore dipende da questo o da come ho inizializzato il vettore. Il vettore lo ho allocato con la malloc ed è della dimensione di lato*lato. A me questo sembra giusto ma non capisco perchè mi da errore quando sul mio fido IDE della Borland va tutto bene :(. -- Comment added by Users.JacopoBusso on 18 Dec 2003 ---- ---+++ Ci risiamo, segmentation fault Penso che debba portare a Lourdes il mio pc. Ho scoperto che è un problema intermittente (prima funzionava, ora ricompilo - ovvio che non ho modificato il codice, ho solo aggiunto i commenti - ora no). E' solo uno sfogo... -- Comment added by Users.DanieleBernardi on 18 Dec 2003 ---- ---+++ Users.FlashMob Per la gioia del Prof. che non so se era una presa in giro, ho aggiornato la pagina dei Users.FlashMob Quindi se volete fateci un salto -- Comment added by Users.MatteoLaBella on 18 Dec 2003 ---- ---+++ Re:Re:Output giusto infatti ho detto una delle almeno 4 non una delle 4 :p volevo sapere però l'output va formattato in qualche maniera (oltre ovviamente a stampare un accapo alla fine di ogni riga) bisogna stampare uno spazio tra una colonna e l'altra o bisogna mettere il numero in un campo di ad esempio 3 caratteri? grazie -- Comment added by Users.AlessioDiMauro on 18 Dec 2003 ---- ---++++ Re: Segmentation fault le dimensioni corrette del blocco di memoria da allocare sono lato*lato*sizeof(int) ---++++ Re: Output giusto Fate come nell'esempio in HomeWork6 . -- Comment added by Users.AndreaSterbini on 19 Dec 2003 ---- ---+++ Segmentation fault Niente anche con la definizione lato*lato*sizeof(int) mi da sempre lo stesso subdolo errore, non so dove sia l'errore! Non riuscirò a consegnarlo corretto purtroppo se mi da quell'errore, però sono incavoltato perchè il resto funziona (non ho ancora fatto il sistema per trovare la migliore soluzione ma è inutile che ci provo se non risolvo il segmentation fault) -- Comment added by Users.JacopoBusso on 19 Dec 2003 ---- E' corretto indirizzare il puntatore ad int come un vettore?<br> In altre parole è lecito parlare di campo[j*n---+k]=0 dove 'campo' è il puntatore? Se non è li l'errore non so dove cercarlo :( -- Comment added by Users.JacopoBusso on 19 Dec 2003 ---- ---+++ Re: segmentation fault I vettori (arrays) sono a tutti gli effetti dei puntatori, per cui per creare un vettore ci sono 2 modi: se sai la dimensione a priori puoi inisizlizzare int vettore[DIMENSIONE]; altrimenti dichiari un puntatore al tipo di dati interessato (int in questo caso), e una volta che sai la dimensione inizializzi lo spazio con malloc in questo modo int * vettore; vettore = malloc(sizeof(int)*dimensione); stesso discorso vale con le matrici multidimensionali, con i dovuti accorgimenti... -- Comment added by Users.StefanoNoffke on 19 Dec 2003 ---- ---+++ Output Matrice Quindi in sostanza l'output della matrice deve essere una matrice n*n con ogni intero scritto in uno spazio di 3 caratteri (in sostanza nella forma cc1cc2cc3cc4) dove c e' uno spazio? -- Comment added by Users.StefanoGiachetti on 19 Dec 2003 ---- ---+++ I/O da quello che mi sembra di capire l'input lo riceviamo dall'utente e l'output deve essere come quello nell'esempio, pero' nn mi e' chiaro quanti spazi bisogna mettere tra l'input e la matrice. io ho fatto una cosa del genere input (\n) [matrice] (\n) va bene? boh adios ocram -- Comment added by Users.MarcoValerioBarbera on 20 Dec 2003 ---- ---+++ Ancora seg fault Grazie Stefano, ho fatto proprio così ma quando vado ad indirizzare il puntatore il debugger mi da l'errore. :( è davvero strano comunque ci passerò le notti insonni finchè non risolvo :) -- Comment added by Users.JacopoBusso on 20 Dec 2003 ---- E' corretto il casting per forzare il tipo int al puntatore, che di norma è void, restituito dalla malloc? Ho fatto così: int* campo; <br> campo=(int*)malloc (sizeof(int)*lato*lato); io credo di sì. -- Comment added by Users.JacopoBusso on 20 Dec 2003 ---- ---+++ Ok risolto Il problema era del debugger non del programma! :) non so perchè il debugger del dev-c---++ (o per lo meno il mio!) quando si inseriscono valori dalla tastiera invece di considerare quelli genera a caso un numero siderale che chiaramente non poteva essere adatto per costruire un vettore. Me ne sono accorto solo ora perchè davo per scontato che il valore che prendeva era corretto, ma poi per puro scrupolo ho controllato ed era quello. Possibile? -- Comment added by Users.JacopoBusso on 20 Dec 2003 ---- ---+++ Posizione iniziale Per quanto riguarda il sistema con la la migliore soluzione bisogna adottarlo sempre oppure solo per le matrici di piccole dimensioni (ad esempio con lato pari a 3 o 4). -- Comment added by Users.JacopoBusso on 20 Dec 2003 ---- ---+++ 9 o piu' colonne ho finito il programma, funziona tutto alla perfezione (credo) fino a quando uso matrici 8*8, (ci mette al massimo una manciata di secondi), ma appena do un valore leggermente piu' alto (anche solo 9) il programma si blocca (probabilmente per via dei numerosi calcoli che deve fare), la cosa pero' mi "puzza" un po' nel senso che io mi aspettavo un'aumento graduale del tempo di esecuzione, mentre invece tra 8*8 e 9*9 c'e' una distanza abissale (quest'ultimo l'ho runnato due ore fa e ancora nn ha finito.. :P), colpa delle funzioni esponenziali o del fatto che ho creato un codice che fa troppe cose inutili? mi piacerebbe sapere se a voi succede la stessa cosa... adios ocram -- Comment added by Users.MarcoValerioBarbera on 20 Dec 2003 ---- ---+++ ceil() Possiamo usare la ceil() della libreria math.h? -- Comment added by Users.JacopoBusso on 20 Dec 2003 ---- ---+++ Re: 9 o più colonne Io comincio ad avere problemi da 10 colonne in su, ma questo dipende molto dal tipo di processore che si ha. ad ogni modo l'aumento di calcoli che deve fare è esponenziale (ad un fattore molto elevato) per cui già da valori di n di 8 la differenza di 1 si fa sentire parecchio... -- Comment added by Users.StefanoNoffke on 20 Dec 2003 ---- ---++++ Re: ceil() Sì -- Comment added by Users.AndreaSterbini on 20 Dec 2003 ---- ---+++ liste di adiacenza scusate x la domanda forse stupida... Ma si devono usare le liste di adiacenza? -- Comment added by Users.MarcoGrechi on 20 Dec 2003 ---- ---+++ alberi ( o liste di adiacenza? ) riprendendo la domanda sulle liste di adiacenza, non e meglio usare gli alberi? -- Comment added by Users.RiccardoManni on 20 Dec 2003 ---- ---++++ Re: liste di adiacenza dovete simulare i tre pioli ... che si comportano esattamente come una stack (pila) ... quindi conviene usare ... (indovinate). -- Comment added by Users.AndreaSterbini on 21 Dec 2003 ---- ---+++Pioli ? Scusi Prof., forse mi sono perso qualcosa, ma che c'entrano i 3 pioli ? Intende per immagazzinare i dati del filo d'arianna della badtrack ? In questo caso non basta tenerne uno, intendo quello che di volta in volta risulta maggiore come numero di elementi tra il tentativo appena compiuto ed un eventuale precedente ? -- Comment added by Users.LucaMarozzini on 21 Dec 2003 ---- ---+++ output per quanto riguarda l'output volevo sapere se dopo aver stampato la soluzione sotto la matrice c'e' bisogno di un invio. grazie -- Comment added by Users.MorenoDeVincenzi on 21 Dec 2003 ---- ---+++ Funzionamento E' possibile che per trovare la soluzione per la matrice 5x5 il mio prog. impieghi diversi minuti???? -- Comment added by Users.MorenoDeVincenzi on 21 Dec 2003 ---- ---+++ Strano Il computer con 9 come lato non mi trova soluzioni(almeno in tempi possibili), mentre per 10 ci mette veramente poco. Qualcuno sa il perchè? -- Comment added by Users.JacopoBusso on 21 Dec 2003 ---- Mi corrego trova soluzione ma ci mette un po' (circa 15 min). Professore quando corregerà i compiti quanto tempo puo impiegare al massimo il pc per una ricerca prima che voi interrompiate l'esecuzione? Quale numero al massimo inserirà? -- Comment added by Users.JacopoBusso on 21 Dec 2003 ---- ---+++ Sigh Stavolta non c'è la faccio proprio a consegnare, e dire che gli stack li avevo usati già per la torre di Hanoi... Ma non è detto l'ultimo invio ;) -- Comment added by Users.LucaMarozzini on 21 Dec 2003 ---- ---+++ Forse è un po' tardi... per finire il prog e consegnare ma tentare non nuoce. Volevo sapere se è possibile passare un array di struct bidimensionale ad una funzione... sto impazzendo con i segmentation fault... -- Comment added by Users.RiccardoManni on 21 Dec 2003 ---- ---++++ Re: Pioli? accidenti ... ero rimasto alle torri di Hanoi ... che scemo! -- Comment added by Users.AndreaSterbini on 22 Dec 2003 %COMMENT{button=" Aggiungete la domanda " mode="before"}% <a name="form"> * Ricordatevi di dare un titolo alla vostra domanda come segue: <verbatim> <tre spazi>---+++<spazio>Titolo della domanda "non dovete mettere <>" Testo della domanda </verbatim>
E
dit
|
A
ttach
|
Watch
|
P
rint version
|
H
istory
: r49
<
r48
<
r47
<
r46
<
r45
|
B
acklinks
|
V
iew topic
|
Ra
w
edit
|
M
ore topic actions
Topic revision: r49 - 2003-12-30
-
AndreaSterbini
Log In
or
Register
Programmazione1/AA0506/PZ Web ...
Programmazione1/AA0506/PZ Web
Programmazione1/AA0506/PZ Web Home
Users
Groups
Index
Search
Changes
Notifications
Statistics
Preferences
User Reference ...
User Reference
ATasteOfTWiki
TextFormattingRules
TWikiVariables
FormattedSearch
TWikiDocGraphics
TWikiSkinBrowser
InstalledPlugins
ChangeEmailAddress
ChangePassword
ResetPassword
Prenotazioni esami
Laurea Triennale ...
Laurea Triennale
Algebra
Algoritmi
Introduzione agli algoritmi
Algoritmi 1
Algoritmi 2
Algoritmi per la
visualizzazione
Architetture
Prog. sist. digitali
Architetture 2
Basi di Dati
Basi di Dati 1 Inf.
Basi di Dati 1 T.I.
Basi di Dati (I modulo, A-L)
Basi di Dati (I modulo, M-Z)
Basi di Dati 2
Calcolo
Calcolo differenziale
Calcolo integrale
Calcolo delle Probabilitą
Metodi mat. per l'inf. (ex. Logica)
canale AD
canale PZ
Programmazione
Fond. di Programmazione
Metodologie di Programmazione
Prog. di sistemi multicore
Programmazione 2
AD
EO
PZ
Esercitazioni Prog. 2
Lab. Prog. AD
Lab. Prog. EO
Lab. Prog. 2
Prog. a Oggetti
Reti
Arch. di internet
Lab. di prog. di rete
Programmazione Web
Reti di elaboratori
Sistemi operativi
Sistemi Operativi (12 CFU)
Anni precedenti
Sistemi operativi 1
Sistemi operativi 2
Lab. SO 1
Lab. SO 2
Altri corsi
Automi, Calcolabilitą
e Complessitą
Apprendimento Automatico
Economia Aziendale
Elaborazione Immagini
Fisica 2
Grafica 3D
Informatica Giuridica
Laboratorio di Sistemi Interattivi
Linguaggi di Programmazione 3° anno Matematica
Linguaggi e Compilatori
Sistemi Informativi
Tecniche di Sicurezza dei Sistemi
ACSAI ...
ACSAI
Computer Architectures 1
Programming
Laurea Magistrale ...
Laurea Magistrale
Percorsi di studio
Corsi
Algoritmi Avanzati
Algoritmica
Algoritmi e Strutture Dati
Algoritmi per le reti
Architetture degli elaboratori 3
Architetture avanzate e parallele
Autonomous Networking
Big Data Computing
Business Intelligence
Calcolo Intensivo
Complessitą
Computer Systems and Programming
Concurrent Systems
Crittografia
Elaborazione del Linguaggio Naturale
Estrazione inf. dal web
Fisica 3
Gamification Lab
Information Systems
Ingegneria degli Algoritmi
Interazione Multi Modale
Metodi Formali per il Software
Methods in Computer Science Education: Analysis
Methods in Computer Science Education: Design
Prestazioni dei Sistemi di Rete
Prog. avanzata
Internet of Things
Sistemi Centrali
Reti Wireless
Sistemi Biometrici
Sistemi Distribuiti
Sistemi Informativi Geografici
Sistemi operativi 3
Tecniche di Sicurezza basate sui Linguaggi
Teoria della
Dimostrazione
Verifica del software
Visione artificiale
Attivitą complementari
Biologia Computazionale
Design and development of embedded systems for the Internet of Things
Lego Lab
Logic Programming
Pietre miliari della scienza
Prog. di processori multicore
Sistemi per l'interazione locale e remota
Laboratorio di Cyber-Security
Verifica e Validazione di Software Embedded
Altri Webs ...
Altri Webs
Dottorandi
Commissioni
Comm. Didattica
Comm. Didattica_r
Comm. Dottorato
Comm. Erasmus
Comm. Finanziamenti
Comm. Scientifica
Comm Scientifica_r
Corsi esterni
Sistemi Operativi (Matematica)
Perl e Bioperl
ECDL
Fondamenti 1
(NETTUNO)
Tecniche della Programmazione 1° modulo
(NETTUNO)
Seminars in Artificial Intelligence and Robotics: Natural Language Processing
Informatica generale
Primo canale
Secondo canale
II canale A.A. 10-11
Informatica
Informatica per Statistica
Laboratorio di Strumentazione Elettronica e Informatica
Progetti
Nemo
Quis
Remus
TWiki ...
TWiki
Tutto su TWiki
Users
Main
Sandbox
Home
Site map
AA web
AAP web
ACSAI web
AA2021 web
Programming web
AA2021 web
AN web
ASD web
Algebra web
AL web
AA1112 web
AA1213 web
AA1920 web
AA2021 web
MZ web
AA1112 web
AA1213 web
AA1112 web
AA1314 web
AA1415 web
AA1516 web
AA1617 web
AA1819 web
Old web
Algo_par_dis web
Algoreti web
More...
PZ Web
Create New Topic
Index
Search
Changes
Notifications
RSS Feed
Statistics
Preferences
View
Raw View
Print version
Find backlinks
History
More topic actions
Edit
Raw edit
Attach file or image
Edit topic preference settings
Set new parent
More topic actions
Account
Log In
Register User
Questo sito usa cookies, usandolo ne accettate la presenza. (
CookiePolicy
)
Torna al
Dipartimento di Informatica
E
dit
A
ttach
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback