Page 3 of 3
Re: Aiuto programmi per domani ! :)
Posted: Sat Oct 29, 2011 6:48 pm
by alb3rt0
White_Shark wrote:Ho capito cosa intendi, solo che non posso aiutarti visto che non l'ho capito, per quello chiedo a voi se riuscite a spiegarmelo. Eseguendolo però funziona!
hai capito o non hai capito?
funziona o ti da segmentation fault?
non ti seguo più
prova a scrivere una stringa su carta e ad eseguire l'algoritmo che hai scritto e magari riesci a capire cosa non va
Posted: Sat Oct 29, 2011 8:10 pm
by White_Shark
Ho capito cosa intendi dire, però non posso aiutarti visto che non ho capito il codice scritto.
Eseguendolo funziona senza errori.
Ho provato ma verso la fine mi inchiodo !

Posted: Sat Oct 29, 2011 8:43 pm
by alb3rt0
non puoi aiutarmi a fare cosa?
sei tu quello che deve fare gli esercizi
pensavo fosse codice tuo!
fare copia, incolla e compila è inutile.
Posted: Sat Oct 29, 2011 9:11 pm
by alb3rt0
Coar wrote:che palle...
dargli la soluzione non lo aiuta e questi esercizi non sono difficili.
White_Shark wrote:Eseguendolo però funziona!
non mi sono documentato sull'uso degli indici negativi.
pensavo che segmentation fault fosse dato da quel codice.
devi capire come trovare l'inizio del suffisso, imposti l'indice e copi fino alla fine.
se ti fai un esempio su carta secondo me ce la puoi fare, scrivere il codice è la parte più semplice poi

Re: Re:
Posted: Sun Oct 30, 2011 2:36 am
by TheJackal
Hooah!!! wrote:TheJackal wrote:Quindi white, sti esercizi a che cazzo servivano? Qui siamo curiosi di capire qual era lo scopo! Anche se mi sa che è come dice Gennaro
Al prof. non interessa sapere se ci riesci a scrivere una nova stringa,
a lui interessa sapere se e come ragioni e come affronti il problema.
Questa è la differenza tra il mondo didattico e in genere (ma non sempre differiscono) il mondo del lavoro.
Se ad esempio invece di scrivere una nuova stringa ti avessi detto di invertire la stesssa senza utilizzare stringa di appoggio (senza comandi utility intrinseche al linguaggio che potresti anche non conoscere) lo devi saper fare o almeno dimostrare di saperlo fare.
Si questo lo so, volevo capire a che punto del programma sono per capire il prof su cosa sta puntando a farli ragionare, ma credo che non siano andati oltre array, controlli condizionali e cicli... quella roba che ti insegnano i primi giorni di corso insomma
Comunque sono d'accordo con Alberto... mettergli qui la soluzione e fargli fare copia/incolla è la cosa più INUTILE che si possa fare.
Deve imparare a ragionarci, acquisire la mentalità giusta e imparare a farli da solo. Più di un consiglio per metterlo sulla buona strada non possiamo fare se no non impara un cazzo.
Posted: Sun Oct 30, 2011 1:13 pm
by White_Shark
Ma infatti ragazzi ho scritto chiaramente che quella soluzione l'ho copiata e ve l'ho scritta in modo che qualcuno potesse spiegarmi i passaggi fatti per imparare il procedimento ed essere in grado di rifarlo, non voglio una soluzione già fatta visto anche che la data "di consegna" è già passata...Mi serve un codice da avere davanti e qualcuno che mi spiega i passaggi fatti, ho già provato 10000 volte a farlo e non ci sono riuscito, per questo ho chiesto aiuto a voi !
Posted: Sun Oct 30, 2011 1:18 pm
by snipershady
si be ragazzi
ragionissima al 100% circa il copia incolla
però se qualcuno ha la pazienza (visto che si parla di programmini da10 righe di codice)
di commentare i passaggi
magari gli diamo una mano
Re:
Posted: Sun Oct 30, 2011 1:24 pm
by White_Shark
snipershady wrote:si be ragazzi
ragionissima al 100% circa il copia incolla
però se qualcuno ha la pazienza (visto che si parla di programmini da10 righe di codice)
di commentare i passaggi
magari gli diamo una mano
Grazie Ste, è quello che cercavo di far capire, non sono al liceo che devo consegnare una soluzione e quindi la prima che trovo copio e incollo...
Posted: Sun Oct 30, 2011 1:52 pm
by snipershady
anche perchè googolando di soluzioni già fatte per QUESTO tipo di problema... ne trovi miliardi!
Posted: Sun Oct 30, 2011 5:52 pm
by alb3rt0
snipershady wrote:però se qualcuno ha la pazienza (visto che si parla di programmini da10 righe di codice)
di commentare i passaggi
magari gli diamo una mano
puoi farlo anche tu, visto che si parla di 10 righe di codice
il punto è ragionare e capire come trovare il suffisso!
e per farlo non serve conoscere un linguaggio di programmazione.
stringa="snipergay"
n=3
quindi il suffisso è: gay
lunghezza stringa = 9
quindi la g sarà in posizione 9 - 3 = 6
poi il codice per fare la copia diventa:
Code: Select all
i = lunghezza - n; //trovo l'inizio del suffisso
j = 0; //indice per la nuova stringa
while (stringa[i] != '\0') { //finché non trovo la fine della stringa...
stringa2[j] = stringa[i] //copio il singolo char nella nuova stringa
j++; //incremento i due indici
i++;
}
l'unica cosa complicata di questo codice è i = lunghezza - n (una sottrazione).
poi per leggere l'input, stampare l'output e la sintassi ci sono i lbri e la documentazione.
per questo suggerivo di fare l'esempio su carta.
ps: spero sia giusto

