Torna indietro   Hardware Upgrade Forum > Software > Programmazione

FUJIFILM X-T30 III, la nuova mirrorless compatta
FUJIFILM X-T30 III, la nuova mirrorless compatta
FUJIFILM X-T30 III è la nuvoa fotocamera mirrorless pensata per chi si avvicina alla fotografia e ricerca una soluzione leggera e compatta, da avere sempre a disposizione ma che non porti a rinunce quanto a controllo dell'immagine.
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati
Da Las Vegas, la visione di Larry Ellison e la concretezza di Clay Magouyrk definiscono la nuova traiettoria di Oracle: portare l’intelligenza artificiale ai dati, non i dati all’intelligenza, costruendo un’infrastruttura cloud e applicativa in cui gli agenti IA diventano parte integrante dei processi aziendali, fino al cuore delle imprese europee
Micron e millisecondi: la piattaforma ServiceNow guida l'infrastruttura IT di Aston Martin F1
Micron e millisecondi: la piattaforma ServiceNow guida l'infrastruttura IT di Aston Martin F1
Dalla precisione estrema dei componenti alla gestione digitale dei processi: come la piattaforma ServiceNow consente ad Aston Martin Aramco Formula One Team di ottimizzare risorse IT e flussi operativi in un ambiente dove ogni millesimo di secondo conta
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-08-2005, 00: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, 08: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, 08: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, 15: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, 17: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, 17: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 17:33.
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2005, 18: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 18:19. Motivo: mi sono scordato un pezzo di codice
biggestopolino è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2005, 18: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, 18: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 18:48.
biggestopolino è offline   Rispondi citando il messaggio o parte di esso
Old 26-08-2005, 11: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, 13: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, 15: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, 15: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, 14: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, 21: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, 22: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


FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati Oracle AI World 2025: l'IA cambia tutto, a parti...
Micron e millisecondi: la piattaforma ServiceNow guida l'infrastruttura IT di Aston Martin F1 Micron e millisecondi: la piattaforma ServiceNow...
ASUS GeForce RTX 5080 Noctua OC Edition: una custom fenomenale, ma anche enorme ASUS GeForce RTX 5080 Noctua OC Edition: una cus...
Dreame Aqua10 Ultra Roller, la pulizia di casa con un rullo Dreame Aqua10 Ultra Roller, la pulizia di casa c...
Il nuovo M5 fa la differenza anche nel g...
Le AirPods ora sono in grado di rilevare...
Oggi su Amazon succede di tutto: sconti ...
'Copilot Gaming mi spiava!': le accuse d...
Mova P50 Pro Ultra, robot aspirapolvere ...
Speciale action cam: doppio sconto solo ...
Eureka J15 Ultra conquista Amazon: aspir...
Game Pass è sempre più ric...
20 milioni di utenti contro Apple: grand...
La sonda spaziale europea ESA JUICE &egr...
La capsula Orion Integrity è stat...
Intel Nova Lake: i driver Linux svelano ...
Nothing punta sulla fascia bassa: ecco c...
Redmi Watch 6 è ufficiale: si pre...
Arriva Snapdragon 6s Gen 4: l'obiettivo ...
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: 23:29.


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