Sito Eratostenesa
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Sito Eratostenesa

AutorWiadomość
Temat założony przez niniejszego użytkownika
Sito Eratostenesa
» 2019-03-10 09:45:35
Witam, mam problem z tym oto programem. Otóż chcę wyświetlić liczby pierwsze do danego przedziału.
Program ma wykreślać wielokrotności po kolei liczb do pierwiastka z n, Sito Eratostenesa.
Czy ktoś spojrzy na to okiem eksperta ? :D

C/C++
#include <iostream>
#include <cmath>

using namespace std;
int n;
int main()
{
    cout << "podaj zakres koncowy: " << endl;
    cin >> n;
    int t[ n ];
   
    for( int i = 2; i < sqrt( n ); i++ )
    {
        for( int j = i; j < n + 1; j = i + i )
        {
            if( t[ i ] % i == 0 )
            {
                t[ i ] = false;
            }
            else t[ i ] = true;
           
        }
    }
    for( int i = 0; i < n; i++ )
    {
        cout << t[ i ] << "\t";
    }
    return 0;
}
P-174150
» 2019-03-10 09:57:15
ekspertem nie jestem,

TEN ZAPIS JEST NIEPRAWIDŁOWY!
C/C++
cin >> n;
int t[ n ]; //zle
Tablice-jednowymiarowe
zobacz co pisze w tabelce Uwaga!
poczytaj o Tablicach dynamicznych

P-174151
Temat założony przez niniejszego użytkownika
cos tam poczytalem
» 2019-03-10 10:56:53
mam teraz coś takiego, działa wszystko pieknie ładnie, a gdybym chciał zamienić elementy boolowskie na cyferki?




C/C++
#include <iostream>
#include <cmath>

using namespace std;
int n;
int main()
{
    cout << "podaj przedzial 2- n: " << endl;
    cin >> n;
    bool t[ n + 1 ];
    for( int i = 0; i < n; i++ )
    {
        t[ i ] = true;
    }
    t[ 1 ] = false;
   
    for( int i = 2; i <= sqrt( n ); i++ )
    {
        if( t[ i ] == true )
        {
            for( int j = i + i; j <= n; j = j + i )
            {
                t[ j ] = false;
            }
        }
    }
    for( int i = 2; i < n; i++ )
    {
        cout << t[ i ] << "\t";
    }
    return 0;
}
P-174152
» 2019-03-10 11:18:50
a gdybym chciał zamienić elementy boolowskie na cyferki?
Bool jest typem logicznym. Przyjmuje tylko 2 wartość True lub False 1 lub 0

można zrobić tak np.
C/C++
typedef enum { TRUE = 1, FALSE = 0 } bool;

@EDIT
C/C++
cin >> n;
bool t[ n + 1 ];
 jak już coś to powinno być coś takiego
C/C++
int n;
bool * tab;
cin >> n;
tab = new bool[ n + 1 ];
P-174153
» 2019-03-10 11:26:35
można zrobić tak np.
C/C++
typedef enum { TRUE = 1, FALSE = 0 } bool;
Co to za bzdury?
P-174154
» 2019-03-10 11:35:22
zapomniałem się, że to C++ i napisałem jak zdefiniować enum w ANSI C
P-174155
« 1 »
 Strona 1 z 1