• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

zadanko 2913 z leetcode przepełnienie zmiennej int

0 głosów
308 wizyt
pytanie zadane 15 grudnia 2023 w C i C++ przez MARECKIyt Nowicjusz (190 p.)

zrobiłem prawię wszystko ale mam 1 błąd którego nie potrafię naprawić

w tym kodzie z nie zrozumiałych dla mnie przyczyn jakaś zmienna się przepełnia która liczy ile jest różnych elementów w pod tablicy się przepełnia

class Solution {
public:
    int sumCounts(vector<int>& nums)
    {
        int i, j, k, o, a, sum, d;
        int l = nums.size();

        for (i=1; i++; i<=l)
        {
            for(j=0; j++; j+i<l)
            {
                int sub[i];
                for (k=j; k++; k<j+i)
                {
                    sub[k-j] = nums[k];
                }

                for (k=0; k++; k<i)
                {
                    a = sub[k];
                    d=0;
                    for (o=k; o--; o>=0)
                    {
                        if (a==sub[o])
                        {
                            break;
                        }

                        if (o==0)
                        {
                           d++; 
                        }
                    }
                }
                sum += d * d;
            }
        }
        return sum;
    }
};

i pokazuje mi taki błąd

Line 8: Char 20: runtime error: signed integer overflow: 2147483647 + 1 cannot be represented in type 'int' (solution.cpp) SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior prog_joined.cpp:17:20

1 odpowiedź

+2 głosów
odpowiedź 15 grudnia 2023 przez toko Dyskutant (8,370 p.)
wybrane 15 grudnia 2023 przez MARECKIyt
 
Najlepsza

Pętle pisze się tak:

for([inicjalizacja zmiennej/ych]; [warunek]; [coś do zrobienia ze zmienną, np. inkrementacja])
    [instrukcja]
// przykład:
for(int i = 0; i < 123; i++)
    cout << "blabla" << i << endl;

Natomiast twoje pętle wyglądają tak:

for([inicjalizacja zmiennej/ych]; [coś do zrobienia ze zmienną]; [warunek])
    [instrukcja]

To jest w tym przypadku poprawne pod względem poprawności składni języka, ponieważ twoje [coś do zrobienia ze zmienną] zwraca wartość konwertowalną na bool, ale oczywiście to nie działa. Z tego powodu tworzy się nieskończona pętla i i w końcu się przepełnia.

Podobne pytania

0 głosów
5 odpowiedzi 730 wizyt
pytanie zadane 4 grudnia 2015 w C i C++ przez C☺ndzi Stary wyjadacz (12,100 p.)
0 głosów
1 odpowiedź 423 wizyt
pytanie zadane 28 października 2018 w C i C++ przez kamasazi98 Początkujący (410 p.)
0 głosów
0 odpowiedzi 288 wizyt
pytanie zadane 24 września 2022 w Systemy operacyjne, programy przez Patrykosik88 Początkujący (340 p.)

93,776 zapytań

142,736 odpowiedzi

323,388 komentarzy

63,381 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...