C++: Array 2D e numeri random

DieDogg

Nuovo Utente
9
0
CPU
i7 4790k
Scheda Madre
sharkbay lenovo
HDD
1 Tb
RAM
8gb
GPU
Nvidia GTX 970 Oc
Audio
NVIDIA High Definition Audio
Monitor
Samsung T24C300
PSU
750W
Case
Antec GX300 Windowed
OS
Windows 7 Home Premium
Salve, devo svolegere questo esercizio ma non so da dove iniziare, :look: se qualcuno di buon cuore mi saprebbe aiutare gliene sarei grato.:sisi:
Allego traccia e Flow Chart.
 

Allegati

  • Traccia.PNG
    Traccia.PNG
    57.9 KB · Visualizzazioni: 200
  • FlowChart.PNG
    FlowChart.PNG
    107.9 KB · Visualizzazioni: 184

DieDogg

Nuovo Utente
9
0
CPU
i7 4790k
Scheda Madre
sharkbay lenovo
HDD
1 Tb
RAM
8gb
GPU
Nvidia GTX 970 Oc
Audio
NVIDIA High Definition Audio
Monitor
Samsung T24C300
PSU
750W
Case
Antec GX300 Windowed
OS
Windows 7 Home Premium
#include <iostream>
#include <time.h>
using namespace std;

const int massimo=100;

int dimensione_righe();
int dimensione_colonne();
void caricamento_matrice(int [massimo][massimo], int, int);
void stampa_matrice(int [massimo][massimo], int, int);
void opposto(int [massimo][massimo], int, int);

int dimensione_righe()
{
int nr;
cout<<"Inserisci il numero di righe: ";
cin>>nr;
while (nr>massimo)
{

cout<<"Errore. Inserisci il numero di righe: ";
cin>>nr;
}
return nr;
}

int dimensione_colonne()
{
int nc;
cout<<"Inserisci il numero di colonne: ";
cin>>nc;
while (nc>massimo)
{
cout<<"Errore. Inserisci il numero di colonne: ";
cin>>nc;
}

return nc;
}

void caricamento_matrice(int m[massimo][massimo], int nr, int nc)
{
srand(time(NULL));
int x;
int y;
cout<<"Inserisci il valore massimo: ";
cin>>x;
cout<<"Inserisci il valore minimo: ";
cin>>y;
for (int i=0; i<nr; i++)
{
for (int j=0; j<nc; j++)
{
m[j]=(rand()%x)+y;
}
}
}

void stampa_matrice(int m[massimo][massimo], int nr, int nc)
{
for (int i=0; i<nr; i++)
{
for (int j=0; j<nc; j++)
{
cout<<m[j]<<"\t";
}
cout<<endl;
}
}

int main()
{
int matrice[massimo][massimo];
int righe=dimensione_righe();
cout<<endl;
int colonne=dimensione_colonne();
cout<<endl;
caricamento_matrice(matrice, righe, colonne);
cout<<endl<<"Matrice caricata: "<<endl;
stampa_matrice(matrice, righe, colonne);

return 0;
}
 

_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
Cosa non sai fare di preciso?
 

TheJudge

