Przekątna główna

0

Witam,
Jestem początkujący w programie C++. Mam do zrobienia kilka zadań i nie umiem przeskoczyć tematu obliczenia w przekątnej. Poniżej treść zadania, gdzie jak dotąd umiem policzyć tylko sumę całej tabelki.
Wypełnić tablicę dwuwymiarową 4x4 liczbami losowymi z zakresu [14,25]. Tablicę wyświetlić na ekranie. Obliczyć sumę liczb na przekątnej głównej.
Tak samo jak nie wiem co wpisać jeśli chciałbym obliczyć sumę liczb danego wiersz.
Proszę o pomoc

1

Okej, czyli już uzupełnić i wyświetlić tabelkę umiesz? Pokaż obecny kod, który to robi.

2

Podpowiem ze przekatna to punkty o wspolrzednych (0,0) (1,1) (2,2) (3,3) itd.

0
#include "conio.h"
#include "cstdlib"
#include "ctime"
#include "iostream"
using namespace std;
const int W = 4;
int tab2w[W][W];
void wyswietl(int tabx[W][W])
{
	for (int i = 0; i<W; i++)
	{
		for (int j = 0; j<W; j++)
		{
			cout.width(4); cout << tabx[i][j];
		}
		cout << endl;
	}
}
int main()
{
	int ilosc = 0, suma = 0;
	srand(time(0));
	for (int i = 0; i<W; i++)
		for (int j = 0; j<W; j++) tab2w[i][j] = 2 + rand() % 4;
	wyswietl(tab2w);
	for (int i = 0; i< W; i++)
		for (int j = 0; j<W; j++) suma += tab2w[i][j];
	cout << "suma= " << suma;
	_getch();
	return 0;
}
1

Zgodnie z radą @​stiven​s zauważ, że indeksy x i y w przekątnej są identyczne, i sobie wypisz/zsumuj liczby o identycznych indeksach. Do tego wystarczy jedna pętla.

0

Wystarczy CI jedna pętla. Oba indeksy będą identyczne w zakresie od 0 do 3

1

A w jaki to sposób tab2w[i][j] = 2 + rand() % 4 wypełnia tablicę liczbami losowymi z zakresu od 14 do 25?

0
lion137 napisał(a):

A w jaki to sposób tab2w[i][j] = 2 + rand() % 4 wypełnia tablicę liczbami losowymi z zakresu od 14 do 25?

napisałem zle, zły zakres hihi

0
kq napisał(a):

Zgodnie z radą @​stiven​s zauważ, że indeksy x i y w przekątnej są identyczne, i sobie wypisz/zsumuj liczby o identycznych indeksach. Do tego wystarczy jedna pętla.

a czy jest szansa o info jak ta pętla ma wyglądać?

0

Pytanie czy sumowanie macierzy sam napisales? Bo zalozylismy ze tak. A wtedy nie wiem w czym problem :o

0
stivens napisał(a):

Pytanie czy sumowanie macierzy sam napisales? Bo zalozylismy ze tak. A wtedy nie wiem w czym problem :o

Z materiałów które mam skopiowałem i przerobiłem tyle ile umiałem

1

A rozumiesz jak to dziala?
Generalnie masz tylko sie przeiterowac od 0 do 3 i zsumowac liczby na wspolrzednych [i][i]

0
stivens napisał(a):

A rozumiesz jak to dziala?

Generalnie masz tylko sie przeiterowac od 0 do 3 i zsumowac liczby na wspolrzednych [i][i]

Nie do końca, nie wiem jak ma dokładnie wyglądać ta linia

0

Moglbym w 5 sekund to napisac i Ci tutaj wkleic ale jak widzisz od kopiowania i wklenia kodu nie bardzo sie idzie czegos nauczyc.
Musisz zrozumiec co sie tam dzieje.

  1. Rozumiesz co sie tutaj dzieje?
for (int i = 0; i<W; i++)
  1. I tutaj?
suma += tab2w[i][j];

To Twoj kod jak cos

edit: w gruncie rzeczy wystarczy zmienic JEDNA literke w tym kodzie xD

0
stivens napisał(a):

Moglbym w 5 sekund to napisac i Ci tutaj wkleic ale jak widzisz od kopiowania i wklenia kodu nie bardzo sie idzie czegos nauczyc.

Musisz zrozumiec co sie tam dzieje.

  1. Rozumiesz co sie tutaj dzieje?
for (int i = 0; i<W; i++)
  1. I tutaj?
suma += tab2w[i][j];

To Twoj kod jak cos

  1. rozumiem int i =0 to zmienna do liczenia
    i<W to granica zakresu ale nie wiem czemu na końcu jest i++
  2. to rozumiem jako obliczenie zakresu całej tabelki
0
for (initializationStatement; testExpression; updateStatement)
{
    // statements inside the body of loop
}

https://www.programiz.com/c-programming/c-for-loop

  1. No nie. Przeciez tutaj nie masz calej tabelki? Nie ma tez zadnego "zakresu"?
0
stivens napisał(a):
for (initializationStatement; testExpression; updateStatement)
{
    // statements inside the body of loop
}

https://www.programiz.com/c-programming/c-for-loop

  1. No nie. Przeciez tutaj nie masz calej tabelki? Nie ma tez zadnego "zakresu"?

To co oznacza to 2?

0

Zmienne, dodawanie - kojarzysz cos? :P

0
stivens napisał(a):

Zmienne, dodawanie - kojarzysz cos? :P

tak to kojarzę

0
stivens napisał(a):

https://www.programiz.com/c-programming/c-arrays

doszedłem jak wyliczyć określony wiersz, ale nie wiem jak napisać żeby wyliczyć przekątną

for (int i = 0; i < W; i++) (0, 0)(1, 1)(2, 2)(3, 3);

0

Jeśli indeksy są równe, czyli if (i == j)

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