• 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

VPS Starter Arubacloud
0 głosów
316 wizyt
pytanie zadane 18 października 2021 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 2021 przez profesorek96 Szeryf (91,420 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 16,346 wizyt
0 głosów
0 odpowiedzi 106 wizyt
pytanie zadane 18 stycznia 2023 w C i C++ przez Janchess Początkujący (480 p.)
0 głosów
2 odpowiedzi 1,463 wizyt
pytanie zadane 24 listopada 2020 w C i C++ przez Kacper009123 Nowicjusz (140 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...