Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Dopo oltre 4 anni si rinnova la serie Sony Alpha 7 con la quinta generazione, che porta in dote veramente tante novità a partire dai 30fps e dal nuovo sensore partially stacked da 33Mpixel. L'abbiamo provata per un breve periodo, ecco come è andata dopo averla messa alle strette.
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme e Aston Martin Aramco F1 Team si sono (ri)unite dando alla vita un flagship con chip Snapdragon 8 Elite Gen 5 e design esclusivo ispirato alle monoposto di Formula 1. La Dream Edition introduce la nuova colorazione Lime Essence abbinata al tradizionale Aston Martin Racing Green, decorazioni intercambiabili personalizzate e una confezione a tema F1, intorno a uno smartphone dall'ottima dotazione tecnica con batteria da 7000mAh ricaricabile a 120W e isola fotografica intercambiabile
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
Abbiamo partecipato all'OVHcloud Summit 2025, conferenza annuale in cui l'azienda francese presenta le sue ultime novità. Abbiamo parlato di cloud pubblico e privato, d'intelligenza artificiale, di computer quantistici e di sovranità. Che forse, però, dovremmo chiamare solo "sicurezza"
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-11-2006, 10:27   #41
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Vasec87
si ma il carattere nullo dove lo devo mettere
4) Finito il ciclo metti il nullo in s1[n1+i]
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2006, 10:41   #42
Vasec87
Member
 
Iscritto dal: Aug 2006
Messaggi: 177
char *_strncat_(char *s1, const char *s2, in n)
{
int i;
int n1 = strlen (s1);
for(i=0;i<n;i++)
{
if(s2[i]==0){
break;}
s1[n1+i]=s2[i];
}
s1[n1+i]='\0';


return s1;

}

è sbagliato al 100% sta cosa del nullo, il resto però è giusto?
Vasec87 è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2006, 10:47   #43
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Vasec87
è sbagliato al 100% sta cosa del nullo, il resto però è giusto?
Ora è tutto giusto.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2006, 10:47   #44
Vasec87
Member
 
Iscritto dal: Aug 2006
Messaggi: 177
sperando che funzioni ti ringrazio ancora, alla prossima
Vasec87 è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2006, 11:03   #45
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Vasec87
sperando che funzioni ti ringrazio ancora, alla prossima
Ma non hai un compilatore per fare qualche prova?
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2006, 11:31   #46
Vasec87
Member
 
Iscritto dal: Aug 2006
Messaggi: 177
certo che ce l'ho, ma la funzione senza programma non la posso provare, o no?
Vasec87 è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2006, 11:31   #47
Vasec87
Member
 
Iscritto dal: Aug 2006
Messaggi: 177
cioè mica posso scriverci la funzione direttamente e soltanto, che risultato mi darebbe
Vasec87 è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2006, 12:09   #48
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Semplice programmino per la prova:
Codice:
#include <stdio.h>
#include <string.h>

char *_strncat_ (char *s1, const char *s2, int n)
{
    int i;
    int n1 = strlen (s1);

    for (i = 0; i < n; i++)
    {
        if (s2[i] == 0)
            break;

        s1[n1+i] = s2[i];
    }

    s1[n1+i] = '\0';

    return s1;
}

int main (void)
{
    char buf[80];

    strcpy (buf, "ciao ");
    printf ("[%s]\n", _strncat_ (buf, "prova", 20));

    strcpy (buf, "ciao ");
    printf ("[%s]\n", _strncat_ (buf, "prova", 3));

    return 0;
}
Testa i 2 casi in cui 'n' è maggiore/minore di s2.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2006, 15:57   #49
Vasec87
Member
 
Iscritto dal: Aug 2006
Messaggi: 177
comq quello che mi chiede l'esercizio è solo di scrivere la funzione giusto?
Vasec87 è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2006, 16:05   #50
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Vasec87
comq quello che mi chiede l'esercizio è solo di scrivere la funzione giusto?
Sì, ma se vuoi provarla, devi almeno fare un programmino con un main(), no?
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 15-11-2006, 08:38   #51
Vasec87
Member
 
Iscritto dal: Aug 2006
Messaggi: 177
riprendiamo questo semplice programmino

Si scriva una funzione
char*_strncat_(char*s1, const char*s2, int n);
tale funzione appende al massimo n caratteri della stringa s2 allafine della stringa s1. In particolare appende a s1 n caratteri di s2 se s2 contiene n caratteri validi, il numero di caratteri validi di s2 altrimenti. Il primo carattere di s2 va a sovrascrivere il carattere '\0' di terminazione della stringa s1. Una volta appesi i caratteri di s2 a s1 si dovra terminare la stringa s1 cosi modificata con un carattere di fine stringa. La funzione strncat restituisce un puntatore alla stringa s1 cosi modificata.

