NWD vs tablice dynamiczne.

0
#include <iostream>
using namespace std;

int nwd(int a, int b)
{
    if (a==b) return a;
       while (a>b)
       {
          a=a-b;
          return nwd(a,b);
       }
       while (b>a)
       {
          b=b-a;
       return nwd(a,b);
       }

}
int main()
{
    int t;//t-liczba testow
    int *tab = new int[t];
    int *tab2 = new int [t];
    cout << "Podaj t: "; cin >> t;
    cout << "---------" << endl;
        for (int i=0;i<=t-1;i++)
        {
            cout << "Podaj a: "; cin >> tab[i];
            cout << "Podaj b: "; cin >> tab2[i];
            cout << "-----------" << endl;
            nwd(tab[i],tab2[i]);
        }
           for (int i=0;i<=t-1;i++)
           {
               cout << "NWD(" << tab[i] << "," << tab2[i] << ") = " << nwd(tab[i],tab2[i]) << endl;
           }
    return 0;
}
 

Po kompilacji pojawia się okno z napisem: this application has requested the runtime to terminate it in an unusual way.

Później wyskakuje okienko: Program XYZ przestał działać.
Co to oznacza? Bo wydaje mi się, iż wszystko zostało w miarę dobrze zrobione (:
Poczytałem trochę o tym u wujka G i zainstalowałem jakąś łatkę ale nic nie pomogło. Z góry dzięki za odpowiedzi (:

0
    int t;//t-liczba testow
    int *tab = new int[t];
    int *tab2 = new int [t];
    cout << "Podaj t: "; cin >> t;
  1. Definicja zmiennej t. t ma teraz nieokreśloną wartość.
  2. Alokacja pamięci na podstawie zmiennej t.
  3. Alokacja pamięci na podstawie zmiennej t.
  4. Wczytanie wartości t ze standardowego wejścia.

Nie wydaje Ci się, że ta kolejność jest niewłaściwa?

0

int t; // jak na razie w zmiennej "t" są jakieś śmieci
int *tab = new int[t]; // przydziela się nieznana ilość danych
int *tab2 = new int [t]; // przydziela się nieznana ilość danych
...
cin >> t; // owszem "t" zmienione ale rozmiar tablic "tab" i "tab2" są takie same jak byli

Tak przy okazji to co podałeś to nie jest nwd.

0

Łatkę na źle napisany program? o_O Ja też chcę! ;]
Powiedz mi łaskawie ile wynosi 't' w chwili kiedy alokujesz pamięć. Wypisz może sobie to 't' w tamtym miejscu i zobacz.

0

Ok dzięki wielkie :D dzisiaj miałem ciężki dzień (co mnie praktycznie nie usprawiedliwia) i nie zauważyłem tego :) Reasumując dzięki wszystkim za odpowiedzi, pozdrawiam i życzę miłego weekendu.

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