30/10/20 1:24
Godrek
Salve,
dovrei creare un qualcosa del genere:
int n;
printf("Inserisci un intero:");
scanf("%d", &n);
int var_1;
int var_2;
...
int var_n;
Come posso fare, dato che le dichiarazioni vanno messe prima dei comandi?
Ultima modifica effettuata da Godrek 30/10/20 1:28
aaa
30/10/20 7:34
AldoBaldo
Puoi dichiarare var come puntatore a int, poi allocare con malloc() o con calloc() un array di int di dimensioni n.
Ad esempio...
#include <stdio.h>
#include <stdlib.h>
int main() {
int *var = NULL;
int n;
printf( "Inserisci un intero: " );
scanf( "%d", &n );
var = calloc( n, sizeof(int) );
if( NULL != var ) {
printf( "Array di %d elementi correttamente allocato.\n", n );
// fai quel che ti serve con l'array di int
// quando non ti serve piu', libera la
// memoria allocata (e' bene anche annullare
// i puntatori quando non sono piu' validi)
free( var ); var = NULL;
printf( "Array di %d elementi deallocato.\n", n );
}
else {
// se c'e' stato un errore l'array non
// e' stato allocato e non puoi usarlo
printf( "Array di %d elementi non allocato.\n", n );
}
return 0;
}
Ultima modifica effettuata da AldoBaldo 30/10/20 7:48
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
30/10/20 9:19
AldoBaldo
Un'alternativa, nel caso non sapessi usare malloc() e compagnia bella, potrebbe essere prevedere una quantità massima di elementi. Tipo...
#include <stdio.h>
#include <stdlib.h>
#define MAX_VALORI 128 // 128 e' un valore arbitrario
int main() {
int var[MAX_VALORI];
int n = 0;
while( n<1 || n>MAX_VALORI ) {
printf( "Inserisci un intero compreso tra 1 e %d: ", MAX_VALORI );
scanf( "%d", &n );
if( n>0 && n<=MAX_VALORI ) {
printf( "Array di %d elementi disponibile.\n", n );
// fai quel che ti serve con i
// primi n elementi dell'array di int
}
else {
// non puoi usare l'array se la quantita'
// di elementi richiesti non e' compatibile
// con le dimensioni previste
printf( "Impossibile impiegare un array di %d elementi.\n\n", n );
}
}
return 0;
}
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
30/10/20 17:44
nessuno
Godrek ma li hai studiati gli array?
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
01/11/20 9:36
AldoBaldo
Ormai sono "diversamente giovane" e i modelli di comportamento tra i quali sono cresciuto si son fatti obsoleti. Ricordo anni nei quali era considerato normale interagire con coloro ai quali si ponevano domande alle quali si otteneva risposta, e salutare (magari ringraziando) prima di andarsene. Quando si comincia a pensare "ah, bei tempi!"... è allora che ci si accorge di esser vecchi.
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
01/11/20 20:57
Carlo
Postato originariamente da AldoBaldo:
Ormai sono "diversamente giovane" e i modelli di comportamento tra i quali sono cresciuto si son fatti obsoleti. Ricordo anni nei quali era considerato normale interagire con coloro ai quali si ponevano domande alle quali si otteneva risposta, e salutare (magari ringraziando) prima di andarsene. Quando si comincia a pensare "ah, bei tempi!"... è allora che ci si accorge di esser vecchi.
Non disperare c'è sempre qualcuno che guarda, ieri, oggi e sopratutto domani....
Ogni tanto leggo di C, ma con il tuo esempio, finalmente mi sono deciso a verificare e toccare con mano calloc e malloc, che forza!!!
Ma il C è terribile ogni cosa che capisci schiude altre decine di incognite.
in programmazione tutto è permesso
01/11/20 22:43
AldoBaldo
Grazie Carlo. Si vede che sei anche tu di una generazione valorizzata dal trascorrere del tempo. (intende essere un complimento, con una strizzatina d'occhio)
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
02/11/20 15:38
nessuno
Il C è il primo linguaggio che un futuro programmatore dovrebbe imparare. E intendo non solo come "sintassi" o potenzialità della libreria ma "nel profondo" del suo rapporto con la macchina.
La cosa migliore sarebbe farlo in parallelo con l'Assembly (intendo il "linguaggio macchina"
, magari prima quelli più semplici, poi quelli più complessi, che vanno *di pari passo* con il C.
Alla fine di questo processo, si è fatta 3/4 di strada per il lavoro nel mondo della programmazione e dell'informatica.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.