Esempio: se s1 è la stringa pippo
s2 è la stringa pluto e n vale 20
la funzione restituirà un puntatore a s1 modificata in modo da contenere pippopluto

se s1 è la stringa pippo
s2 è la stringa pluto e n vale 0
la funzione restituirà un puntatore a s1 modificata in modo da contenere pippo

se s1 è la stringa pippo
s2 è la stringa pluto e n vale 3
la funzione restituirà un puntatore a s1 modificata in modo da contenere pippoplu


i passi da seguire?
Vasec87 è offline   Rispondi citando il messaggio o parte di esso
Old 15-11-2006, 09:17   #52
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Vasec87
i passi da seguire?
Ma ... scusa, il sorgente completo per un test l'ho pure postato! Prendi il sorgente del mio post #48 e gli modifichi/aggiungi i test nel main.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 15-11-2006, 09:21   #53
Vasec87
Member
 
Iscritto dal: Aug 2006
Messaggi: 177
ma che esercizio è questo?

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

char *_strncat_ (char *s1, const char *s2, int n)
{
int i;
int n1 = strlen (s1);

for (i = 0; i < n; i++)
{
if (s2[i] == 0)
break;

s1[n1+i] = s2[i];
}

s1[n1+i] = '\0';

return s1;
}

int main (void)
{
char buf[80];

strcpy (buf, "ciao ");
printf ("[%s]\n", _strncat_ (buf, "prova", 20));

strcpy (buf, "ciao ");
printf ("[%s]\n", _strncat_ (buf, "prova", 3));

return 0;
}


a me serve di fare questa funzione, cosa c'entra quello che mi hai indicato tu nel post #48?

Si scriva una funzione
char*_strncat_(char*s1, const char*s2, int n);
tale funzione appende al massimo n caratteri della stringa s2 allafine della stringa s1. In particolare appende a s1 n caratteri di s2 se s2 contiene n caratteri validi, il numero di caratteri validi di s2 altrimenti. Il primo carattere di s2 va a sovrascrivere il carattere '\0' di terminazione della stringa s1. Una volta appesi i caratteri di s2 a s1 si dovra terminare la stringa s1 cosi modificata con un carattere di fine stringa. La funzione strncat restituisce un puntatore alla stringa s1 cosi modificata.

Esempio: se s1 è la stringa pippo
s2 è la stringa pluto e n vale 20
la funzione restituirà un puntatore a s1 modificata in modo da contenere pippopluto

se s1 è la stringa pippo
s2 è la stringa pluto e n vale 0
la funzione restituirà un puntatore a s1 modificata in modo da contenere pippo

se s1 è la stringa pippo
s2 è la stringa pluto e n vale 3
la funzione restituirà un puntatore a s1 modificata in modo da contenere pippoplu
Vasec87 è offline   Rispondi citando il messaggio o parte di esso
Old 15-11-2006, 09:35   #54
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Vasec87
a me serve di fare questa funzione
Ehm .... allora: la funzione l'hai già scritta tu completa e corretta nel tuo post #42. Se vuoi testarla realmente con un compilatore c'è il mio esempio di test nel post #48.
Cioè ... non ho capito: che cosa ti manca o ti serve ancora??
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 15-11-2006, 09:39   #55
Vasec87
Member
 
Iscritto dal: Aug 2006
Messaggi: 177
cazzo, c'hai ragione
ho sbagliato esercizio, un attimo che ne metto n'altro
Vasec87 è offline   Rispondi citando il messaggio o parte di esso
Old 15-11-2006, 09:44   #56
Vasec87
Member
 
Iscritto dal: Aug 2006
Messaggi: 177
Si scriva una funzione
int _strcspn_(const char *s1, const char *s2);
che determine la lunghezza del prefisso piu lungo di s1 che consista solo di caratteri contenuti in s2.
si scriva anche una seconda versione della funzione il cui prototipo sia:
int _strcspn_VETT_(char s1[], char s2[]);
che svogla esattamente lo stesso compito di strcspn. Obiettivo dell'esercizo nel farvi consegnare due versioni della funzione e di farvi usare due notazioni diverse (con o senza puntatori) per lavorare sulle stringhe.

se s1 è la stringa
aprtyui

ed s2 è la stringa
qrty

