Torna indietro   Hardware Upgrade Forum > Software > Programmazione

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.
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
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-02-2007, 18:53   #1
alberto.frz
Member
 
L'Avatar di alberto.frz
 
Iscritto dal: Dec 2004
Città: Venezia
Messaggi: 192
[C] Problema con le liste

ciao, ho un piccolo problemino con le liste.

ho creato questo tipo di lista semplice di caratteri

Codice:
typedef struct elemento {
		char info;
		struct elemento *next;
}Elemento;

typedef Elemento *Lista;
supponendo di avere una lista non vuota, come faccio a sapere se i caratteri al suo interno sono ordinati in maniera crescente o decrescente?

qualche dritta?

__________________
alberto.frz è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 23:09   #2
thehuge
Member
 
L'Avatar di thehuge
 
Iscritto dal: Sep 2006
Città: ~
Messaggi: 146
Non la ho compilata e non sono perfettamente sicuro sia ANSI C, quindi non mi prendo nessuna responsabilità se ti fonderà la CPU ed espellerà i cd dai tuoi drive ottici a mo' di frisbee .
Comunque dovrebbe controllare se la lista è ordinata in modo crescente.

Codice:
int isOrdered(Elemento* lista) {
if (lista->next == NULL)
return 1;
if (lista->info <= lista->next->info)
return isOrdered(lista->next);
return 0;
}
Naturalmente per controllare se è ordinata in modo decrescente basterà sostituire < con > nel secondo if
__________________
Computers are like conditioned air: they work fine 'till you open windows.

thehuge è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 23:34   #3
alberto.frz
Member
 
L'Avatar di alberto.frz
 
Iscritto dal: Dec 2004
Città: Venezia
Messaggi: 192
ma la lista è di char...
__________________
alberto.frz è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2007, 08:51   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da alberto.frz
supponendo di avere una lista non vuota, come faccio a sapere se i caratteri al suo interno sono ordinati in maniera crescente o decrescente?
Ok, allora innanzitutto stabiliamo di realizzare una funzione che possa ritornare, ad esempio, un int che possa avere i seguenti valori:

+1 = lista ordinata in modo crescente
-1 = lista ordinata in modo decrescente
0 = lista non ordinata o comunque con ordine non determinato (pensiamo ad una lista in cui ci sono, per ipotesi, tutte le informazioni uguali).

Il procedimento da seguire per ottenere questo è il seguente.

Alla funzione viene passato il puntatore alla 'root' della lista. Dentro la funzione è necessario avere 2 variabili, chiamiamole 'dir' e 'c'.

Si fa la scansione dell'intera lista, per ogni elemento si verifica se esiste un elemento successivo. Se esiste un elemento successivo, si fa una comparazione delle due informazioni adiacenti. Se info1 > info2 si mette c=-1, se info1 < info2 si mette c=+1, altrimenti si mette c=0.

A questo punto è necessario verificare se la comparazione "concorda" o meno con 'dir'. Se dir==0 e c != 0 si fa dir=c. Se invece sia 'dir' che 'c' sono diversi da 0 e non "concordano" (sono diversi), si fa immediatamente un return di 0.

Si continua così con gli elementi successivi. Alla fine si fa ritornare 'dir'.

Il risultato è appunto quello di ottenere un +1/-1/0 che indica l'ordinamento come spiegato all'inizio.

Spero di aver spiegato in modo chiaro.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2007, 09:39   #5
alberto.frz
Member
 
L'Avatar di alberto.frz
 
Iscritto dal: Dec 2004
Città: Venezia
Messaggi: 192
Quote:
Originariamente inviato da andbin
...Se info1 > info2 si mette c=-1, se info1 < info2 si mette c=+1, altrimenti si mette c=0...
ma allora devo trattare i char come se fossero dei int per il confronto...?!
__________________
alberto.frz è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2007, 09:55   #6
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da alberto.frz
ma allora devo trattare i char come se fossero dei int per il confronto...?!
Certo .... un char lo puoi trattare nello stesso modo in cui tratti gli altri tipi base (short, int ....).
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2007, 10:05   #7
alberto.frz
Member
 
L'Avatar di alberto.frz
 
Iscritto dal: Dec 2004
Città: Venezia
Messaggi: 192
hai proprio ragione...a volte mi perdo su un bicchier d'acqua.

grazie è già la seconda volta che mi aiuti!

ciao!!!
__________________
alberto.frz è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


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 ...
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+ ...
La NASA ha annunciato gli astronauti del...
Mondiale 2026, Lenovo unico partner tecn...
007 First Light ha venduto più di...
Harley-Davidson, svelato il prezzo itali...
PC Windows 11 in crash: ma la colpa è di...
Dopo i 'NO 5G' arrivano i 'NO FIBRA'? Ar...
Promettono un parco e costruiscono un da...
L'aeroplano supersonico ''silenzioso'' N...
Euro-Office sbugiardata da LibreOffice: ...
I 10 sconti TOP Amazon: 4 novità ...
Galaxy Z Flip 8, in Europa avrà i...
SpaceX annuncia i satelliti AI1 destinat...
Ariston DEOS 10 EVO a 103€: deumidificat...
Cina pronta a investire 295 miliardi di ...
Gli israeliani di NSO Group continuano a...
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: 19:11.


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