Torna indietro   Hardware Upgrade Forum > Software > Programmazione

NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
Dopo anni di attesa e una lunga fase di sviluppo, Noctua entra nel mercato dei dissipatori a liquido AIO con la nuova serie NL-LC1. Forte dell'esperienza maturata nel raffreddamento ad aria, l'azienda austriaca promette di portare la propria filosofia fatta di qualità costruttiva, attenzione ai dettagli e silenziosità anche in questo segmento. Abbiamo provato il nuovo sistema per scoprire se riesce a distinguersi in un mercato ormai molto competitivo.
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Arrivato sul mercato italiano a fine marzo, la serie Boox Go 10.3 (Gen II) offre Android 15, penna da 4096 livelli e retroilluminazione opzionale (nel modello da noi provato, Lumi, presente). La serie si compone di due tablet ePaper che fanno da e-reader, blocco note digitale e persino browser, tutto a un prezzo che fa dimenticare i prodotti di brand più blasonati
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming
Pannello QD-OLED da 32 pollici con risoluzione 4K, frequenza di aggiornamento a 240Hz e tempi di risposta rapidissimi: il Gigabyte MO32U24 evolve il progetto del suo predecessore MO32U e alza ulteriormente l'asticella delle prestazioni. È ancora una volta un monitor indirizzato ai giocatori più esigenti
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-01-2004, 18:28   #1
xber-gigi
Senior Member
 
L'Avatar di xber-gigi
 
Iscritto dal: Jun 2003
Città: Pianeta Terra
Messaggi: 281
INPUT DA TASTIERA DI UN ARRAY2D

RAGAZZI DEVO SCRIVERE UN PROGRAMMA CHE CON DEGLI INPUT DA TASTIERA DEFINISCA UN ARRAY2D
DOVE SBAGLIO???

#include <stdio.h>
void main ()
{
int righe;
int colonne;
int i;
int l;
int matrice[1][1];
int x;
printf ("INSERIRE IL NUMERO DI RIGHE DELLA MATRICE\n");
scanf ("%d",&righe);
printf ("INSERIRE IL NUMERO DI COLONNE DELLA MATRICE\n");
scanf ("%d",&colonne);
matrice[1][1] = matrice[righe][colonne];

/* INSERIMENTO DATI DELLA MATRICE */

for (i=0;i<righe;i++)
{
for (l=0;l<colonne;l++)
{
printf ("DATO NUMERO %d DELLA RIGA NUMERO %d\n",l+1,i+1);
scanf ("%d", &x);
matrice[i][l] = x;
}

}

/* STAMPA DELLA MATRICE */

for (i=0;i<=righe;i++)
{
for (l=0;l<=colonne;l++)
{
printf ("%d ", matrice[i][l]);
}
printf ("\n");

}
}

AIUTO!!!!
__________________
LE AVVENTURE DI AL METALLER E CHELA FDM - IL FOTOROMANZO TRASH!
When I'm walking a dark road... I am a man who walks alone...

Ultima modifica di xber-gigi : 18-01-2004 alle 18:35.
xber-gigi è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2004, 18:38   #2
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
tu non puoi fare questo per cambiare la dimensione della matrice
Codice:
matrice[1][1] = matrice[righe][colonne];
invece di creare la matrice di dimensioni [1][1]. ne crei direttamente una dopo aver ricevuto in input righe e colonne scrivendo
Codice:
int matrice[righe][colonne];
e poi la inizializzi. per il resto mi sembra sia fatto tutto bene.
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2004, 18:48   #3
xber-gigi
Senior Member
 
L'Avatar di xber-gigi
 
Iscritto dal: Jun 2003
Città: Pianeta Terra
Messaggi: 281
non funge!
mi dice

array2d.c(14) : error C2143: syntax error : missing ';' before 'type'
__________________
LE AVVENTURE DI AL METALLER E CHELA FDM - IL FOTOROMANZO TRASH!
When I'm walking a dark road... I am a man who walks alone...
xber-gigi è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2004, 22:54   #4
ri
Senior Member
 
L'Avatar di ri
 
