Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-11-2009, 11:10   #1
stgww
Senior Member
 
L'Avatar di stgww
 
Iscritto dal: May 2006
Città: Monza
Messaggi: 3686
[C]Controllare che una stringa ne contenga un'altra

Ciao, non riesco a risolvere questo esercizio, in pratica devo continuare a chiedere una stringa s1 e una stringa s2 (ma lo fa un programma esterno che deve essere solo richiamato) e controllare che s2 sia contenuta in s1 fino a che non arrivo al terminatore (\0 per intenderci) o la stringa contenga la parola fine.

Una mano?

Grazie
__________________
" Disprezzato e reietto dagli uomini, uomo dei dolori che ben conosce il patire, come uno davanti al quale ci si copre la faccia, era disprezzato e non ne avevamo alcuna stima." ... "Maltrattato, si lasciò umiliare e non aprì la sua bocca; era come agnello condotto al macello, come pecora muta di fronte ai suoi tosatori, e non aprì la sua bocca"
stgww è offline   Rispondi citando il messaggio o parte di esso
Old 07-11-2009, 11:21   #2
yggdrasil
Senior Member
 
L'Avatar di yggdrasil
 
Iscritto dal: Aug 2008
Messaggi: 808
cerchi lungo s1 se esiste il primo carattere di s2. se sì controlli che tutti i caratteri di s2 siano, ordinatamente dopo il carattere trovato in s1.
se sì ecco che è contenuta. se no, ritenti dal secondo carattere di s1 da capo. fino a quando non incontri su s1 il terminatore o non hai una lunghezza dalla fine minore della lunghezza di s2.
__________________
"...qui vige l'uguaglianza: non conta un cazzo nessuno!" (Full Metal Jacket)
yggdrasil è offline   Rispondi citando il messaggio o parte di esso
Old 07-11-2009, 11:23   #3
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Puoi usare strstr della string.h ?
edit: Ah e' un esercizio. Allora lo devi fare a mano, magari come suggerito da yggdrasil.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 07-11-2009, 12:56   #4
stgww
Senior Member
 
L'Avatar di stgww
 
Iscritto dal: May 2006
Città: Monza
Messaggi: 3686
Quote:
Originariamente inviato da yggdrasil Guarda i messaggi
cerchi lungo s1 se esiste il primo carattere di s2. se sì controlli che tutti i caratteri di s2 siano, ordinatamente dopo il carattere trovato in s1.
se sì ecco che è contenuta. se no, ritenti dal secondo carattere di s1 da capo. fino a quando non incontri su s1 il terminatore o non hai una lunghezza dalla fine minore della lunghezza di s2.
Grazie!
Una cosa del genere:
Codice:
for(la lungghezza di s1)
{
if(carattere i-esimo di s1 == primo carattere s2)
for(partendo dal carattere i-esimo si s1 fino alla fine di s2)
if(s1 j-esimo == s2 j-esimo)
printf("ok la contiene")
else
printf("nada")
}

??

Ma come faccio a dirgli smettila se la stringa contiene la parola fine?

Qualcuno dice che ha messo un while(s2!='fine') ma all'inizio, ma funge?

Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Puoi usare strstr della string.h ?
edit: Ah e' un esercizio. Allora lo devi fare a mano, magari come suggerito da yggdrasil.
Sì è un esercizio ma lo devo fare in laboratorio, quindi sì posso usare string.h, qunidi se hai suggerimenti sono bene accetti
__________________
" Disprezzato e reietto dagli uomini, uomo dei dolori che ben conosce il patire, come uno davanti al quale ci si copre la faccia, era disprezzato e non ne avevamo alcuna stima." ... "Maltrattato, si lasciò umiliare e non aprì la sua bocca; era come agnello condotto al macello, come pecora muta di fronte ai suoi tosatori, e non aprì la sua bocca"
stgww è offline   Rispondi citando il messaggio o parte di esso
Old 07-11-2009, 13:15   #5
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2782
Io farei un ciclo while: finché entrambe le stringhe non sono finite (controlli che i caratteri che stai controllando non siano '\0') confronto i caratteri, se sono diversi restituisco 0, altrimenti proseguo. Uscito dal ciclo controllo che i caratteri a cui sono giunto siano uguali (entrambi '\0'), se sì restituisco 1, altrimenti 0.
Se puoi usare la string.h puoi vedere qui come si usa la funzione strstr: LINK
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 07-11-2009, 14:54   #6
stgww
Senior Member
 
