Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh
realme 16 5G è un nuovo smartphone con sensore Sony IMX 852 da 50MP sul retro e uno specchio selfie fisico integrato nella camera bar, una prima nel segmento di mercato. Batteria da 6550mAh in un corpo da 8,1mm e 183g, certificazione IP69K e ricarica da 45W completano un pacchetto aggressivo per la fascia media, per uno dei prodotti più interessanti del produttore sul piano commerciale
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Sono ormai definitive le nuove norme del Codice della Strada per i monopattini elettrici. Non solo targa e assicurazione, le regole sono tante e riguardano diversi aspetti, vi spieghiamo come evitare sanzioni che possono essere salate
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5 introduce Dynamic Multi Frame Generation e MFG 6X, permettendo fino a cinque frame generati per ogni frame renderizzato. I test su Cyberpunk 2077 e 007 First Light mostrano forti incrementi di FPS e riduzione della latenza su RTX 5090 Laptop. Migliorano fluidità, stabilità e qualità visiva.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-03-2007, 16:49   #1
nicod83
Member
 
L'Avatar di nicod83
 
Iscritto dal: Jun 2005
Messaggi: 123
[C] esercizio facile...

Si definisca una funzione di char * che accetti come parametro una stringa e restituisca una diversa stringa con tutti i caratteri alfabetici passati al caso maiuscolo e gli altri caratteri inalterati. La stringa originale non deve essere cambiata.

'A' in ascii è 65
'a' invece 97
quindi 97-65=32
prendo la stringa e sottraggo -32 su ogni carattere, giusto??
nicod83 è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2007, 16:58   #2
Tadde
Senior Member
 
Iscritto dal: Oct 2001
Città: Firenze
Messaggi: 585
Quote:
Originariamente inviato da nicod83 Guarda i messaggi
Si definisca una funzione di char * che accetti come parametro una stringa e restituisca una diversa stringa con tutti i caratteri alfabetici passati al caso maiuscolo e gli altri caratteri inalterati. La stringa originale non deve essere cambiata.

'A' in ascii è 65
'a' invece 97
quindi 97-65=32
prendo la stringa e sottraggo -32 su ogni carattere, giusto??
E se il carattere è già una lettera maiuscola cosa succede col tuo metodo?
Tadde è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2007, 17:09   #3
Fede_Reghe
Member
 
L'Avatar di Fede_Reghe
 
Iscritto dal: Dec 2006
Città: Firenze
Messaggi: 118
ricordati di trasformarle in int prima di sottrarre!
__________________
Federica
Fede_Reghe è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2007, 17:12   #4
nicod83
Member
 
L'Avatar di nicod83
 
Iscritto dal: Jun 2005
Messaggi: 123
Quote:
Originariamente inviato da Fede_Reghe Guarda i messaggi
ricordati di trasformarle in int prima di sottrarre!
ah! ...help me
nicod83 è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2007, 17:15   #5
wisher
Senior Member
 
L'Avatar di wisher
 
Iscritto dal: Aug 2005
Messaggi: 2755
Fai un controllo.
Qui trovi la tabella ascii
http://www.asciitable.com/
Se è tra 97 e 122 (ovvero se è una minuscola) sottrai 32, altrimenti lasci il valore attuale.
__________________
wisher è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2007, 17:16   #6
wisher
Senior Member
 
L'Avatar di wisher
 
Iscritto dal: Aug 2005
Messaggi: 2755
Quote:
Originariamente inviato da Fede_Reghe Guarda i messaggi
ricordati di trasformarle in int prima di sottrarre!
il C memorizza i char direttamente con il loro codice ASCII, quindi non dovresti avere problemi di conversione.
__________________
wisher è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2007, 17:25   #7
Fede_Reghe
Member
 
L'Avatar di Fede_Reghe
 
Iscritto dal: Dec 2006
Città: Firenze
Messaggi: 118
Eventualmente se non te lo converte fai
Codice:
risultato[1] = (int) arr[1] - 32;
__________________
Federica
Fede_Reghe è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2007, 18:11   #8
nicod83
Member
 
L'Avatar di nicod83
 
Iscritto dal: Jun 2005
Messaggi: 123
ho qualche problema....

void cambia (char* c) {
char *T;
....????

T[i]=(int) c-32;

printf("%s ", c);
}

int main() {
char* c= "ciao";
printf("%s \n",c);
cambia(c)


return 0;
}
nicod83 è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2007, 18:39   #9
wisher
Senior Member
 
