Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Quattro modi di indossarlo, stessa app del Plaud Note Pro e integrazione con il desktop. Il registratore IA da indossare di Plaud eccelle in mobilità, ma resta vincolato all'abbonamento ed è facile da perdere
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 display da 2000 nit a meno di 100 euro
Xiaomi ha portato Redmi Watch 6 anche sul mercato italiano, puntando su un display AMOLED da 2,07 pollici con picco di luminosità a 2000 nit, frame in alluminio da 9,9mm e un'autonomia dichiarata di 12 giorni. Lo smartwatch gira su HyperOS 3 e integra GPS, Bluetooth 5.4 e oltre 150 sport mode. Il tutto a meno di 100 euro
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Con 22 tasti, il pulsante 5D, lo Shift Mode e il sensore PixArt 3395 da 26.000 DPI, il nuovo mouse wireless di Mad Catz si rivolge in modo preciso ai giocatori di MMO e RPG. Ma chi conosce già il R.A.T. 8+ ADV si accorgerà subito di quanto i due prodotti condividano, e di dove invece divergono
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


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 ...
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC Radeon RX 9070 GRE, AMD la porta in tutto il mon...
Reolink OMVI 3i WiFi: videosorveglianza più intelligente e facile da usare Reolink OMVI 3i WiFi: videosorveglianza pi&ugrav...
Virtua Fighter è tornato e non &e...
Il ritorno di Fumito Ueda, autore di Sha...
Cooler Master svela GPU Shield, la nuova...
Samsung Galaxy S27 Pro: sarà lui ...
Così Google ha ottimizzato Chrome...
Xiaomi non cambia idea: il display poste...
LG presenta in Italia le gamme TV Micro ...
Sette anni dopo l'annuncio, The Wolf Amo...
'Non avrete aumenti': la decisione shock...
TIM lancia il Pass Mondiali DAZN: 104 pa...
Tesla Roadster, promessa o miraggio? La ...
Mark Hamilton, la tavola periodica del m...
Hanger 13 annuncia Uomo d'Onore: espansi...
La battaglia delle HBM4 entra nel vivo: ...
Dopo 12 anni torna Alien: Isolation. Ecc...
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: 00:44.


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