macierz kwadratowa obliczenie sumy licz z przekątnej

0

Witam ma program ktory liczy przekatna licz z macierzy , macierz 4x4 liczymy przekatna tylko od lewego gornego do prawego dolnego boku. Program ktory działa zlicza sume ale wyswietla żle liczby, by to obliczyć uzyłem instrukcja warunkowej if (i==j) i,j to wiersze i kolumny , akurat adresy interesujacych mnie pol to 0.0 , 1.1 , 2.2 ,3.3 wiec i jest rowne j. Ale coś błednie wyswietla nie pokolei liczby nie w macierzy 4x4 tylko jedna pod druga , czasem w 1 wierszu 3 liczby czasem 1 . O to kod.

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <conio.h>
#include <string>
using namespace std;

int funkcjasuma (int liczby[3][3]);
int main()
{
int liczby[3][3];
funkcjasuma(liczby);



getch();

}
int funkcjasuma (int liczby[3][3]){
       
int b;
cout << "Witamy na pokladzie, " <<endl;
for (int i=0;i<4;i++){
for (int j=0;j<4;j++){

cout<<"Podaj liczbe"<<endl;
cin>>b;

liczby[i][j]=b;

}
}
int suma=0;
for(int i=0;i<4;i++)
{
for (int j=0;j<4;j++)
{
cout<<liczby[i][j]<<" " ;
if (i==j)suma=liczby[i][j]+suma;
}
cout<<"\n";
}
cout<<suma; 

}return 0;

} 
0

Dlaczego w tablicy, która ma 3x3 elementy iterujesz do 4x4?
W macierzy o 3 elementach są takie indeksy: 0, 1, 2. Dlatego w pętli for należy iterować od i = 0 do i < 3. Ty przechodzisz tablicę po takich indeksach: 0, 1, 2, 3. Problem w tym, że elementu o indeksie 3 nie ma i są tam jakieś złowrogie rzeczy.

Dodatkowo podwójna pętla oraz instrukcja warunkowa, żeby odnaleźć elementy na przekątnej nie ma sensu. Wystarczy jedna pętla i odwoływanie się do liczby[i][i].

0

Poprawiłem chce miec 16 liczb czyli teraz tak jak ponizej. Ale nie wiem o co dokładnie chodzi Ci bo usunełem ifa i wstawiłem te [i][i] ale błedy są i czy na pewno to nam po liczy przekątna

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <conio.h>
#include <string>
using namespace std;
 
int funkcjasuma (int liczby[4[4]);
int main()
{
int liczby[4][4];
funkcjasuma(liczby);
 
 
 
getch();
 
}
int funkcjasuma (int liczby[4][4]){
 
int b;
cout << "Witamy na pokladzie, " <<endl;
for (int i=0;i<4;i++){
for (int j=0;j<4;j++){
 
cout<<"Podaj liczbe"<<endl;
cin>>b;
 
liczby[i][j]=b;
 
}
}
int suma=0;
for(int i=0;i<4;i++)
{
for (int j=0;j<4;j++)
{
cout<<liczby[i][j]<<" " ;
if (i==j)suma=liczby[i][j]+suma;
}
cout<<"\n";
}
cout<<suma; 
 
}return 0;
 
}  
0

Dzieki juz poprawiłem,Mozna temat usnac

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