allora il prefisso di s1 contiene caratteri di s2 ha lunghezza 0 (la prima lettera di s1 non compare in s2)
Vasec87 è offline   Rispondi citando il messaggio o parte di esso
Old 15-11-2006, 10:08   #57
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Vasec87
Si scriva una funzione
int _strcspn_(const char *s1, const char *s2);
che determine la lunghezza del prefisso piu lungo di s1 che consista solo di caratteri contenuti in s2.
si scriva anche una seconda versione della funzione il cui prototipo sia:
int _strcspn_VETT_(char s1[], char s2[]);
che svogla esattamente lo stesso compito di strcspn. Obiettivo dell'esercizo nel farvi consegnare due versioni della funzione e di farvi usare due notazioni diverse (con o senza puntatori) per lavorare sulle stringhe.
Alcune cose:

1) L'esercizio è tutto sommato abbastanza semplice. Segui questo schema:
- Metti una variabile che tiene la lunghezza del prefisso da calcolare, es 'lung' inizialmente a 0.
- Prendi 1 carattere per volta di s1, andando in avanti, fino al nullo (escluso).
- Per ogni carattere di s1, scansioni la stringa s2 per vedere se il carattere vi è contenuto. Se lo trovi, incrementi 'lung' e continui con il prossimo carattere di s1. Ma se non lo trovi, vuol dire che il prefisso è terminato e quindi termini il tutto.
- Alla fine fai ritornare 'lung'.

2) Ti è stato chiesto di fare 2 versioni: una con puntatori e una con i vettori. E questo può anche essere ok. Però chi ti ha dato l'esercizio non deve essere un gran genio di "C". Perché dichiarare come parametro char *s1 oppure char s1[] è la stessa identica cosa: alla funzione viene sempre passato comunque un puntatore!!!
Quindi accedere alle 2 stringhe s1/s2 tramite l'indicizzazione s1[i] oppure tramite dereferenziazione del puntatore *s1 (o meglio con la formula generica *(s1+i) ) sostanzialmente è la stessa cosa e non c'entra nulla con il fatto di dichiarare il parametro in un modo o nell'altro.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 15-11-2006, 10:19   #58
Vasec87
Member
 
Iscritto dal: Aug 2006
Messaggi: 177
- Prendi 1 carattere per volta di s1, andando in avanti, fino al nullo (escluso).
- Per ogni carattere di s1, scansioni la stringa s2 per vedere se il carattere vi è contenuto. Se lo trovi, incrementi 'lung' e continui con il prossimo carattere di s1. Ma se non lo trovi, vuol dire che il prefisso è terminato e quindi termini il tutto.



devo usare il for o while. se uso il for però che ci metto dentro?

io avevo pensato a una cosa tipo while(s1!='\0')
Vasec87 è offline   Rispondi citando il messaggio o parte di esso
Old 15-11-2006, 10:28   #59
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Vasec87
devo usare il for o while. se uso il for però che ci metto dentro?

io avevo pensato a una cosa tipo while(s1!='\0')
Per essere più chiari, la scansione di una stringa la puoi fare in due modi:

Dato un char *str:

a)
Codice:
int i, n = strlen (str);

for (i=0; i<n; i++)
{
    ... accedi al carattere con str[i] ...
}
b)
Codice:
while (*str != '\0')
{
    ... accedi al carattere con *str ...

    str++;
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 15-11-2006, 10:30   #60
Vasec87
Member
 
Iscritto dal: Aug 2006
Messaggi: 177
- Per ogni carattere di s1, scansioni la stringa s2 per vedere se il carattere vi è contenuto. Se lo trovi, incrementi 'lung' e continui con il prossimo carattere di s1. Ma se non lo trovi, vuol dire che il prefisso è terminato e quindi termini il tutto.

questo pezzo come si fa


int _strcspn_(const char *s1, const char *s1)
{
lung = 0;
int i, n = strlen (str);

for (i=0; i<n; i++)
{
Vasec87 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro DJI Neo 2 in prova: il drone da 160 grammi guada...
Kioxia Exceria Plus G4: l'SSD PCIe 5.0 p...
HBO Max debutta in Italia: data, contenu...
Qual è lo smartphone Android pi&u...
Il camion elettrico Semi è davver...
Instagram limita gli hashtag a tre per p...
Le migliori offerte Amazon del momento: ...
RTI e Medusa denunciano Perplexity AI: p...
Avviatori, compressori e accessori auto:...
Samsung Galaxy S26: un leak anticipa le ...
Windows 11, KB5070311 sistema e rompe la...
DJI Mini 3 con controller DJI RC al prez...
Horses riceve il ban anche da Epic: rifi...
Motore elettrico a flusso assiale di Yas...
India, la retromarcia dopo le polemiche:...
La Germania accende il suo colosso eolic...
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:56.


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