wczytanie losowych liczb do tablicy i wydrukowanie jej

0

Dlaczego drukuję mi tablicę w jednym wierszu zamiast:
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

const int W = 3;
const int K = 5;
int losowaLiczba, x, y;
int tab[W][K];

srand (time(0));

for (x=0; x<W; x++){
  for (y=0; y<K; y++){
    tab[x][y] = (-99) + rand( )%(99+1-(-99));
       }
  }

for (x=0; x<W; x++){
  for (y=0; y<K; y++){
    cout << setw(5) << tab[x][y];
       }
   }
4

Bo właśnie tak zaprogramowałeś swój program, kod wykonuje się tak jak powinien. Jeśli chcesz zmienić formatowanie musisz zmienić tą linijkę:
cout << setw(5) << tab[x][y];

0

x%(99+1-(-99));
daje
x%1
czyli zawsze 0.

A gdzie masz znak nowej linii, podczas drukowania?

1
for (x=0; x<W; x++){
    for (y=0; y<K; y++){
        cout << setw(5) << tab[x][y];
    }
    cout << endl;
}
2
const int Y=3;
const int X=5;
int tab[Y][X];
srand(time(0));
for (int y=0;y<Y;++y) for(int x=0;x<X;++x) tab[y][x]=rand()%(2*99+1)-99;
for (int y=0;y<Y;++y,cout<<endl) for(int x=0;x<X;++x) cout<<setw(5)<<tab[y][x];
0

do takiego zadania wystarczy tylko 1 pętla

#include <iostream>
#include <ctime>    //srand
#include <iomanip>  //setw

using namespace std;

int main()
{
    const unsigned int rows=3, columns=5;
    int arr[rows][columns];
    srand(time(0));
   
    for(unsigned int i=0; i<rows*columns; ++i)
    {
        unsigned int row = i / columns;
        unsigned int col = i % columns;
        arr[row][col] = rand()%(2*99+1)-99;
        cout << setw(4) << std::setfill(' ') << right << arr[row][col];
        if((i+1)!=columns)cout<<" ";
        if(!((i+1)%columns))cout<<"\n";
    }

    return 0;
}


1 użytkowników online, w tym zalogowanych: 0, gości: 1