Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza
OPPO Reno14 F 5G si propone come smartphone di fascia media con caratteristiche equilibrate. Il device monta processore Qualcomm Snapdragon 6 Gen 1, display AMOLED da 6,57 pollici a 120Hz, tripla fotocamera posteriore con sensore principale da 50MP e generosa batteria da 6000mAh con ricarica rapida a 45W. Si posiziona come alternativa accessibile nella gamma Reno14, proponendo un design curato e tutto quello che serve per un uso senza troppe preoccupazioni.
Destiny Rising: quando un gioco mobile supera il gioco originale
Destiny Rising: quando un gioco mobile supera il gioco originale
Tra il declino di Destiny 2 e la crisi di Bungie, il nuovo titolo mobile sviluppato da NetEase sorprende per profondità e varietà. Rising offre ciò che il live service di Bungie non riesce più a garantire, riportando i giocatori in un universo coerente. Un confronto che mette in luce i limiti tecnici e strategici dello studio di Bellevue
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro è un registratore digitale elegante e tascabile con app integrata che semplifica trascrizioni e riepiloghi, offre funzioni avanzate come template e note intelligenti, ma resta vincolato a un piano a pagamento per chi ne fa un uso intensivo
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


Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza Sottile, leggero e dall'autonomia WOW: OPPO Reno...
Destiny Rising: quando un gioco mobile supera il gioco originale Destiny Rising: quando un gioco mobile supera il...
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo Plaud Note Pro convince per qualità e int...
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Sean Duffy (amministratore ad interim de...
Renault lancia la super promo: porte ape...
Il tuo portatile ASUS ROG non funziona c...
Zoom migliora il suo operatore virtuale ...
Traguardo Omoda & Jaecoo in Italia: ...
EHT mostra nuove immagini di come cambia...
Il gioiellino di Fastned: aperti in Belg...
La nuova mini workstation AI di MinisFor...
Formula 1 2026, nuove gare Sprint in cal...
MacBook Pro con display OLED e supporto ...
Poste Italiane: dati di milioni di utent...
Microsoft blocca RaccoonO365, rubate olt...
15 anni dopo Skate 3, il gioco torna sot...
Molte novità per MongoDB: version...
Cina, stop alle GPU NVIDIA: Pechino inti...
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: 20:25.


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