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
Okej, czyli już uzupełnić i wyświetlić tabelkę umiesz? Pokaż obecny kod, który to robi.
Podpowiem ze przekatna to punkty o wspolrzednych (0,0) (1,1) (2,2) (3,3) itd.
#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;
}
Zgodnie z radą @stivens 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.
Wystarczy CI jedna pętla. Oba indeksy będą identyczne w zakresie od 0 do 3
A w jaki to sposób tab2w[i][j] = 2 + rand() % 4
wypełnia tablicę liczbami losowymi z zakresu od 14
do 25
?
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
kq napisał(a):
Zgodnie z radą @stivens 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ć?
Pytanie czy sumowanie macierzy sam napisales? Bo zalozylismy ze tak. A wtedy nie wiem w czym problem :o
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
A rozumiesz jak to dziala?
Generalnie masz tylko sie przeiterowac od 0 do 3 i zsumowac liczby na wspolrzednych [i][i]
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
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.
- Rozumiesz co sie tutaj dzieje?
for (int i = 0; i<W; i++)
- I tutaj?
suma += tab2w[i][j];
To Twoj kod jak cos
edit: w gruncie rzeczy wystarczy zmienic JEDNA literke w tym kodzie xD
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.
- Rozumiesz co sie tutaj dzieje?
for (int i = 0; i<W; i++)
- I tutaj?
suma += tab2w[i][j];
To Twoj kod jak cos
- rozumiem int i =0 to zmienna do liczenia
i<W to granica zakresu ale nie wiem czemu na końcu jest i++ - to rozumiem jako obliczenie zakresu całej tabelki
for (initializationStatement; testExpression; updateStatement)
{
// statements inside the body of loop
}
https://www.programiz.com/c-programming/c-for-loop
- No nie. Przeciez tutaj nie masz calej tabelki? Nie ma tez zadnego "zakresu"?
stivens napisał(a):
for (initializationStatement; testExpression; updateStatement) { // statements inside the body of loop }
https://www.programiz.com/c-programming/c-for-loop
- No nie. Przeciez tutaj nie masz calej tabelki? Nie ma tez zadnego "zakresu"?
To co oznacza to 2?
Zmienne, dodawanie - kojarzysz cos? :P
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);
Jeśli indeksy są równe, czyli if (i == j)