|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#81 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Se vuoi imparare a programmare ... devi imparare a ragionare! Intanto mi è venuto in mente che, in effetti, ci sono 2 modi di gestire l'aggiornamento della variabile 'lung_max'. E uno è un po' più semplice dell'altro. Modo 1: Codice:
ricerca di 't':
a r t t t t o p t t w e
lung 0 0 1 2 3 4 0 0 1 2 0 0
lung_max 0 0 0 0 0 0 4 4 4 4 4 4
Codice:
ricerca di 't':
a r t t t t o p t t w e
lung 0 0 1 2 3 4 0 0 1 2 0 0
lung_max 0 0 1 2 3 4 4 4 4 4 4 4
Cosa puoi notare da quest'ultimo schemino?? Diverse cose: a) Ogni volta che trovi il carattere richiesto, devi incrementare 'lung'. b) Ogni volta che non trovi il carattere richiesto, devi azzerare 'lung'. c) La variabile 'lung_max' la devi aggiornare quando 'lung' è maggiore di 'lung_max'.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#82 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
c'ho provato ma sarà sbagliatissimo
int _strch2_(const char *s, int c) { int lung=0; int lung_max=0; int n1 = strlen (s1); for(i=0;i<n1;i++){ if(s1[i]==s1[i++]){ ++lung;} else{ lung=0;} if(lung_max<lung){ lung=lung_max;} |
|
|
|
|
|
#83 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Ripeto (anche se l'ho spiegato prima): Se il carattere è uguale a quello richiesto, incrementi 'lung'. Inoltre se 'lung' è maggiore di 'lung_max' allora aggiorni 'lung_max'. Se il carattere non è uguale a quello richiesto, azzeri 'lung'.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#84 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
Infatti non va per niente bene. Non devi verificare se 2 caratteri qualunque sono adiacenti, ma devi verificare se un certo carattere ben preciso si trova ripetuto in modo consecutivo e determinare quale è la sequenza più lunga.
UN AIUTINO?? il mio punto di partenza è sempre questo int _strch2_(const char *s, int c) { int lung=0; int lung_max=0; int n1 = strlen (s1); for(i=0;i<n1;i++){ |
|
|
|
|
|
#85 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Se s[i] è uguale a c, allora incrementi 'lung' e se è maggiore di 'lung_max', aggiorni 'lung_max'. Altrimenti azzeri 'lung'.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#86 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
int _strch2_(const char *s, int c)
{ int lung=0; int lung_max=0; int n1 = strlen (s1); for(i=0;i<n1;i++){ if(s[i]==c) { ++lung; if(lung>lung_max){ lung_max=lung;}} else{ lung=0;}} ci siamo ora? perdonami andbin, ma come mai ancora non mi hai mandato a quel paese? |
|
|
|
|
|
#87 | ||
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Solo alcune bazzeccole: - Il parametro è 's', in strlen hai usato s1 - Ti è stato richiesto espressamente di passare int c?? Sarebbe meglio char c - fai ritornare lung_max e chiudi la func. Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
|
|
|
|
|
#88 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
int _strch2_(const char *s, char c)
{ int lung=0; int lung_max=0; int n1 = strlen (s); for(i=0;i<n1;i++){ if(s[i]==c) { ++lung; if(lung>lung_max){ lung_max=lung;}} else{ lung=0;} return lung_max; } è buona ora? ti ringrazio di tutto, ciao |
|
|
|
|
|
#89 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#90 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
ora va bene?
int _strch2_(const char *s, char c) { int lung=0; int lung_max=0; int n1 = strlen (s); for(i=0;i<n1;i++){ if(s[i]==c) { ++lung; if(lung>lung_max){ lung_max=lung;}} else{ lung=0;} return lung_max;} } comq solo quando incollo sul forum non ci sono gli spazi, sennò quando uso il compilatore li metto ovunque. invece quando lo posto qui mi mette tutto appiccicato |
|
|
|
|
|
#91 | ||
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Quote:
Così si scrive: Codice:
int _strch2_(const char *s, char c)
{
int lung=0;
int lung_max=0;
int n1 = strlen (s);
for(i=0;i<n1;i++) {
if(s[i]==c) {
++lung;
if(lung>lung_max) {
lung_max=lung;
}
}
else {
lung=0;
}
}
return lung_max;
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
|
|
|
|
|
#92 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
E' L'ULTIMO
void _gen_labirinto_(char a[][]. int m, int n); la funzione prende da input una matrice non inizializzata, e le sue dimensioni (m e n). Modifica i suoi elementi come segue: tramite un generatore pseudocasuale pone casualmente nelle varie posizioni della matrice o il carattere #(che indica che la posizione corrisponde a un pezzo di muro del labirinto) o il carattere .(che indica una posizione in cui si puo passare per uscire dal labirinto). La funzione stampa in output per righe la matrice cosi ottenuta. Il labirinto prodotto in outpute deve sempre essere risolubile: deve sempre esserci un percorso da una cella vuota nell'ultima riga in alto ad una cella vuota della riga in basso. la persona che esplora il labirinto si suppone che possa muoversi solo sulle celle vuote in orizzontale e verticale. ad esempio se si ha in input una matrice composta da 10*10 elementi il programma dovrebbe riempire la matrice nel modo a sinistra. la soluzione del percorso è riportata a destra. ASSUMIAMO CHE a[i][j] sia la cella della riga i e della colonna j. Labirinto: ##.#..#### #...##..## .#.##....# #..###.### ##.#.#.#.# #...#..### #.#..#...# ##.#.#.#.# #....#.#.# ###.#..### Soluzione ##°#..#### #.°.##..## .#°##....# #.°###.### ##°#.#.#.# #.°°#..### #.#°°#...# ##.#°#.#.# #...°#.#.# ###°#..### sicuramente non sono allineati bene, ma basta che rendano l'idea |
|
|
|
|
|
#93 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
A parte questo, il problema è da suddividere in 2 fasi: 1) Creazione del labirinto 2) Soluzione del labirinto Per la creazione c'è il problema che generandolo in modo casuale, non è detto che si ottenga un labirinto percorribile secondo le richieste. Si possono comunque fare più tentativi fino a quando non si trova un labirinto risolvibile. Per la soluzione del labirinto, bisogna valutare come ci si può muovere all'interno del labirinto. La prima cosa che mi viene in mente: l'ipotetica persona che esplora il labirinto deve viaggiare sempre e solo nella direzione dell'uscita o può anche eventualmente passare per una strada che "torna indietro"???
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#94 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
non lo so, io so quello che sai tu,perchè il testo l'ho copiato e incollato, non me l'hanno spiegato
sembra abbastanza difficile però |
|
|
|
|
|
#95 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Per questo esercizio è bene mettere giù diverse funzioni più il main.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#96 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
vabbè lo salto questo, non fa niente
|
|
|
|
|
|
#97 | |
|
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
Quote:
mettiamo il caso che la matrice sia di 30 righe x 10 colonne si genera un numero random da 0 a 9 (n) e si rende percorribile mat[0][n] matrice[0][n]='.' si genera un numero random da 1 a 3: se il numero è 1 e non ci si trova sul bordo sinistro si va a sinistra (mat[0][n-1]='.') altrimenti si genera un altro numero random e si ripete se è 2 se ci si trova alla fine si esce dal ciclo altrimenti si va giu (mat[1][n]='.') se è 3 e non ci si trova sul bordo destro si va a destra (mat[0][n+1]) altrimenti si genera un altro numero random e si ripete. ora vado a provare Ultima modifica di AngeL) : 17-11-2006 alle 16:55. |
|
|
|
|
|
|
#98 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
io non ci riuscirei mai, se magari ti diverti a farlo poi puoi postarlo..
|
|
|
|
|
|
#99 | |
|
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
Quote:
|
|
|
|
|
|
|
#100 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
no, proprio nel fare il ragionamento, per pensare alla soluzione
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:24.



