Iscritto dal: Feb 2003
Città: fra casa e lavoro
Messaggi: 1061
non è possibile allocare una matrice dinamicamente in quel modo
per allocarla dinamicamente dovete usare una malloc, ricordandosi poi di fare una free alla fine

Codice:
int i = 0;
int nrow = 0;
int ncol = 0;

/* mi carico nrow e ncol */

int** mat = (int**)malloc(nrow);
for(; i < nrow; i++)
      mat[i] = (int*)malloc(ncol);

/* mi ci faccio i miei pastrocchi */

i = 0;
for(; i < nrow; i++)
      free(mat[i]);
free mat;
gosh è una vita che non faccio allocazioni dinamiche di matrici ed è tardi, ma dovrebbe essere una cosa così

EDIT: l'esempio sopra riportato presume l'utilizzo del C
in caso di C++ usare new e delete
inoltre non fa nessun controllo sulla corretta esecuzione della malloc per 2 motivi: 1 non avevo voglia, 2 (che è proprio una scusa ) rendere più leggibile il codice

Ultima modifica di ri : 19-01-2004 alle 07:56.
ri è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2004, 23:48   #5
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
no no, guarda che il c99 permette di allocare un array di dimensioni variabili (cioè che dipendono da una variabile che assume dei valori in runtime). per quanto riguarda quell'errore dice che hai dimenticato un ; alla riga 14 controlla un po'!!
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2004, 07:56   #6
ri
Senior Member
 
L'Avatar di ri
 
Iscritto dal: Feb 2003
Città: fra casa e lavoro
Messaggi: 1061
non ho dimenticato nessun ;
ho messo un + di troppo invece ^^
oh avevo sonno ^^'

questa cosa del nuovo standard 99 non la sapevo
ma dubito che in ambito scolastico (universitario e non) si faccia riferimento all'ultimo standard, anzi
ri è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2004, 08:49   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ad occhio il codice di Vegeta SSJ5 non va bene...
Codice:
#include <stdio.h>

int main(void) {
	int a = 10;
	char array[a];
	printf("Dimensione array = %d\n", sizeof(array));
	printf(" Inserisci dimensione array: ");
	scanf("%d", &a);
	printf("Dimensione array = %d\n", sizeof(array));
	exit(0);
}
Questo sopra in C99 è legale, ma cambiando la dimensione di a la dimensione dell'array non cambia...

In C99 si possono allocare array di dimensione non const...ma l'unico modo per usarli in maniera dinamica è fare una funzione che li alloca e li usa al tempo stesso...ma non sranno mai accessibili dall'esterno...
In pratica la variaible usata per dimensionare l'array deve essere definita prima delal dichiarazione dell'array...e visto che tutte le dichiarazione devono essere fatte tutte subito dopo l'intestazione della funzione (a parte le nuove variabili automatiche nei cicli for) ci sono solo due modi:

- dichiarare e inizializzare la variabile passata come dimensione dell'array prima della dichiarazione dell'array (come fatto nel codice precedente)
- usare un parametro della funzione per dimensionare l'array

Per il secondo metodo:
Codice:
void f(int a)
{
   int array[a];
   printf("Dimensione array = %d\n", sizeof(array));
   //come vedete array può esistere solamente qui dentro...

}
int main(void)
{
   int a;
   printf(" Inserisci dimensione array: ");
   scanf("%d", &a);
   f(a);
   return 0;
}
Comunque forse mi è venuto in mente un modo per aggirare il problema...faccio qualche prova e riposto...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2004, 08:55   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ci provavo con static...ma che testa... Le variabili dichiarate come static vengono create prima dell'esecuzione del programma quindi non è possibile rendere static un array co dimensione variabile...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2004, 09:04   #9
ri
Senior Member
 
L'Avatar di ri
 
Iscritto dal: Feb 2003
Città: fra casa e lavoro
Messaggi: 1061
scusa Cionci, ma il modo che ho detto io che ha di brutto?
ri è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2004, 09:06   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Niente contro il tuo metodo...anzi... E' lo stesso che avrei usato io
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2004, 09:16   #11
ri
Senior Member
 
