dal 2003, semper fidelis!

Aiuto programmi per domani ! :)

Il luogo dove parlare di informatica.

Moderator: Moderatori

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ù :sgratasd:

prova a scrivere una stringa su carta e ad eseguire l'algoritmo che hai scritto e magari riesci a capire cosa non va

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 ! :D

non puoi aiutarmi a fare cosa?
sei tu quello che deve fare gli esercizi :asd:

pensavo fosse codice tuo!
fare copia, incolla e compila è inutile.

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 :smile:
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 :boing:


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.

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 !

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:

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...

anche perchè googolando di soluzioni già fatte per QUESTO tipo di problema... ne trovi miliardi!

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 :D

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 :asd:

siee voi quelli studiosi :)

Re:

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 :D

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 :asd:
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

Code: Select all

while (stringa[i] != '\0') 
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.
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 :D

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 :asd:
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

Code: Select all

while (stringa[i] != '\0') 
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.

Grazie mille ragazzi ! :)

Who is online

In total there are 4 users online :: 0 registered, 0 hidden and 4 guests (based on users active over the past 5 minutes)
Most users ever online was 164 on Wed Aug 18, 2021 7:03 pm

Users browsing this forum: No registered users and 4 guests