Posted: Sun Oct 30, 2011 6:36 pm
by snipershady
siee voi quelli studiosi :)
Re:
Posted: Mon Oct 31, 2011 2:15 am
by hooah!!!
alb3rt0 wrote:snipershady wrote:però se qualcuno ha la pazienza (visto che si parla di programmini da10 righe di codice)
di commentare i passaggi
magari gli diamo una mano
puoi farlo anche tu, visto che si parla di 10 righe di codice
il punto è ragionare e capire come trovare il suffisso!
e per farlo non serve conoscere un linguaggio di programmazione.
stringa="snipergay"
n=3
quindi il suffisso è: gay
lunghezza stringa = 9
quindi la g sarà in posizione 9 - 3 = 6
poi il codice per fare la copia diventa:
Code: Select all
i = lunghezza - n; //trovo l'inizio del suffisso
j = 0; //indice per la nuova stringa
while (stringa[i] != '\0') { //finché non trovo la fine della stringa...
stringa2[j] = stringa[i] //copio il singolo char nella nuova stringa
j++; //incremento i due indici
i++;
}
l'unica cosa complicata di questo codice è i = lunghezza - n (una sottrazione).
poi per leggere l'input, stampare l'output e la sintassi ci sono i lbri e la documentazione.
per questo suggerivo di fare l'esempio su carta.
ps: spero sia giusto

Perfetto, (ed elegante il while ha quel non sò che....)
ora white sarebbe carino porsi la domanda:
è contemplato il caso in cui la differenza lunghezza - n sia negativa?
In tal caso avresti dei problemi con l'algoritmo precedente.
Mi spiego :
stringa = snipergay
n=10
lungezza(stringa) - n = -1
questo comando qua
equivale ad eseguire stringa[-1]!='/0'
questo genera un errore di buffer overflow ( stai leggendo una porzione di memoria non assegnata alla tua variabile stringa).
Il linguaggio C non prevede nessun controllo in fase di compilazione (ne tantomeno in esecuzione) per lo sforamento dell'indicizzazione degli array (e delle stringhe) ed è per questo che riesci ad eseguirlo comunque.
In java avresti invece avuto un errore in complilazione (array outofbound exception)
Prova a riscriverlo in modo da inserire questo controllo nella condizione di verifica del while.
Re: Re:
Posted: Mon Oct 31, 2011 4:54 pm
by TheJackal
Hooah!!! wrote:alb3rt0 wrote:snipershady wrote:però se qualcuno ha la pazienza (visto che si parla di programmini da10 righe di codice)
di commentare i passaggi
magari gli diamo una mano
puoi farlo anche tu, visto che si parla di 10 righe di codice
il punto è ragionare e capire come trovare il suffisso!
e per farlo non serve conoscere un linguaggio di programmazione.
stringa="snipergay"
n=3
quindi il suffisso è: gay
lunghezza stringa = 9
quindi la g sarà in posizione 9 - 3 = 6
poi il codice per fare la copia diventa:
Code: Select all
i = lunghezza - n; //trovo l'inizio del suffisso
j = 0; //indice per la nuova stringa
while (stringa[i] != '\0') { //finché non trovo la fine della stringa...
stringa2[j] = stringa[i] //copio il singolo char nella nuova stringa
j++; //incremento i due indici
i++;
}
l'unica cosa complicata di questo codice è i = lunghezza - n (una sottrazione).
poi per leggere l'input, stampare l'output e la sintassi ci sono i lbri e la documentazione.
per questo suggerivo di fare l'esempio su carta.
ps: spero sia giusto

Perfetto, (ed elegante il while ha quel non sò che....)
ora white sarebbe carino porsi la domanda:
è contemplato il caso in cui la differenza lunghezza - n sia negativa?
In tal caso avresti dei problemi con l'algoritmo precedente.
Mi spiego :
stringa = snipergay
n=10
lungezza(stringa) - n = -1
questo comando qua
equivale ad eseguire stringa[-1]!='/0'
questo genera un errore di buffer overflow ( stai leggendo una porzione di memoria non assegnata alla tua variabile stringa).
Il linguaggio C non prevede nessun controllo in fase di compilazione (ne tantomeno in esecuzione) per lo sforamento dell'indicizzazione degli array (e delle stringhe) ed è per questo che riesci ad eseguirlo comunque.
In java avresti invece avuto un errore in complilazione (array outofbound exception)
Prova a riscriverlo in modo da inserire questo controllo nella condizione di verifica del while.
A Cirou piace questo elemento.
Posted: Wed Nov 02, 2011 12:27 pm
by White_Shark
Grazie mille ragazzi ! :)