• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ Tablica suma liczb lezacych na przekatnej

0 głosów
36 wizyt
pytanie zadane 18 października w C i C++ przez nem_ Nowicjusz (120 p.)

Witam. Mam problem z programem, który ma wyświetlić tablice kwadratową, która zostanie uzupelniona liczbami od -5 do 5, a nastepnie zostanie wyswietlona suma liczb, ktory leza na przekątnej. Napisalem program, lecz błędnie wyswietla on sume liczb na przekątnej. Gdzie zrobilem blad?

 

 

#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;

int main()
{
    srand(time(NULL));

    int n;
    cout<<"Wprowadz rozmiar tablicy:"<<endl;
    cin>>n;
    int tab[n][n];

    cout<<endl;

    cout<<"Liczby calkowite z przedzialu od -5 do 5 to: "<<endl;
        for(int i=0; i<n; i++)
        {
            for(int j=0; j<n; j++)
            {
                tab[n][n]=-5+rand()%-9;
                cout<<tab[n][n]<<" ";
            }
            cout<<endl;
        }

        int suma=0;
        for (int i=0; i<n; i++)
            {
            for (int j=0 ; j<n; j++)
                {
                if(i==j)
                suma=suma+tab[n][n];
                }
            }
            cout<<"Suma wartosci na przekatnej wynosi: "<<suma<<endl;

}

 

1 odpowiedź

0 głosów
odpowiedź 18 października przez profesorek96 Szeryf (86,820 p.)

Niestety troszkę błędów jest. Po pierwszy błąd jest taki że zapisujesz każdy z wylosowanych elementów do tablicy o indeksie n dla wierszy oraz n dla kolumn. Nie ma takiego indeksu, twoja tablica jeśli ma n elementów to indeks ostatnie elementu ma numer n-1. Dzieje się tak ponieważ indeksy w tablicach są liczone od 0 zarówno te jedno jak i wielowymiarowe. Mówimy o liniach:

tab[n][n]=-5+rand()%-9;

oraz

cout<<tab[n][n]<<" ";

Natomiast losowanie też nie jest dobrze zrobione. Masz wylosować liczby od -5 do 5 włącznie czyli 11 liczb. Więc powinieneś zapisać:

rand()%11;

Zapis ten zwróci liczby od 0 do 10 włącznie. Zauważ że dodając do tego wartość -5 otrzymamy właśnie wymagany zakres. Więc ta linia powinna być poprawiona na:

tab[i][j]=-5+rand()%11;

Ostatnia pętla nie jest błędna lecz troszkę prze kombinowana. Sumę liczb na przekątnej można wykonać za pomocą jednej pętli.

Tutaj masz poprawiony kod:

#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;

int main()
{
    srand(time(NULL));

    int n;
    cout<<"Wprowadz rozmiar tablicy:"<<endl;
    cin>>n;
    int tab[n][n];

    cout<<endl;

    cout<<"Liczby calkowite z przedzialu od -5 do 5 to: "<<endl;
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
        {
            tab[i][j]=-5+rand()%11;
            
            cout<<tab[i][j]<<"\t";
            //dodano znak tab dla czytelnosci
        }
        cout<<endl;
    }

    int suma=0;
    for (int i=0; i<n; i++)
    {
        suma=suma+tab[i][i];
    }
    cout<<"Suma wartosci na przekatnej wynosi: "<<suma<<endl;
    return 0;
}

 

Podobne pytania

–1 głos
2 odpowiedzi 11,536 wizyt
0 głosów
2 odpowiedzi 78 wizyt
pytanie zadane 24 listopada 2020 w C i C++ przez Kacper009123 Nowicjusz (140 p.)
0 głosów
1 odpowiedź 280 wizyt
pytanie zadane 21 listopada 2020 w Matematyka, fizyka, logika przez kornelia Nowicjusz (120 p.)

85,805 zapytań

134,588 odpowiedzi

298,787 komentarzy

56,698 pasjonatów

Advent of Code 2021

Top 15 użytkowników

  1. 494p. - rucin93
  2. 463p. - nidomika
  3. 431p. - CC PL
  4. 385p. - Whistleroosh
  5. 379p. - ScriptyChris
  6. 372p. - adrian17
  7. 340p. - TheLukaszNs
  8. 339p. - WhiskeyTaster
  9. 321p. - Argeento
  10. 318p. - Dagohar
  11. 287p. - Anonim 1794483
  12. 281p. - Klaudia
  13. 278p. - B4mbus
  14. 269p. - b0mbix
  15. 246p. - tokox
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...