Godrek (Normal User)
Pro
Messaggi: 76
Iscritto: 04/08/2015
|
Salve,
dovrei creare un qualcosa del genere:
Codice sorgente - presumibilmente C++ |
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 il 30/10/2020 alle 2:28 |
|
AldoBaldo (Member)
Guru
Messaggi: 699
Iscritto: 08/01/2015
|
Puoi dichiarare var come puntatore a int, poi allocare con malloc() o con calloc() un array di int di dimensioni n.
Ad esempio...
Codice sorgente - presumibilmente C++ |
#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 il 30/10/2020 alle 8: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. |
|
AldoBaldo (Member)
Guru
Messaggi: 699
Iscritto: 08/01/2015
|
Un'alternativa, nel caso non sapessi usare malloc() e compagnia bella, potrebbe essere prevedere una quantità massima di elementi. Tipo...
Codice sorgente - presumibilmente C++ |
#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. |
|
nessuno (Normal User)
Guru^2
Messaggi: 6380
Iscritto: 03/01/2010
|
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à. |
|
AldoBaldo (Member)
Guru
Messaggi: 699
Iscritto: 08/01/2015
|
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. |
|
Carlo (Member)
Guru
Messaggi: 1316
Iscritto: 29/01/2018
|
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 |
|
AldoBaldo (Member)
Guru
Messaggi: 699
Iscritto: 08/01/2015
|
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. |
|
nessuno (Normal User)
Guru^2
Messaggi: 6380
Iscritto: 03/01/2010
|
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à. |
|