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

zbyt duża ilość porównań w pętli for

Object Storage Arubacloud
0 głosów
123 wizyt
pytanie zadane 12 marca 2017 w C i C++ przez JamesBlant Początkujący (290 p.)

Witam, 

Podczas robienia jednego z zadań z C++'sa natknąłem się na mały problem. Mianowicie, sam program ma zliczać ilość wystąpień elementu tablicy1 o indeksie i(czyli ilość 0,1,2,3 ,4 itd), a następnie zapisywać tą wartość w tablicy2.

Np taka tablica1 = { 1,2,1,1,4,3,2,0,0}; Wynik: tablica2 = {2,3,2,1,1,0,0,0,0} /* dla rozmiaru =  9 */

Problem w tym gdy wielkość pętli(porównań) jest większa niż 50 to po skompilowaniu wyświetla się komunikat "Program przestaje działać".

A teraz kod:

#include <iostream>

using namespace std;

int main()
{
   int t[] = {312,2343,111,111,312}; // przykładowa tablica
   int r = 5;
   int m = 2400;
   int tab[m];
   int licz;
   for(int i=0;i<m;i++)  // <--- gdy m jest mniejsze od 50 to algroytm działa prawidłowo
    {
     licz=0;
     for(int j=0;j<m;j++){
        if(t[i]==j)licz++; // rówmież gdy usuniemy if'a program działa
     }tab[i]=licz; // do nowej tablicy przypisywane sa ilosci wystapien elementu 0,1,2,3,4,5,6...m w tablicy t[].
   }
}

-rozmiar (m) jest taki duży ponieważ wymaga tego zadanie.

-zmiana typow zmiennych na long nie pomaga

komentarz 12 marca 2017 przez Munvik Dyskutant (9,350 p.)
Jeżeli zadanie wymaga rozmiaru 2400 to tablica t[] też powinna mieć 2400 elementów, bo masz pętle która się iteruje do 2400 więc przy wyłuskaniu t[i] pobierasz z tablicy t elementu którego nie ma.

1 odpowiedź

0 głosów
odpowiedź 12 marca 2017 przez tangarr Mędrzec (154,860 p.)

Problemem jest wewnętrzny for. Wychodzisz poza zakres tablicy t. Tablica ma długość 5 a ty czytasz z niej 2400 elementów.

for(int j=0;j<r;j++){
    if(t[j]==r)
        licz++;
}

 

komentarz 12 marca 2017 przez JamesBlant Początkujący (290 p.)
Dzięki za pomoc.

Podobne pytania

0 głosów
1 odpowiedź 190 wizyt
pytanie zadane 13 marca 2017 w JavaScript przez zgrybus Pasjonat (24,860 p.)
0 głosów
1 odpowiedź 301 wizyt
0 głosów
1 odpowiedź 110 wizyt
pytanie zadane 7 lutego 2021 w C i C++ przez Nabuchadonozor Gaduła (3,120 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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!

...