L'Avatar di stgww
 
Iscritto dal: May 2006
Città: Monza
Messaggi: 3686
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Io farei un ciclo while: finché entrambe le stringhe non sono finite (controlli che i caratteri che stai controllando non siano '\0') confronto i caratteri, se sono diversi restituisco 0, altrimenti proseguo. Uscito dal ciclo controllo che i caratteri a cui sono giunto siano uguali (entrambi '\0'), se sì restituisco 1, altrimenti 0.
Se puoi usare la string.h puoi vedere qui come si usa la funzione strstr: LINK
in pratica strstr cerca se s2 è contenuta in s1 e poi restituisce un valore?
Ma non ho capito, li fa vedere che può sostituire un parola con un altra, quindi cosa restituisce, 1 se la trova e 0 se no?
__________________
" Disprezzato e reietto dagli uomini, uomo dei dolori che ben conosce il patire, come uno davanti al quale ci si copre la faccia, era disprezzato e non ne avevamo alcuna stima." ... "Maltrattato, si lasciò umiliare e non aprì la sua bocca; era come agnello condotto al macello, come pecora muta di fronte ai suoi tosatori, e non aprì la sua bocca"
stgww è offline   Rispondi citando il messaggio o parte di esso
Old 07-11-2009, 18:25   #7
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12905
Muoviti usando una "finestra" di ampiezza uguale alla parola che stai cercando e controlla nello stesso ciclo se la prima e l'ultima lettera coincidono con i rispettivi nella parola cercata.

Se sono uguali allora procedi col controllare la seconda e la penultima lettera e così via.

Ad esempio:

"car" in "cercare"

ampiezza 3

cer: c==c vero, r=r vero, e=e falso

erc: e==c falso

rca: r==c falso

car: c==c vero, r=r vero, a=a vero -> parola trovata

Ultima modifica di WarDuck : 08-11-2009 alle 10:51.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 08-11-2009, 01:48   #8
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2782
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Io farei un ciclo while: finché entrambe le stringhe non sono finite (controlli che i caratteri che stai controllando non siano '\0') confronto i caratteri, se sono diversi restituisco 0, altrimenti proseguo. Uscito dal ciclo controllo che i caratteri a cui sono giunto siano uguali (entrambi '\0'), se sì restituisco 1, altrimenti 0.
Ma che cavolo ho scritto? Mi sono riletto adesso e stento a crederci
La procedura che ho descritto serve a controllare se due stringhe sono uguali...
Quella che ha descritto WarDuck mi sembra corretta, anche se non ho capito perché salta "erc"
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 08-11-2009, 10:48   #9
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12905
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Ma che cavolo ho scritto? Mi sono riletto adesso e stento a crederci
La procedura che ho descritto serve a controllare se due stringhe sono uguali...
Quella che ha descritto WarDuck mi sembra corretta, anche se non ho capito perché salta "erc"
Hai ragione in realtà non si può fare così, non puoi saltarla, ora correggo.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 08-11-2009, 16:04   #10
stgww
Senior Member
 
L'Avatar di stgww
 
Iscritto dal: May 2006
Città: Monza
Messaggi: 3686
Ciao, ho provato a fare così, ma non funziona

Codice:
#include <string.h>
#include <stdio.h>

