• 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

Object Storage Arubacloud
0 głosów
331 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,461 wizyt
0 głosów
0 odpowiedzi 112 wizyt
pytanie zadane 18 stycznia 2023 w C i C++ przez Janchess Początkujący (480 p.)
0 głosów
2 odpowiedzi 1,548 wizyt
pytanie zadane 24 listopada 2020 w C i C++ przez Kacper009123 Nowicjusz (140 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...