Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Il primo Micro RGB di Samsung per il salotto è il 65 pollici da 2.749 euro. Sul banco di misura abbiamo rilevato 2.000 nit di picco, nero assoluto con il local dimming e il 91,4% del BT.2020, il colore più ampio che abbiamo misurato su un LCD
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
Apple ha rinnovato iPhone 18 Pro soprattutto dentro: chip A20 Pro a 2 nm con memoria affiancata al SoC, camera di vapore tre volte più ampia, Dynamic Island più piccola del 25% grazie a Face ID sotto il display e fotocamera principale con diaframma variabile da f/1.48 a f/4. Lo abbiamo misurato al colorimetro e nei benchmark, usato con iOS 27 e messo alla prova in fotografia tra laghi, borghi e interni poco illuminati
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-08-2005, 23:35   #1
biggestopolino
Member
 
L'Avatar di biggestopolino
 
Iscritto dal: Jul 2005
Città: Cagliari
Messaggi: 113
ARRAY E STRUCT IN C

non riesco a trovare su internet buone guide per gli array e struct (e loro applicazione, quindi esercizi vari).
dove posso trovarne??
__________________
quando tutti falliscono.. non provate a chiedere il mio parere!
biggestopolino è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2005, 07:32   #2
GioVesas
Member
 
Iscritto dal: Jun 2004
Città: Pecetto
Messaggi: 73
Per le struct
http://www.phim.unibe.ch/comp_doc/c_...AX/struct.html

In C (non C++), le array sono il termine inglese di matrici es.
a[20]
b[10][10]
__________________
Gianni
GioVesas è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2005, 07:52   #3
biggestopolino
Member
 
L'Avatar di biggestopolino
 
Iscritto dal: Jul 2005
Città: Cagliari
Messaggi: 113
sisi, ma per gli array volevo sapere se si trovano guide spiegate in modo semplice, perchè io sto usando il deitel & deitel e il capitolo occupa un 25 pagine e non è spiegato alla meraviglia
__________________
quando tutti falliscono.. non provate a chiedere il mio parere!
biggestopolino è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2005, 14:31   #4
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Uhm,il deitel & deitel secondo me invece lo spiega in maniera molto particolareggiata,almeno per me è stato abbastanza chiaro nello spiegare gli array.

Provo a fare una spiegazione sintetica di cosa sia un array(matrice):

Quando tu dichiari una variabile,prenoti uno spazio nella memoria adatto a contenere esattamente la dimensione della variabile stessa,con la particolarità che sebbene la dimensione venga "prenotata" in maniera precisa,l'indirizzo di memoria al quale questa variabile viene assegnata non è prevedibile; es:


int var ;

Saranno allocati 4 byte(su altri sistemi potrebbero essere anche 2) per questa variabile "var" all'indirizzo di memoria 1000(per esempio).Questa variabile quindi occuperà la memoria a partire dall'indirizzo 1000 fino all'indirizzo 1003.

Immagina quindi di voler calcolare le spese mensili e di fare un totale annuo:

float spese_gennaio;
float spese_febbraio;
float spese_marzo;

etc....etc...


In questo caso,sarebbe meglio "raggruppare" tutte le variabili float in un "unico contenitore" adatto a contenere esattamente la dimensione delle nostre variabili:

float spese[12] ;

In questo caso,abbiamo appunto dichiarato un array "spese" di tipo float composto da 12 elementi di tipo float che sono numerati da 0 a N-1,o più semplicemente, nel nostro caso da 0 a 12-1 quindi da 0 a 11 e questo perchè l'indice più basso di un array è sempre 0.

In questo semplice esempio,non trova posto però il totale della somma dei 12 mesi perchè sarebbe il 13 elemento,quindi,si potrebbe dichiarare un array più grande adatto a contenerlo anzichè un'altra variabile: float totale;
In modo da avere:

float spese[13];

Per usare delle parole molto semplici,io immagino un array come un casellario in cui gli elementi singoli(ma sempre dello stesso tipo)vengono contenuti in un semplice ordine numerico.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2005, 16:10   #5
biggestopolino
Member
 
L'Avatar di biggestopolino
 
Iscritto dal: Jul 2005
Città: Cagliari
Messaggi: 113
---------------------
#include <stdio.h>

main () {
int n[10]={32,27,64,18,95,14,90,70,60,37};
int i;

for(i=0;i<=9;i++)
n[i]=0;

printf("%s%13s\n","Elemento","Valore");
for(i=0;i<=9;i++)
printf("%7d%13d\n",i,n[i]);

system("pause");
return 0;
}

