C++: Array 2D e numeri random

DieDogg

Nuovo Utente
7
0
Hardware Utente
CPU
i7 4790k
Scheda Madre
sharkbay lenovo
Hard Disk
1 Tb
RAM
8gb
Scheda Video
Nvidia GTX 970 Oc
Scheda Audio
NVIDIA High Definition Audio
Monitor
Samsung T24C300
Alimentatore
750W
Case
Antec GX300 Windowed
Sistema Operativo
Windows 7 Home Premium
#1
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

DieDogg

Nuovo Utente
7
0
Hardware Utente
CPU
i7 4790k
Scheda Madre
sharkbay lenovo
Hard Disk
1 Tb
RAM
8gb
Scheda Video
Nvidia GTX 970 Oc
Scheda Audio
NVIDIA High Definition Audio
Monitor
Samsung T24C300
Alimentatore
750W
Case
Antec GX300 Windowed
Sistema Operativo
Windows 7 Home Premium
#3
#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 Attivo
2,803
614
Hardware Utente
CPU
Intel i5-6600K @4.6 GHz
Dissipatore
Cryorig H5
Scheda Madre
ASRock Z170 Extreme 6
Hard Disk
WesternDigital 1TB & Crucial MX200 250GB
RAM
Corsair Ven 16GB DDR4 2133MHz
Scheda Video
Sapphire RX 580 Nitro+
Monitor
Dell S2418H
Alimentatore
RM550X
Case
NZXT S340
Periferiche
Cooler Master XT; Razer Abyssus
Sistema Operativo
Windows 10 Pro
#4
Cosa non sai fare di preciso?
 

TheJudge

Utente Attivo
335
84
Hardware Utente
CPU
i5-8600k
Dissipatore
Cooler Master TX3 EVO
Scheda Madre
MSI Z370 SLI PLUS
Hard Disk
SAMSUNG 840 Pro 250GB + SSD Sandisk 250GB
RAM
Hiperx 2x8GB DDR4 @2666Hz
Scheda Video
Asus Strix 1070TI
Monitor
1 Asus 24" fullHD + BENQ 27" fullHD
Alimentatore
EVGA SuperNova 850W 80+ gold
Case
NZXT S340
Sistema Operativo
Windows 10 Pro
#5
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: DieDogg

DieDogg

Nuovo Utente
7
0
Hardware Utente
CPU
i7 4790k
Scheda Madre
sharkbay lenovo
Hard Disk
1 Tb
RAM
8gb
Scheda Video
Nvidia GTX 970 Oc
Scheda Audio
NVIDIA High Definition Audio
Monitor
Samsung T24C300
Alimentatore
750W
Case
Antec GX300 Windowed
Sistema Operativo
Windows 7 Home Premium
#6
Mi da questo errore [Error] 'rand' was not declared in this scope
 

TheJudge

Utente Attivo
335
84
Hardware Utente
CPU
i5-8600k
Dissipatore
Cooler Master TX3 EVO
Scheda Madre
MSI Z370 SLI PLUS
Hard Disk
SAMSUNG 840 Pro 250GB + SSD Sandisk 250GB
RAM
Hiperx 2x8GB DDR4 @2666Hz
Scheda Video
Asus Strix 1070TI
Monitor
1 Asus 24" fullHD + BENQ 27" fullHD
Alimentatore
EVGA SuperNova 850W 80+ gold
Case
NZXT S340
Sistema Operativo
Windows 10 Pro
#7
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: DieDogg

DieDogg

Nuovo Utente
7
0
Hardware Utente
CPU
i7 4790k
Scheda Madre
sharkbay lenovo
Hard Disk
1 Tb
RAM
8gb
Scheda Video
Nvidia GTX 970 Oc
Scheda Audio
NVIDIA High Definition Audio
Monitor
Samsung T24C300
Alimentatore
750W
Case
Antec GX300 Windowed
Sistema Operativo
Windows 7 Home Premium
#8
@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.
 
#9
#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: Mursey

TheJudge

Utente Attivo
335
84
Hardware Utente
CPU
i5-8600k
Dissipatore
Cooler Master TX3 EVO
Scheda Madre
MSI Z370 SLI PLUS
Hard Disk
SAMSUNG 840 Pro 250GB + SSD Sandisk 250GB
RAM
Hiperx 2x8GB DDR4 @2666Hz
Scheda Video
Asus Strix 1070TI
Monitor
1 Asus 24" fullHD + BENQ 27" fullHD
Alimentatore
EVGA SuperNova 850W 80+ gold
Case
NZXT S340
Sistema Operativo
Windows 10 Pro
#10
@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: DieDogg

DieDogg

Nuovo Utente
7
0
Hardware Utente
CPU
i7 4790k
Scheda Madre
sharkbay lenovo
Hard Disk
1 Tb
RAM
8gb
Scheda Video
Nvidia GTX 970 Oc
Scheda Audio
NVIDIA High Definition Audio
Monitor
Samsung T24C300
Alimentatore
750W
Case
Antec GX300 Windowed
Sistema Operativo
Windows 7 Home Premium
#11
@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 Attivo
2,803
614
Hardware Utente
CPU
Intel i5-6600K @4.6 GHz
Dissipatore
Cryorig H5
Scheda Madre
ASRock Z170 Extreme 6
Hard Disk
WesternDigital 1TB & Crucial MX200 250GB
RAM
Corsair Ven 16GB DDR4 2133MHz
Scheda Video
Sapphire RX 580 Nitro+
Monitor
Dell S2418H
Alimentatore
RM550X
Case
NZXT S340
Periferiche
Cooler Master XT; Razer Abyssus
Sistema Operativo
Windows 10 Pro
#12
@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: DieDogg

TheJudge

Utente Attivo
335
84
Hardware Utente
CPU
i5-8600k
Dissipatore
Cooler Master TX3 EVO
Scheda Madre
MSI Z370 SLI PLUS
Hard Disk
SAMSUNG 840 Pro 250GB + SSD Sandisk 250GB
RAM
Hiperx 2x8GB DDR4 @2666Hz
Scheda Video
Asus Strix 1070TI
Monitor
1 Asus 24" fullHD + BENQ 27" fullHD
Alimentatore
EVGA SuperNova 850W 80+ gold
Case
NZXT S340
Sistema Operativo
Windows 10 Pro
#13
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: _Achille e DieDogg

DieDogg

Nuovo Utente
7
0
Hardware Utente
CPU
i7 4790k
Scheda Madre
sharkbay lenovo
Hard Disk
1 Tb
RAM
8gb
Scheda Video
Nvidia GTX 970 Oc
Scheda Audio
NVIDIA High Definition Audio
Monitor
Samsung T24C300
Alimentatore
750W
Case
Antec GX300 Windowed
Sistema Operativo
Windows 7 Home Premium
#14
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;
}