void main ()
{
	char s1[20] , s2[20];
	int n_s1 , n_s2 , i , j=0 ;

	printf("Scrivi S1\n"); // Catturo s1
	scanf("%s\n",s1);
	
	printf("Scrivi S2\n"); //Catturo s1
	scanf("%s\n",s2);

	n_s1=strlen(s1); //Conto i caratteri di s1
	n_s2=strlen(s2); //Conto i caratteri di s2

	for(i=0;i<n_s1;i++) //Per ogni elemento di s1...
	{
		if(s1[i]==s2[0]) //...controlla se per caso sia uguale al primo elemento di s2
		{

			while((s1[i]==s2[j]) && (j<n_s2)) //Se sì, controlla anche gli altri elementi
			{
				
				j++;
				i++;
	
			}
			printf("OK, e' compresa\n");
		}
		else
			printf("non e' compresa\n");
	}


	getchar();
	getchar();
    
}
In pratica s1 devo scriverla due volte altrimenti non me la prende, premo la prima volta invio e non succede niente, poi scrivo s2 e il programma termina

@WarDuck:

Non capisco cosa mi stai suggerndo, concettualmente sì, ok, ma non saprei come implementarlo
__________________
" Disprezzato e reietto dagli uomini, uomo dei dolori che ben conosce il patire, come uno davanti al quale ci si copre la faccia, era disprezzato e non ne avevamo alcuna stima." ... "Maltrattato, si lasciò umiliare e non aprì la sua bocca; era come agnello condotto al macello, come pecora muta di fronte ai suoi tosatori, e non aprì la sua bocca"
stgww è offline   Rispondi citando il messaggio o parte di esso
Old 08-11-2009, 18:36   #11
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2782
Quote:
Originariamente inviato da stgww Guarda i messaggi
In pratica s1 devo scriverla due volte altrimenti non me la prende, premo la prima volta invio e non succede niente, poi scrivo s2 e il programma termina
Togli \n dagli scanf.
Per l'algoritmo per la ricerca sei sulla buona strada ma è ancora incompleto.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 08-11-2009, 23:34   #12
stgww
Senior Member
 
L'Avatar di stgww
 
Iscritto dal: May 2006
Città: Monza
Messaggi: 3686
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Togli \n dagli scanf.
Per l'algoritmo per la ricerca sei sulla buona strada ma è ancora incompleto.
Ok, un suggerimento? Almeno dirmi qual'è il problema logico?
__________________
" Disprezzato e reietto dagli uomini, uomo dei dolori che ben conosce il patire, come uno davanti al quale ci si copre la faccia, era disprezzato e non ne avevamo alcuna stima." ... "Maltrattato, si lasciò umiliare e non aprì la sua bocca; era come agnello condotto al macello, come pecora muta di fronte ai suoi tosatori, e non aprì la sua bocca"
stgww è offline   Rispondi citando il messaggio o parte di esso
Old 09-11-2009, 13:56   #13
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2782
Facciamo un esempio, prova a cercare "sar" in "sassari" con l'algoritmo che hai scritto.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 09-11-2009, 19:26   #14
stgww
Senior Member
 
L'Avatar di stgww
 
Iscritto dal: May 2006
Città: Monza
Messaggi: 3686
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Facciamo un esempio, prova a cercare "sar" in "sassari" con l'algoritmo che hai scritto.
SIIII!!! Viene! Ho fatto qualche prova e mi sembra che funzioni.
Posto il codice
Codice:
#include <string.h>
#include <stdio.h>

void main ()
{
	char s1[20] , s2[20];
	int n_s1 , n_s2 , i , j=0,compreso=0 ;

	printf("Scrivi S1\n"); // Catturo s1
	scanf("%s",s1);
	
	printf("Scrivi S2\n"); //Catturo s1
	scanf("%s",s2);

	n_s1=strlen(s1); //Conto i caratteri di s1
	n_s2=strlen(s2); //Conto i caratteri di s2

	for(i=0;i<n_s1;i++) //Per ogni elemento di s1...
	{
		if(s1[i]==s2[0]) //...controlla se per caso sia uguale al primo elemento di s2
		{

			while((s1[i]==s2[j]) && (j<n_s2)) //Se sì, controlla anche gli altri elementi
			{
				
				j++;
				i++;
				
			}
				if(j==n_s2) //Se ha raggiunto la fine di S2 senza problemi...
					compreso=1; //...allora è contenuta
			
		}
	}
		
		if(compreso==1)
			printf("OK, e' compresa\n");

		else
			printf("non e' compresa\n");


	getchar();
	getchar();
    
	}
__________________
" Disprezzato e reietto dagli uomini, uomo dei dolori che ben conosce il patire, come uno davanti al quale ci si copre la faccia, era disprezzato e non ne avevamo alcuna stima." ... "Maltrattato, si lasciò umiliare e non aprì la sua bocca; era come agnello condotto al macello, come pecora muta di fronte ai suoi tosatori, e non aprì la sua bocca"
stgww è offline   Rispondi citando il messaggio o parte di esso
Old 09-11-2009, 22:29   #15
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2782
In verità se cerchi "sar" in "sassari" dice che non è compresa...
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2009, 12:42   #16
stgww
Senior Member
 
L'Avatar di stgww
 
Iscritto dal: May 2006
Città: Monza
Messaggi: 3686
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
In verità se cerchi "sar" in "sassari" dice che non è compresa...
Sei sicuro che sar è contenuta in sassari? Altre parole funziona...
__________________
" Disprezzato e reietto dagli uomini, uomo dei dolori che ben conosce il patire, come uno davanti al quale ci si copre la faccia, era disprezzato e non ne avevamo alcuna stima." ... "Maltrattato, si lasciò umiliare e non aprì la sua bocca; era come agnello condotto al macello, come pecora muta di fronte ai suoi tosatori, e non aprì la sua bocca"
stgww è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2009, 15:05   #17
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2782
Quote:
Originariamente inviato da stgww Guarda i messaggi
Sei sicuro che sar è contenuta in sassari? Altre parole funziona...
Cosa intendi? sar è in sassari
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2009, 15:22   #18
stgww
Senior Member
 
L'Avatar di stgww
 
Iscritto dal: May 2006
Città: Monza
Messaggi: 3686
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Cosa intendi? sar è in sassari
Sì, ok, ti stavo prendendo in giro Sicuramente il problema è quando si trova la prima lettera da cercare doppia, però continuo a non capire dove sia l'errore
__________________
" Disprezzato e reietto dagli uomini, uomo dei dolori che ben conosce il patire, come uno davanti al quale ci si copre la faccia, era disprezzato e non ne avevamo alcuna stima." ... "Maltrattato, si lasciò umiliare e non aprì la sua bocca; era come agnello condotto al macello, come pecora muta di fronte ai suoi tosatori, e non aprì la sua bocca"
stgww è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2009, 20:52   #19
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2782
Quote:
Originariamente inviato da stgww Guarda i messaggi
Sì, ok, ti stavo prendendo in giro Sicuramente il problema è quando si trova la prima lettera da cercare doppia, però continuo a non capire dove sia l'errore
Ah, ok, scusa ma oggi sono stordito.
Il problema è che se la prima lettera coincide parte la ricerca delle altre lettere, ma se questa fallisce la ricerca della seconda parola nella prima non riparte dalla prima lettera della seconda parola e dalla lettera successiva a quella che coincideva nella prima. Es:
s1="sassari" s2="sar"
i=0, j=0 -> s1[0]==s2[0] -> j++, i++
i=1, j=1 -> s1[1]==s2[1] -> j++, i++
i=2, j=2 -> s1[2]!=s2[2] -> i++
i=3, j=2 -> s1[3]==s2[0] ma s1[3]!=s2[2] -> i++
...
wingman87 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Crisi delle memorie: ASUS torna al passa...
Le console next-generation potrebbero es...
Gemini cresce ancora: la quota di mercat...
Samsung sfida TSMC: la capacità produtti...
Iliad alza il prezzo della fibra ottica ...
Il prossimo low cost di POCO sarà il più...
The Elder Scrolls VI: ecco le ultime sul...
Ecco i saldi di fine anno Amazon, 34 off...
iPhone Fold: scorte limitate al lancio m...
OpenAI porterà la pubblicità in ChatGPT ...
TSMC aumenterà ancora i prezzi: nel 2026...
Marvel pubblica anche il secondo teaser ...
Nuovo accordo tra xAI e il Pentagono: l'...
La famiglia Xiaomi 17 sta per registrare...
Nuove auto elettriche che vedremo sul me...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 13:55.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v