-------------------------
questo è un programma copiato dal deitel, che dovrebbe visualizzare due colonne, una con il titolo "elemento", l'altra "valore".
stando al libro nella prima colonna dovrebbero essere presenti i valori da 0 a 9 (i valori di "i").
nella seconda dovrebbero comparire i valori 32,27,64,18,95 ecc.
torna tutto tranne che nella seconda colonna compaiono solo degli zeri.
dove sta il problema?
un'altra cosa:
nella stringa
printf("%7d%13d\n",i,n[i]);
compare n[i]
come lo devo interpretare? cosa viene interpretato dal programma questo comando?
__________________
quando tutti falliscono.. non provate a chiedere il mio parere!
biggestopolino è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2005, 16:23   #6
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da biggestopolino
---------------------
#include <stdio.h>

main () {
int n[10]={32,27,64,18,95,14,90,70,60,37};
int i;

for(i=0;i<=9;i++)
n[i]=0;

printf("%s%13s\n","Elemento","Valore");
for(i=0;i<=9;i++)
printf("%7d%13d\n",i,n[i]);

system("pause");
return 0;
}

-------------------------
questo è un programma copiato dal deitel, che dovrebbe visualizzare due colonne, una con il titolo "elemento", l'altra "valore".
stando al libro nella prima colonna dovrebbero essere presenti i valori da 0 a 9 (i valori di "i").
nella seconda dovrebbero comparire i valori 32,27,64,18,95 ecc.
torna tutto tranne che nella seconda colonna compaiono solo degli zeri.
dove sta il problema?
un'altra cosa:
nella stringa
printf("%7d%13d\n",i,n[i]);
compare n[i]
come lo devo interpretare? cosa viene interpretato dal programma questo comando?

Il comportamento che ti da i valori della seconda colonna a zero è normale in quanto sono stati tutti inizializzati a zero da:

for (i = 0; i < 9; i++)
n[i] = 0; /*tutti gli indici dell'array qui vengono messi a zero*/

per la printf, quel n[i] dice appunto di stampare ogni singolo indice dell'array "n".

Per ottenere questo:
Codice:
./fo
Elemento       Valore
      0           32
      1           27
      2           64
      3           18
      4           95
      5           14
      6           90
      7           70
      8           60
      9           37
devi solo ragionare un pochettino sul codice da te postato

Altra cosa:
benchè in molti libri e guide troverai una notazione della main() così:

main()
etc....etc...

sappi che lo standard attuale vuole che la main ritorni sempre un int,quindi tu scrivila sempre:

int main()
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek

Ultima modifica di RaouL_BennetH : 25-08-2005 alle 16:33.
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2005, 17:18   #7
biggestopolino
Member
 
L'Avatar di biggestopolino
 
Iscritto dal: Jul 2005
Città: Cagliari
Messaggi: 113
soluzione?

si ho notato che inizializzando n[i]=0 infatti porta tutto a zero, quindi provando con n[i]=10 ovviamente portava tutto a 10, poi provando ad eliminare l'inizializzazione va a scrivere 10 volte "elemento" e "valore", allora ho pensato di inizializzare n[i] dicendo che n[i]=n[i], e quindi deve essere uguale ai valori che avevo inserito in precedenza.
e in effetti così il programma ha girato, sono andato vicino alla soluzione del problema?
__________________
quando tutti falliscono.. non provate a chiedere il mio parere!

Ultima modifica di biggestopolino : 25-08-2005 alle 17:19. Motivo: mi sono scordato un pezzo di codice
biggestopolino è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2005, 17:23   #8
GioVesas
Member
 
Iscritto dal: Jun 2004
Città: Pecetto
Messaggi: 73
fuochino
__________________
Gianni
GioVesas è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2005, 17:43   #9
biggestopolino
Member
 
L'Avatar di biggestopolino
 
Iscritto dal: Jul 2005
Città: Cagliari
Messaggi: 113
__________________
quando tutti falliscono.. non provate a chiedere il mio parere!

Ultima modifica di biggestopolino : 25-08-2005 alle 17:48.
biggestopolino è offline   Rispondi citando il messaggio o parte di esso
Old 26-08-2005, 10:02   #10
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da RaouL_BennetH
Altra cosa:
benchè in molti libri e guide troverai una notazione della main() così:

main()
etc....etc...

sappi che lo standard attuale vuole che la main ritorni sempre un int,quindi tu scrivila sempre:

int main()
Sicuro? Se la memoria non m'inganna, il tipo di default è l'int, e non è necessario specificarlo come valore di ritorno di una funzione.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 26-08-2005, 12:11   #11
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da cdimauro
Sicuro? Se la memoria non m'inganna, il tipo di default è l'int, e non è necessario specificarlo come valore di ritorno di una funzione.
Per la main dev'essere sempre un int per lo standard C.

questi sono due esempi dichiarando la main void e poi int:

Codice:
#include <stdio.h>

void main() {
       
        printf("sono pippo\n");
       
}
Compilando con gcc e l'opzione -Wall per i warning mi dice:

Codice:
 
gcc -Wall pippo.c
pippo.c:3: warning: return type of 'main' is not 'int'
se provo a non specificare niente:

