esercizio in C

Bernardo Chiaravalli

Nuovo Utente
63
6
dovrei costruire una matrice che si riempie di numeri casuali, nel quale il numero delle righe e delle colonne è stabilito dall'utente.
sono arrivato qua ma, dopo aver accettato i valori non riesco a riampirla di numeri.
Potreste darmi un aiuto?
Grazie

Codice:
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>

int NR;
int NC;
int i;
int j;


main() {
    
        printf("inserisci numero righe:\n");
        scanf("%d", &NR);
        
        
        printf("inserisci numero colonne:\n");
        scanf("%d", &NC);

        return NR;
        return NC;
        
        int matrix[NR][NC];
        int i, j, sum;
        sum = 0;
    
    
    
    
      { for (i = 0; i < NR; i++)
         
           {
            for (j = 0; j < NC; j++)
            {
                int z;
                z = rand() % 100;
                matrix[i][j] = z;

             
            }
           }
      }
 

_Achille

Utente Èlite
3,067
725
CPU
Intel i5-6600K @4.6 GHz
Dissipatore
Cryorig H5
Scheda Madre
ASRock Z170 Extreme 6
HDD
WesternDigital 1TB & Crucial MX200 250GB
RAM
Corsair Ven 16GB DDR4 2133MHz
GPU
Sapphire RX 580 Nitro+
Monitor
Dell S2418H
PSU
RM550X
Case
NZXT S340
Periferiche
Anne Pro 2, Razer Abyssus
OS
Windows 10 Pro
E perché usi uno scope per il for?
 
  • Mi piace
Reazioni: Andretti60

xMattyz

Utente Attivo
241
52
Ciao, così ti funziona correttamente e ti stampa la matrice generata.

C:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>

int NR;
int NC;
int i;
int j;


main() {
    
    printf("inserisci numero righe:\n");
    scanf("%d", &NR);
    
    
    printf("inserisci numero colonne:\n");
    scanf("%d", &NC);
    
    int matrix[NR][NC];
    
    for (i = 0; i < NR; i++)
        for (j = 0; j < NC; j++){
            matrix[i][j] = rand() % 100;
        }
        
    for (i = 0; i < NR; i++)
        for (j = 0; j < NC; j++){
            printf("Riga %d Colonna %d : %d \n", i, j, matrix[i][j]);
        }
}
 

_Achille

Utente Èlite
3,067
725
CPU
Intel i5-6600K @4.6 GHz
Dissipatore
Cryorig H5
Scheda Madre
ASRock Z170 Extreme 6
HDD
WesternDigital 1TB & Crucial MX200 250GB
RAM
Corsair Ven 16GB DDR4 2133MHz
GPU
Sapphire RX 580 Nitro+
Monitor
Dell S2418H
PSU
RM550X
Case
NZXT S340
Periferiche
Anne Pro 2, Razer Abyssus
OS
Windows 10 Pro
Ciao, così ti funziona correttamente e ti stampa la matrice generata.

C:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>

int NR;
int NC;
int i;
int j;


main() {
   
    printf("inserisci numero righe:\n");
    scanf("%d", &NR);
   
   
    printf("inserisci numero colonne:\n");
    scanf("%d", &NC);
   
    int matrix[NR][NC];
   
    for (i = 0; i < NR; i++)
        for (j = 0; j < NC; j++){
            matrix[i][j] = rand() % 100;
        }
       
    for (i = 0; i < NR; i++)
        for (j = 0; j < NC; j++){
            printf("Riga %d Colonna %d : %d \n", i, j, matrix[i][j]);
        }
}
Non è questione di dargli l’esercizio già fatto. Deve capire.
E comunque potevi anche rimuovere quelle variabili globali e inglobarle nel main. In più quella dichiarazione di matrice non è permessa da certi compilatori
 
  • Mi piace
Reazioni: Andretti60

xMattyz

Utente Attivo
241
52
Non è questione di dargli l’esercizio già fatto. Deve capire.
E comunque potevi anche rimuovere quelle variabili globali e inglobarle nel main. In più quella dichiarazione di matrice non è permessa da certi compilatori
Condivido il fargli capire l'esercizio, sarò io, ma leggere il codice delle soluzioni è la cosa che mi aiuta di più.
Per l'ottimizzazione si potrebbe anche rimuovere il secondo ciclo e stampare direttamente nel primo, ma considerando che parliamo di 3 righe di codice, non mi sembra manco il caso di perderci tempo.
Infine per quanto riguarda la dichiarazione della matrice, da quel che rircordo dalle superiori, borland e dev (ide piu' utilizzati a livello scolastico), accettano entrambi tale dichiarazione.
 

_Achille

Utente Èlite
3,067
725
CPU
Intel i5-6600K @4.6 GHz
Dissipatore
Cryorig H5
Scheda Madre
ASRock Z170 Extreme 6
HDD
WesternDigital 1TB & Crucial MX200 250GB
RAM
Corsair Ven 16GB DDR4 2133MHz
GPU
Sapphire RX 580 Nitro+
Monitor
Dell S2418H
PSU
RM550X
Case
NZXT S340
Periferiche
Anne Pro 2, Razer Abyssus
OS
Windows 10 Pro
Condivido il fargli capire l'esercizio, sarò io, ma leggere il codice delle soluzioni è la cosa che mi aiuta di più.
Per l'ottimizzazione si potrebbe anche rimuovere il secondo ciclo e stampare direttamente nel primo, ma considerando che parliamo di 3 righe di codice, non mi sembra manco il caso di perderci tempo.
Infine per quanto riguarda la dichiarazione della matrice, da quel che rircordo dalle superiori, borland e dev (ide piu' utilizzati a livello scolastico), accettano entrambi tale dichiarazione.
Lo accetta il compilatore MinGW ma parliamo ormai di un compilatore poco supportato.
Ora non so cosa dichiari precisamente lo standard C, ma in C++ è proibito utilizzare valori non costanti e bisogna quindi utilizzare o vettori o la memoria dinamica.
 

xMattyz

Utente Attivo
241
52
Lo accetta il compilatore MinGW ma parliamo ormai di un compilatore poco supportato.
Ora non so cosa dichiari precisamente lo standard C, ma in C++ è proibito utilizzare valori non costanti e bisogna quindi utilizzare o vettori o la memoria dinamica.
Piccolo OT e poi basta, io quel che so dello C e C++ è relativo a delle infarinature scolastiche, ricordo anche io che per il c++ bisogna utilizzare dei vettori, ma nello specifico non saprei argomentarti.
Detto ciò, se il ragazzo ha dei dubbi, lo faccia presente e proveremo a chiarirli.
 
  • Mi piace
Reazioni: _Achille

Ibernato

Utente Èlite
4,328
2,047
OS
Windows 10 Pro / Ubuntu 22.04
Condivido il fargli capire l'esercizio, sarò io, ma leggere il codice delle soluzioni è la cosa che mi aiuta di più.
Per l'ottimizzazione si potrebbe anche rimuovere il secondo ciclo e stampare direttamente nel primo, ma considerando che parliamo di 3 righe di codice, non mi sembra manco il caso di perderci tempo.
Infine per quanto riguarda la dichiarazione della matrice, da quel che rircordo dalle superiori, borland e dev (ide piu' utilizzati a livello scolastico), accettano entrambi tale dichiarazione.
La dichiarazione della matrice l'accetta anche il compilatore GCC (che è quello più usato ora).
Ma una volta che studia i puntatori, la matrice deve essere inizializzata con quelli
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili