Suma elementów tablicy w wierszach i kolumnach

0

Napisz program w c#, który deklaruje i inicjalizuje dwuwymiarową tablice liczb całkowitych o rozmiarze 3x3
Program ma wyświetlać te tablice oraz wyświetlać sumę elementów w wierszach i sumę elementów w kolumnach np.

1	3	2		6
5	4	6		15
3	6	7		16

9	13	15

Bardzo proszę o pomoc, kompletnie nie wiem jak to zrobić

1

Robisz 1 pętle która "leci" przez rzędy.
W niej robisz kolejną pętlę która "leci" przez kolumny.
Prosisz użytkownika o wpisanie liczby / Losujesz liczbę i wpisujesz ją do tablicy.

Jak już to będziesz miał to z obliczanie sum jest łatwe ;)

0
atmal napisał(a):

Robisz 1 pętle która "leci" przez rzędy.
W niej robisz kolejną pętlę która "leci" przez kolumny.
Prosisz użytkownika o wpisanie liczby / Losujesz liczbę i wpisujesz ją do tablicy.

Jak już to będziesz miał to z obliczanie sum jest łatwe ;)

int n=5;
           int m=5;
           int[,] tab = new int[n][m];
           int i, j,k= 0,suma;
           for (i = 0; i < n; i++)
           {
               for (j = 0; j < m; j++)

                   tab[i][j] = rand() % (100 + 1);

           }
           for (i = 0; i < n; i++)
           {
               suma = 0;
               for (j = 0; j < m; j++)
                   suma += tab[i][j];
               Console.WriteLine(suma);
           }
           k=0;
           for(i = 0; i < n;i++)
           {
               suma = 0;
               for(j = 0; j < m; j++)
                   suma+= tab[i][j];
               Console.WriteLine(suma);
           }

           Console.ReadKey()

Coś takiego? tylko wyświetla mi dużo błędów, nie wiem co jest nie tak

1

Staraj się aby zmienne były jak najmniej widoczne poza operacjami które z nich korzystają. Co mam na myśli - zmienna do pętli powinna być zdefiniowana wewnątrz

for (int i = 0; i < n; i++) { ... }

Z Random masz problem jako że random to klasa a nie metoda
Musisz stworzyć obiekt

Random random = new Random();

A następnie aby wylosować liczbę robisz tak:

random.Next(1, 100); // Min: 1 Max: 100

W tej linii:

tab[n, m] = random.Next(1, 100);

Próbujesz przypisać wylosowaną zmienną do indeksu równemu rozmiarowi tablicy co spowoduje wyjątek jako że pierwszy element tablicy jest pod indeksem 0. Więc zamiast n i m używasz i oraz j.

0

Czyli jak to powinno wyglądać ostatecznie, bo nadal są błędy

1

Podałem Ci błędy to poprawy, ale skoro pytasz jak ma wyglądać to ostatecznie to masz: (jako że ma być to kod końcowy to ponazywałem sensownie zmienne)

static void Main(string[] args)
{
    const int rows = 5;
    const int columns = 5;

    int[,] numbers = new int[rows, columns];

    Random random = new Random();

    for (int i = 0; i < rows; i++)
    {
        int row_sum = 0;
        for (int j = 0; j < columns; j++)
        {
            numbers[i, j] = random.Next(1, 100);

            row_sum += numbers[i, j];
            Console.Write(numbers[i, j] + "\t");
        }
        Console.WriteLine(row_sum);
    }

    Console.WriteLine();

    for(int i = 0; i < columns; i++)
    {
        int column_sum = 0;
        for(int j = 0; j < rows; j++)
        {
            column_sum += numbers[j, i];
        }
        Console.Write(column_sum + "\t");
    }
}
0

No właśnie poprawiłam ale nadal było źle, dziękuje, tylko jest jedno ale, program zlicza sumę tylko pierwszej kolumny, nie wszystkich

0

Mowa o moim kodzie? Bo testowałem u siebie 2-3 razy i wszystko liczy tak jak należy.

0
atmal napisał(a):

Mowa o moim kodzie? Bo testowałem u siebie 2-3 razy i wszystko liczy tak jak należy.

Jednak wszystko się zgadza, dziękuję :)

0

a jak zrobić, by program wyświetlił sumę elementów na obu przekątnych?

1

Jedna przekątna to gdy masz
indeks rzędu == indeks kolumny

a druga
indeks rzędu == ilość kolumn - indeks rzędu kolumny.
indeks rzędu + indeks kolumny == maksymalny indeks kolumny

Wrzucasz takie ify do pętli i odpowiednio liczysz.

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