Codice:
#include <stdio.h>
main() {
      printf("sono sempre pippo\n");
}
al solito, il compilatore come warning mi restituisce:

Codice:
gcc -Wall pippo.c
pippo.c:3: warning: return type defaults to 'int'
pippo.c: In function 'main':
pippo.c:6: warning: control reaches end of non-void function
Ovviamente, se ci piazzo int main, nessun messaggio di warning e gcc è contento
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 26-08-2005, 14:33   #12
biggestopolino
Member
 
L'Avatar di biggestopolino
 
Iscritto dal: Jul 2005
Città: Cagliari
Messaggi: 113
eii

Quote:
Originariamente inviato da GioVesas
fuochino
non mi avete ancora detto come era il comando esatto
__________________
quando tutti falliscono.. non provate a chiedere il mio parere!
biggestopolino è offline   Rispondi citando il messaggio o parte di esso
Old 26-08-2005, 14:46   #13
GioVesas
Member
 
Iscritto dal: Jun 2004
Città: Pecetto
Messaggi: 73
Quello che hai fatto non é sbagliato, ma semplicemente inutele: hai ricopiato un pezzo di memoria su se stessa.
La cosa corretta è semplicemente non fare quel ciclo for.

main () {
int n[10]={32,27,64,18,95,14,90,70,60,37};
int i;
/*
for(i=0;i<=9;i++)
n[i]=m[i];
*/

printf("%s%13s\n","Elemento","Valore");
for(i=0;i<=9;i++)
printf("%7d%13d\n",i,n[i]);

system("pause");
return 0;
}

In alternativa:

main () {
int m[10]={32,27,64,18,95,14,90,70,60,37};
int n[10];
int i;

for(i=0;i<=9;i++)
n[i]=m[i];

printf("%s%13s\n","Elemento","Valore");
for(i=0;i<=9;i++)
printf("%7d%13d\n",i,n[i]);

system("pause");
return 0;
}

cioè copi una matrice su un'altra.
__________________
Gianni
GioVesas è offline   Rispondi citando il messaggio o parte di esso
Old 27-08-2005, 13:44   #14
biggestopolino
Member
 
L'Avatar di biggestopolino
 
Iscritto dal: Jul 2005
Città: Cagliari
Messaggi: 113
ti ringrazio, anche perchè io stesso non capivo perchè dovessi riscrivere 2 volte il for..
infatti quell'esercizio, copiato dal libro, non funzionava
__________________
quando tutti falliscono.. non provate a chiedere il mio parere!
biggestopolino è offline   Rispondi citando il messaggio o parte di esso
Old 27-08-2005, 20:19   #15
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da RaouL_BennetH
Per la main dev'essere sempre un int per lo standard C.
E' un int in generale, se non lo specifichi...
Quote:
questi sono due esempi dichiarando la main void e poi int:

Codice:
#include <stdio.h>

void main() {
       
        printf("sono pippo\n");
       
}
Compilando con gcc e l'opzione -Wall per i warning mi dice:

Codice:
 
gcc -Wall pippo.c
pippo.c:3: warning: return type of 'main' is not 'int'
E' chiaro, perché per convenzione main deve tornare un int.
Quote:
se provo a non specificare niente:

Codice:
#include <stdio.h>
main() {
      printf("sono sempre pippo\n");
}
al solito, il compilatore come warning mi restituisce:

Codice:
gcc -Wall pippo.c
pippo.c:3: warning: return type defaults to 'int'
pippo.c: In function 'main':
pippo.c:6: warning: control reaches end of non-void function
OK, ma il warning dice una cosa giusta: non essendoci il tipo, di default assume che sia int.
Quote:
Ovviamente, se ci piazzo int main, nessun messaggio di warning e gcc è contento
Sì, ma tu prova a compilare senza warning, sennò non vale...
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 27-08-2005, 21:46   #16
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da cdimauro

Sì, ma tu prova a compilare senza warning, sennò non vale...

lol
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura Samsung Micro RGB R95H, il primo LCD a LED rossi...
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Android Auto, il nuovo lettore porta in ...
I nuovi MacBook con display OLED potrebb...
Windows 11: l'aggiornamento KB5124010 fa...
iPhone Duo, la pellicola protettiva del ...
Memorie più costose, NVIDIA aumen...
TSMC potrebbe affiancare Intel nel proge...
Windows 11, un solo simbolo può risparmi...
Niente cloud, niente abbonamenti, niente...
Prime o meno, Amazon è piena di o...
Kindle in offerta: e-reader base a 89€ e...
Hackerato l'account ufficiale Microsoft ...
Tutti i dispositivi Ring: videocamere 2K...
Memorie HBM, la domanda si concentra su ...
Dash cam 70mai 4K da 74,99€: A800 Nano, ...
Nuovi rincari da Fastweb: l'operatore ha...
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:51.


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