Program zawiesza się

0

Witam,

Napisałem prosty program wyświetlający tabliczkę mnożenia. Program kompiluje się bez błędów, po uruchomieniu wyświetla się komunikat "program przestał działać, ale po anulowaniu wszystko jest wyświetlone poprawnie. Czy mógłby mi ktoś podpowiedzieć, dlatego mimo wszystko taki komunikat się pojawia? :)

#include <iostream>
using namespace std;
int mnozenie(int tab[][10]);
int wypisanie (int tab[][10]);
//*************************
int main()
{
int tabliczka[10][10];
cout << "Tabliczka mnozenia: " << endl;

mnozenie(tabliczka);
wypisanie(tabliczka);
system("break");
}
//*************************
int mnozenie(int tab[10][10])
{
for (int i = 1; i <= 10; i++)
{
for (int j = 1; j <= 10; j++)
{
tab[i][j] = ij;
}
}
}
//
************************
int wypisanie (int tab[10][10])
{
cout << "X ";
for (int pi = 1; pi <= 10; pi++)
{
cout << pi << "\t";
}
cout << "-----------------------------------------------------------------------------" << endl;
for (int po = 1; po <= 10; po++)
{
if (po<10)
cout << po << "| ";
else
cout << po << "| ";

  for (int i = 1; i <= 10; i++)
  {
  	cout << tab[po][i] << "\t";
  }

}
}

3
  1. Dlaczego nikt nie odpowiada w moim wątku?
  2. i <= 10 tablica ma 10 elementów, dostęp do 11. to UB
3

Funkcje są typu int a nic nie zwracają.

1

system("break"); ?
system("pause"); ?

0

I nie, program nie kompiluje się bez błędów. Nie ma takiej opcji.
Czym to kompilujesz ?

0

Kompilowałem w Dev-C++.. po zmianie na system("pause"); i dodaniu return(0); (lub zmianie na void) do funkcji działa i nie zawiesza się.
kq, co oznacza UB? Przepraszam, za takie pytania, ale jak widać jestem początkujący. Moim zdaniem jest 10 elementów, bo i=1 i kończy się na i<=10, czy źle rozumuję?

1

Tablice są indeksowane od zera.

UB to skrót ot undefined behaviour.

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