Sumowanie elementów w tablicy C++


(Zdezorientowany) #1

Witam,

Chcę napisać program, który tworzy tablicę wg parametrów wprowadzonych przez użytkownika, wypełnia ją losowymi liczbami i liczy sumę na obwodzie.

'x','y' to parametry tablicy, a 'z' to górny zakres liczbowy jakimi ma zostać wypełniona.

Nie działa mi jednak liczenie sumy na obwodzie. Oto fragment kodu:

int t[x][y];

for(int i=0; i
{

    for(int j=0; j
    {

    t[x][y]=rand()%z+1;

    cout << t[x][y] << "\t";

    }

    cout<
}


int suma=0;


for (int i=0; i
 {suma=suma+t[i][0];};


for (int i=1; i
 {suma=suma+t[0][i];};


for (int i=1; i
 {suma=suma+t[x-1][i];};


for (int i=1; i
 {suma=suma+t[i][y-1];};

Gdzie jest błąd ?


(Tabcin) #2

Tak na dobry początek ...

for(int i=0; i
{

    for(int j=0; j
    {

    t[x][y]=rand()%z+1;

    cout << t[x][y] << "\t";

skoro chcesz wypełnić tablicę losowymi danymi to w tym t[x][y] powinno chyba być t[j].

Poczytaj jeszcze o losowaniu losowych liczb, bo zapomniałeś o jednej rzeczy. Jak chcesz się nauczyć dobrze programować to powinieneś znaleźć rozwiązanie sam (wujek google podpowie na pewno - przed chwilą sprawdzałem) :wink:


(Zdezorientowany) #3

Zrobiłem tak jak mówiłeś i wyszła jeszcze większa głupota...?

W Google wpisywałem takie frazy jak "sumowanie elementów tablicy na obwodzie" i inne podobne, nic nie znalazłem. Może podpowiesz chociaż co wpisać, jaki to rodzaj błędu?


(Tabcin) #4

Źle wykorzystujesz funkcję rand(). W chwili obecnej "losuje" ona zawsze jedną i tą samą wartość.

Co do liczników - ten kawałek kodu powinien ci rozjaśnić o co chodzi.

#include 


using namespace std;


void main (void)

{

	const int n=5; 

	int a[n];

	a[0]=5;

	a[1]=6;

	a[2]=7;

	a[3]=8;

	a[4]=9;


	for (int i=0;i
		cout<


	cout<<"\n --------------------------\n";


	for (int i=0;i
		cout<
	

	system("pause");

}[/code]

Każdy szanujący się kompilator w momencie wykonania czegoś takiego powinien sypać ostrzeżeniami. Czytasz pięciokrotnie przypadkowe wartości (ściślej ujmując czytasz za tablicą dokładnie tyle bitów ile zajmuje int, i wyświetlasz je jako int) gdyż element tablicy o indeksie a[5] po prostu nie istnieje.