Utente Attivo
335
84
CPU
i5-8600k
Dissipatore
Cooler Master TX3 EVO
Scheda Madre
MSI Z370 SLI PLUS
HDD
SAMSUNG 840 Pro 250GB + SSD Sandisk 250GB
RAM
Hiperx 2x8GB DDR4 @2666Hz
GPU
Asus Strix 1070TI
Monitor
1 Asus 24" fullHD + BENQ 27" fullHD
PSU
EVGA SuperNova 850W 80+ gold
Case
NZXT S340
OS
Windows 10 Pro
Nella funzione carica_matrice() l'istruzione m[j]=(rand()%x)+y; non funzionerà mai.
Devi riempire una matrice [j] e così facendo stai riempiendo un array [j] (che tra l'altro non esiste e quindi immagino che crashi tutto o ti dia un null point). ATTENZIONE AGLI INDICI!!!
 
  • Mi piace
Reazioni: DieDogg

DieDogg

Nuovo Utente
9
0
CPU
i7 4790k
Scheda Madre
sharkbay lenovo
HDD
1 Tb
RAM
8gb
GPU
Nvidia GTX 970 Oc
Audio
NVIDIA High Definition Audio
Monitor
Samsung T24C300
PSU
750W
Case
Antec GX300 Windowed
OS
Windows 7 Home Premium
Mi da questo errore [Error] 'rand' was not declared in this scope
 

TheJudge

Utente Attivo
335
84
CPU
i5-8600k
Dissipatore
Cooler Master TX3 EVO
Scheda Madre
MSI Z370 SLI PLUS
HDD
SAMSUNG 840 Pro 250GB + SSD Sandisk 250GB
RAM
Hiperx 2x8GB DDR4 @2666Hz
GPU
Asus Strix 1070TI
Monitor
1 Asus 24" fullHD + BENQ 27" fullHD
PSU
EVGA SuperNova 850W 80+ gold
Case
NZXT S340
OS
Windows 10 Pro
Hai importato la libreria per il rand() ? mi pare sia la stdlib.h
In ogni caso m[j] è sbagliato devi indicizzare sia la riga sia la colonna.
 
  • Mi piace
Reazioni: DieDogg

DieDogg

Nuovo Utente
9
0
CPU
i7 4790k
Scheda Madre
sharkbay lenovo
HDD
1 Tb
RAM
8gb
GPU
Nvidia GTX 970 Oc
Audio
NVIDIA High Definition Audio
Monitor
Samsung T24C300
PSU
750W
Case
Antec GX300 Windowed
OS
Windows 7 Home Premium
@TheJudge come verrebbe fuori una volta indicizzata si la riga che la colonna? Scusa, non so proprio dove mettere le mani quello che vedi l'ho fatto insieme ad un amico.
 

Fenix27

Utente Attivo
863
220
#include <iostream>
#include <time.h>
using namespace std;

const int massimo=100;

int dimensione_righe();
int dimensione_colonne();
void caricamento_matrice(int [massimo][massimo], int, int);
void stampa_matrice(int [massimo][massimo], int, int);
void opposto(int [massimo][massimo], int, int);

int dimensione_righe()
{
int nr;
cout<<"Inserisci il numero di righe: ";
cin>>nr;
while (nr>massimo)
{

cout<<"Errore. Inserisci il numero di righe: ";
cin>>nr;
}
return nr;
}

int dimensione_colonne()
{
int nc;
cout<<"Inserisci il numero di colonne: ";
cin>>nc;
while (nc>massimo)
{
cout<<"Errore. Inserisci il numero di colonne: ";
cin>>nc;
}

return nc;
}

void caricamento_matrice(int m[massimo][massimo], int nr, int nc)
{
srand(time(NULL));
int x;
int y;
cout<<"Inserisci il valore massimo: ";
cin>>x;
cout<<"Inserisci il valore minimo: ";
cin>>y;
for (int i=0; i<nr; i++)
{
for (int j=0; j<nc; j++)
{
m[j]=(rand()%x)+y;
}
}
}

void stampa_matrice(int m[massimo][massimo], int nr, int nc)
{
for (int i=0; i<nr; i++)
{
for (int j=0; j<nc; j++)
{
cout<<m[j]<<"\t";
}
cout<<endl;
}
}

int main()
{
int matrice[massimo][massimo];
int righe=dimensione_righe();
cout<<endl;
int colonne=dimensione_colonne();
cout<<endl;
caricamento_matrice(matrice, righe, colonne);
cout<<endl<<"Matrice caricata: "<<endl;
stampa_matrice(matrice, righe, colonne);

return 0;
}

Per favore usa il tag code.
 
  • Mi piace
Reazioni: Mursey

TheJudge

Utente Attivo
335
84
CPU
i5-8600k
Dissipatore
Cooler Master TX3 EVO
Scheda Madre
MSI Z370 SLI PLUS
HDD
SAMSUNG 840 Pro 250GB + SSD Sandisk 250GB
RAM
Hiperx 2x8GB DDR4 @2666Hz
GPU
Asus Strix 1070TI
Monitor
1 Asus 24" fullHD + BENQ 27" fullHD
PSU
EVGA SuperNova 850W 80+ gold
Case
NZXT S340
OS
Windows 10 Pro
@TheJudge come verrebbe fuori una volta indicizzata si la riga che la colonna? Scusa, non so proprio dove mettere le mani quello che vedi l'ho fatto insieme ad un amico.
Se dichiari una matrice come m[righe_max][colonne_max], dato che metti un dato alla volta dovrai specificare sia la riga che la colonna in cui vuoi mettere il dato.

Immagina la matrice come se fosse una tabella

Codice:
m[i][j] = rand() % max + min;
 
  • Mi piace
Reazioni: DieDogg

DieDogg

Nuovo Utente
9
0
CPU
i7 4790k
Scheda Madre
sharkbay lenovo
HDD
1 Tb
RAM
8gb
GPU
Nvidia GTX 970 Oc
Audio
NVIDIA High Definition Audio
Monitor
Samsung T24C300
PSU
750W
Case
Antec GX300 Windowed
OS
Windows 7 Home Premium
@TheJudge ho sostituito la stringa con quella che mi hai passato ma mi da questo errore" [Error] invalid operands of types 'int' and '<unresolved overloaded function type>' to binary 'operator%'" e poi mi dice "In function 'void caricamento_matrice(int (*)[100], int, int)':"
 

_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
@TheJudge ho sostituito la stringa con quella che mi hai passato ma mi da questo errore" [Error] invalid operands of types 'int' and '<unresolved overloaded function type>' to binary 'operator%'" e poi mi dice "In function 'void caricamento_matrice(int (*)[100], int, int)':"
Hai sostituito con x ed y nel tuo programma vero?
E comunque è sbagliato logicamente. Se deve esserci un massimo e un minimo è:
C:
rand() % (max - min) + min;
 
  • Mi piace
Reazioni: DieDogg

TheJudge

Utente Attivo
335
84
CPU
i5-8600k
Dissipatore
Cooler Master TX3 EVO
Scheda Madre
MSI Z370 SLI PLUS
HDD
SAMSUNG 840 Pro 250GB + SSD Sandisk 250GB
RAM
Hiperx 2x8GB DDR4 @2666Hz
GPU
Asus Strix 1070TI
Monitor
1 Asus 24" fullHD + BENQ 27" fullHD
PSU
EVGA SuperNova 850W 80+ gold
Case
NZXT S340
OS
Windows 10 Pro
Hai sostituito con x ed y nel tuo programma vero?
E comunque è sbagliato logicamente. Se deve esserci un massimo e un minimo è:
C:
rand() % (max - min) + min;
Io ho scritto il codice per fargli capire sperando che poi ci mettesse la testa lui. inoltre se si dovessero comprendere gli estremi la corretta istruzione sarebbe
C:
rand() % (max + 1 - min) + min;
 
  • Mi piace
Reazioni: _Achille e DieDogg

DieDogg

Nuovo Utente
9
0
CPU
i7 4790k
Scheda Madre
sharkbay lenovo
HDD
1 Tb
RAM
8gb
GPU
Nvidia GTX 970 Oc
Audio
NVIDIA High Definition Audio
Monitor
Samsung T24C300
PSU
750W
Case
Antec GX300 Windowed
OS
Windows 7 Home Premium
Quindi viene così? Mi da gli stessi messaggi di prima. Potreste correggerlo in modo che si avvii. :sisi:

#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;

const int massimo=100;

int dimensione_righe();
int dimensione_colonne();
void caricamento_matrice(int [massimo][massimo], int, int);
void stampa_matrice(int [massimo][massimo], int, int);
void opposto(int [massimo][massimo], int, int);

int dimensione_righe()
{
int nr;
cout<<"Inserisci il numero di righe: ";
cin>>nr;
while (nr>massimo)
{

cout<<"Errore. Inserisci il numero di righe: ";
cin>>nr;
}
return nr;
}

int dimensione_colonne()
{
int nc;
cout<<"Inserisci il numero di colonne: ";
cin>>nc;
while (nc>massimo)
{
cout<<"Errore. Inserisci il numero di colonne: ";
cin>>nc;
}

return nc;
}

void caricamento_matrice(int m[massimo][massimo], int nr, int nc)
{
srand(time(NULL));
int x;
int y;
cout<<"Inserisci il valore massimo: ";
cin>>x;
cout<<"Inserisci il valore minimo: ";
cin>>y;
for (int i=0; i<nr; i++)
{
for (int j=0; j<nc; j++)
{
m[j] = rand() % (max + 1 - min) + min;
}
}
}

void stampa_matrice(int m[massimo][massimo], int nr, int nc)
{
for (int i=0; i<nr; i++)
{
for (int j=0; j<nc; j++)
{
cout<<m[j]<<"\t";
}
cout<<endl;
}
}

int main()
{
int matrice[massimo][massimo];
int righe=dimensione_righe();
cout<<endl;
int colonne=dimensione_colonne();
cout<<endl;
caricamento_matrice(matrice, righe, colonne);
cout<<endl<<"Matrice caricata: "<<endl;
stampa_matrice(matrice, righe, colonne);

return 0;
}
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili