Błąd wykoniania main.edu.pl

0

Mam pewien błąd wykonania przy 4 bądź 5 sprawdzanym przykładzie (wysyłałem parę razy i raz tu raz tu).

process exited due to signal 9 kod wyjścia: 2304

Kod dla poprzednich przykładów 100% poprawności.

Chciałbym widzieć tylko na czym polega ten błąd, z góry dziękuję.

0

Zapewne leci ci jakiś segfault.

0

Możliwe, że wychodzisz poza zakres tablicy. Ciężko cokolwiek więcej wywróżyć.

0

Mógłbyś wytłumaczyć na czym polega ten segfault.

W zadaniu nie wykorzystuje żadnych tablic, zadanie wygląda następująco:

  • wczytuje n dla ilości zestawów wejściowych
  • iteracja while(n--), w którym wczytuje dwie zmienne po czym wykonuje na nich obliczenia i wypisuje wynik
  • koniec
0
#include <iostream>
using namespace std;

int main(){

long long int n,kl,s,c,pom;

cin>>n;

while(n--){
    cin>>kl>>s;
    if(kl>s){
        pom=kl;
     while (s!=0){
        c = pom % s;
        pom = s;
        s = c;
    }
    cout<<(kl/pom)<<endl;  
    }
    else{
        pom=kl;
        while (pom!=0){
        c = s % pom;
        s = pom;
        pom = c;
    }
    cout<<(kl/s)<<endl;  
    }

    }
}
0

return 0 na końcu main?

0

Nie jest to obowiązkowe. Mimo wszystko poprawiłem i wynik jest identyczny.

0
  1. Naucz sie formatować kod jak człowiek
    
    #include <iostream>
    using namespace std;

int main()
{

long long int n,kl,s,c,pom;
cin>>n;
while(n--)
{
    cin>>kl>>s;
    if(kl>s)
    {
        pom=kl;
        while (s!=0)
        {
            c = pom % s;
            pom = s;
            s = c;
        }
        cout<<(kl/pom)<<endl;
    }
    else
    {
        pom=kl;
        while (pom!=0)
        {
            c = s % pom;
            s = pom;
            pom = c;
        }
        cout<<(kl/s)<<endl;
    }
}

}


2. A jakie są zakresy danych? Bo ja tu widze możliwe dzielenia przez 0
Np. dla wejścia kl = 0, s = 0 masz dzielenie przez 0
0

Jak ja kocham tak nazwane zmienne, o tak jak mówić "sorry literki na klawiaturze mi się kończą, to na nazwanie zmiennych ich nie będę używać".
Kocham także taką ilość komentarzy - kod w końcu jest oczywisty.

A teraz analiza tego kodu równie pełna jak nazwy zmiennych i treściwa jak komentarze w nim (albo nawet i lepiej): masz błąd w logice zadań i własności wartości zmiennych po wykonaniu pętli. Wykonujesz na nich operacje bez sprawdzania czy wartości spełniają założenia operacji (dzielenie). Zdebuguj sobie operacje dzielenia (swoją drogą brawa za wykonywanie operacji w ten sposób).

0

Kod był pisany z pamięci więc wygląda tak a nie inaczej :D.

Dane wejściowe są zawsze większe niż jeden oraz mniejsze niż :
dla n < 1 000 000
dla kl i s < 1 000 000 000

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