Problem z wypełnieniem tablicy dwuwymiarowej

0

Witam. Mam takie pytanie. W jaki sposób wypełnić tablice dwuwymiarową (10x7) samymi jedynkami, na pewno pętla for musi być dwa razy użyta na kolumnie i wierszu, ale jak zrobić żeby jedynki były w tej tablicy?

0

A jak ustawiłbyś pojedynczy element tablicy na wartość 1?

na pewno pętla for musi być dwa razy użyta

Nie musi, ale nie będę Cię nęcił do korzystania z bezpośrednich operacji na pamięci, skoro jesteś - jak wnioskuję - początkującym ;)

0

Tb[y][x]=1;

0
 
char* Tab[10][5];
for(int y=0; y<10; y++)
 for(int x=0; x<5; x++)
  Tab[y][x] = '1';
0

Jeśli inicjalizujesz nową tablicę, możesz to zrobić bezpośrednio:

int tab[7][10] = { {1,1,1,1,1,1,1,1,1,1},
		   {1,1,1,1,1,1,1,1,1,1},
		   {1,1,1,1,1,1,1,1,1,1},
		   {1,1,1,1,1,1,1,1,1,1},
		   {1,1,1,1,1,1,1,1,1,1},
		   {1,1,1,1,1,1,1,1,1,1},
		   {1,1,1,1,1,1,1,1,1,1} };

przykład: https://ideone.com/mhrMK7

0

Możesz też tak:

const int x = 7, y = 10;
int tab[x][y];
int* p = tab;
for(int i = 0, i < x*y; i++, p++) p[i] = 1;
4
mto9 napisał(a):

Możesz też tak:

const int x = 7, y = 10;
int tab[x][y];
int* p = tab;
for(int i = 0, i < x*y; i++, p++) p[i] = 1;

O ile można domniemywać, że w większości przypadków to będzie działać zgodnie z założeniami, to wywołujesz tutaj tzw. undefined behaviour (UB), ponieważ dokonujesz dereferencji wskaźnika innego typu (int(*)[10] na int*) niż wskazywane na niego dane. (§5.2.10.7 §3.10.10 w standardzie). Ponadto, nawet gdybyś przypisywał p jako p = tab[0]; to wywołałbyś UB w momencie wykroczenia poza 10-ty element tablicy (§5.7.5 w standardzie)

0
mto9 napisał(a):

Możesz też tak:

const int x = 7, y = 10;
int tab[x][y];
int* p = tab;
for(int i = 0, i < x*y; i++, p++) p[i] = 1;

Tak oczywiście że jest tu błąd, moja pomyłka :D
Raczej chodziło mi o coś takiego:

const int x = 7, y = 10;
int tab[x][y];
int* p = tab;
for(int i = 0; i < x*y; i++, p++) *p = 1;
0

A można zrobić tak? Bo nie jestem pewien:

 
const int x=5, y=7;
int tab[y][x];

//3 element (x) drugiej kolumny (y)
int *wsk = ( ( &tab[0][0] ) + ( 2 * 5 ) + 3 ); 

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