L'Avatar di ri
 
Iscritto dal: Feb 2003
Città: fra casa e lavoro
Messaggi: 1061
ah mi pareva
ri è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2004, 11:37   #12
xber-gigi
Senior Member
 
L'Avatar di xber-gigi
 
Iscritto dal: Jun 2003
Città: Pianeta Terra
Messaggi: 281
Mi sa proprio che in C bisogna per forza specificare la grandezza di un array con delle costanti!
__________________
LE AVVENTURE DI AL METALLER E CHELA FDM - IL FOTOROMANZO TRASH!
When I'm walking a dark road... I am a man who walks alone...
xber-gigi è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2004, 11:43   #13
ri
Senior Member
 
L'Avatar di ri
 
Iscritto dal: Feb 2003
Città: fra casa e lavoro
Messaggi: 1061
se fai un'allocazione statica di una matrice, col C che conosco io (non il 99) devi per forza farlo con delle costanti, e l'unico modo per allocarla dinamicamente è fare come ho scritto prima
poi non so se i nuovi standard hanno introdotto delle modifiche...
ri è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2004, 21:04   #14
xybercom
Senior Member
 
L'Avatar di xybercom
 
Iscritto dal: Dec 2000
Città: dintorni di Seregno (MI)
Messaggi: 312
Quote:
Originariamente inviato da cionci

In C99 si possono allocare array di dimensione non const...ma l'unico modo per usarli in maniera dinamica è fare una funzione che li alloca e li usa al tempo stesso...ma non sranno mai accessibili dall'esterno...
Ho letto solo adesso questo thread, volevo segnalare che il codice di VegetaSSJ5 si può sistemare così.

Codice:
#include <stdio.h>
                                                                                                                            
int main(void)
{
    int a,k;
    printf(" Inserisci dimensione array: ");
    scanf("%d", &a);
    char array[a];
    printf("Dimensione array = %d\n", sizeof(array));
    
    /* e l'array funziona .. */                                                                                                                        
    for ( k=0; k<a; k++ )
            array[k]=-k;
                                                                                                                            
    for ( k=0; k<a; k++ )
            printf ( "elemento %i = %d\n" , k, array[k]);
                                                                                                                            
    return 0;
}
Questo funziona senza problemi con gcc anche compilato con le opzioni -o2 -Wall -pedantic e quindi penso che dovrebbe funzionare su un qualunque compilatore C99, anche se con un array monodimensionale una malloc mi sembra più "normale".
In questo caso ho avuto andare contro la "regola" di dichiarare tutte le variabili all'inizio del main ma forse in C99 questa regola non c'è.
__________________
powered by GNU/Linux [ Debian Sid ]
xybercom è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2004, 22:35   #15
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da xybercom
In questo caso ho avuto andare contro la "regola" di dichiarare tutte le variabili all'inizio del main ma forse in C99 questa regola non c'è.
Boh...non so cosa dirti...
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con ...
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming Gigabyte MO32U24 OLED: il 4K a 240Hz su un panne...
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh Recensione realme 16 5G: lo smartphone con Selfi...
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni Come rispettare tutte le nuove regole per i mono...
Intel 18A-P è già in fase ...
Logitech G305 Lightspeed e G316 X 98: 8....
Qualcomm Snapdragon Reality Elite uffici...
Snapdragon START: arriva la piattaforma ...
Kioxia Exceria G3: il modella da 4 TB &e...
Gemini 3.5 Flash delude nei test Android...
DREAME X50 Ultra Complete a 749€ per il ...
Prezzi console handheld alle stelle: la ...
Toyota presenta il primo pickup elettric...
Prime Day anticipato, tutti gli smartpho...
Dyson V10 Konical: il primo aspirapolver...
FSR 4.1 su Radeon 6000, AMD spiega perch...
Hisense svela la gamma TV 2026: RGB Mini...
Narwal lancia gli sconti Prime Day 2026:...
SpaceX ha comprato Cursor: accordo da 60...
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: 03:35.


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