L'Avatar di wisher
 
Iscritto dal: Aug 2005
Messaggi: 2755
Quote:
Originariamente inviato da nicod83 Guarda i messaggi
ho qualche problema....

void cambia (char* c) {
char *T;
....????

T[i]=(int) c-32;

printf("%s ", c);
}

int main() {
char* c= "ciao";
printf("%s \n",c);
cambia(c)


return 0;
}
il vettore su cui devi lavorare è quello che passi in ingresso.
Quindi char T* è inutile.
poi fai un ciclo con cui controlli se la stringa è terminata (da 0).
Codice:
int i=0;
while(c[i]!='\0'){
   if(c[i]>=97&&c[i]<=92){
     c[i]=c[i]-32;
   }
   i++;
}
__________________

Ultima modifica di wisher : 18-03-2007 alle 18:40. Motivo: Non incrementavo i
wisher è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2007, 19:37   #10
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
mia versione:
Codice:
char *Capitalize(char *Input)
{
	char *Output;
	int i;

	Output = (char*)malloc(strlen(Input) + 1); /* occhio al leak */

	for (i = 0; Input[i]; i++)
	{
		if ((Input[i] >= 'a') && (Input[i] <= 'z'))
		{
			Output[i] = Input[i] + 'A' - 'a';
		}
		else
		{
			Output[i] = Input[i];
		}
	}
	return Output;
}

Ultima modifica di 71104 : 18-03-2007 alle 19:41.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2007, 20:22   #11
nicod83
Member
 
L'Avatar di nicod83
 
Iscritto dal: Jun 2005
Messaggi: 123
mi dà un error (bus error)....


void cambia (char* c) {
int i=0;
while(c[i]!='\0'){
if(c[i]>=97 && c[i]<=122){
c[i]=c[i]-32;

}
i++;
}
printf("%s ", c);
}

int main() {
char* c= "ciao";
printf("%s \n",c);
cambia(c);

return 0;
}
nicod83 è offline   Rispondi citando il messaggio o parte di esso
Old 19-03-2007, 01:41   #12
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da nicod83 Guarda i messaggi
mi dà un error (bus error)....
perché hai provato a modificare un'area di memoria che la maggioranza dei compilatori nella maggiornaza dei casi imposta a sola lettura, ovvero la stringa "ciao". usa la malloc e risolvi il problema (oltre che rispettare le specifiche ).
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 19-03-2007, 02:45   #13
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Non ho capito: e' vietato usare il toupper() ?
Usandolo e' tutto facile:

Codice:
char *toUpperCase (char *strin)
{
  char *strout;
  char *p, *q;

  strout = (char *)malloc (strlen(strin) + 1);
  if (!strout)
    return NULL;  // Cannot allocate memory
  q = strin;
  p= strout;

  while ((*p++ = toupper(*q++)));
  return strout;
}
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 19-03-2007, 08:54   #14
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
OT

IMHO è molto brutto allocare così...l'utilizzatore della vostra funzione sicuramente si scorderà di deallocare la stringa

In questo caso: o si lascia costruire al chiamante il buffer di output o si sovrascrive la stringa corrente

Concordo che ci sono casi in cui è impossibile attuare la prima politica, ma questo è uno dei tanti in cui non conviene allocare dinamicamente all'insaputa dell'utente.
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh Recensione realme 16 5G: lo smartphone con Selfi...
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni Come rispettare tutte le nuove regole per i mono...
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta DLSS 4.5: con Dynamic Frame Generation e MFG 6X ...
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
iPhone 17 torna protagonista su Amazon: ...
PowerToys si aggiorna alla versione 0.10...
La nuova Audi Q7 proietta le frecce sull...
Framework blocca tutto: Laptop 13 Pro no...
SSD, Biwin investe oltre metà del...
Samsung Trend Radar 2026: smartphone e s...
Enel entra nella telefonia mobile: il vi...
Arriva il menu contestuale aggiornato di...
GM punta sulle batterie al sodio per lo ...
Instagram amplia il controllo sull'algor...
Jason Wild: "Siamo bravissimi a ris...
Razer BlackShark V2 X a 34,99€: cuffie e...
d-Matrix avvia la produzione di Corsair:...
I guardrails di Claude Fable 5 fanno sca...
Phanteks Evolv Series S2 a 99€: il case ...
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: 16:54.


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