Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Liczby pierwsze- gdzie jest blad??? C++

rafcio363 16 Sep 2006 14:27 2110 4
  • #1
    rafcio363
    Level 30  
    Code:



    #include <stdio.h>
    #include <iostream>
    #include <math.h>
    #include <conio.h>
    using namespace std;

    int main()

    {

    int i,zakres ;
    cout << "Jaki zakres mam przeszukac?" << endl;

    cin >> zakres; cout << endl;

    bool tablica[zakres] ;

    for (i=2;i<=zakres;i++)
    {
    tablica[i] = true;



     }
     int limit = sqrt(float(zakres));

     for (i=2;i<=limit; i++)
     {
     if (tablica[i]!=false)

     { for (int j=i+1;j<=zakres;j++)
     { if (j % i==0) { tablica[j]=false;
     } } } }
     cout << "Liczby pierwsze z zakresu od 1 do " << zakres << ":" << endl;
     for (i=2;i<=zakres;i++) { if (tablica[i]!=false) { cout << i << endl;
     }
      }

      getch();
       }





    Wywala mi blad "[C++ Error] Unit1.cpp(16): E2313 Constant expression required"
    W linijce bool tablica[zakres] ; ?????

    Zalezy mi na szybkiej odpowiedzi :)

    pozdr.
  • #2
    Łuk_F
    Level 17  
    Witam

    Nie da rady tak zadeklarować tablicy. Musisz utworzyć ją dynamicznie. Poczytaj o funkcji malloc i jej podobnym.

    Pamiętaj o usunięciu tej tablicy pod koniec programu.
  • Helpful post
    #3
    krzychoocpp
    VIP Meritorious for electroda.pl
    Witam, co bardzo ciekawe, u mnie na linuksie g++ kompiluje bez problemu (oczywisćie po wywaleniu getch), działa też dobrze (chyba). Zamień tę linijkę na
    Code:
     bool *tablica = new bool[zakres]; 


    Na koniec usuń
    Code:
    delete [] tablica;


    Pozdrawiam, Krzysztof.
  • #4
    rafcio363
    Level 30  
    dzieki Krzychoo teraz działa,oto mi chodziło .

    Dodano po 42 [sekundy]:

    a poco usuwac tablice?
  • #5
    krzychoocpp
    VIP Meritorious for electroda.pl
    Witam, jesli jej nie usuniesz, program zostawi po sobie śmieci w pamięci. W dodatku gdy częściej będziesz używał takich instrukcji i nie będziesz usuwał zaalokowanej pamięci, wycieknie ona. Jest wiele programów do badania wycieków pamięci i jeśli używasz dynamicznej alokacji, zawsze warto takiego użyć.

    Pozdrawiam, Krzysztof.