Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Trzy pytania osoby początkującej

Ostatnio zmodyfikowano 2008-06-09 22:21
Autor Wiadomość
siemes
Temat założony przez niniejszego użytkownika
» 2008-06-09 16:40:16
już chyba ostatnie pytanie w tak krótkim czasie (bo stronka jest super i na pewno w wakacje przerobie sobie kurs C++), ale do rzeczy
co znaczy jeśli napiszemy warunek
np if(ciag[i])
to wbrew pozorom nie jest żaden warunek a jednak koleżanka wykorzystała go i działa, tu jest algorytm w którym zostało to wykorzystane do znajdowania liczb pierwszych

C/C++
#include<iostream.h>
#include<math.h>
#include <conio.h>
#include<stdlib.h>
using namespace std;
int main()
{
    int n, i, j, licz = 0, * ciag;
    cout << "podaj liczbe naturalna wieksza od 1 \n";
    cin >> n;
    ciag = new int[ n + 1 ];
    for( i = 2; i <= n; i++ )
         ciag[ i ] = 1;
   
    for( i = 2; i <= n; i++ )
   
    if( ciag[ i ] ) np TUTAJ
   
    for( j = i; j * i <= n; j++ )
         ciag[ i * j ] = 0;
   
    for( i = 2; i < n; i++ )
   
    if( ciag[ i ] )
   
         licz = licz + 1;
   
    if( ciag[ n ] )
   
         cout << n << "jest liczba pierwsza";
    else
         cout << n << "nie jest liczba pierwsza\n.";
   
    cout << endl << "istnieja " << licz << "liczby pierwsze mniejsze od " << n;
   
    getch();
    return( 0 );
}
Prosze o pomoc

A przy okazji drugie pytanie, mam ciąg liczb i mam sprawdzić czy są względnie pierwsze (NWD(x,y)=1) i napisałem program który porównuje kolejne liczby (1 z 2, 2 z 3 itd)
C/C++
#include<iostream.h>
#include<math.h>
#include<stdlib.h>
#include<conio.h>
#include<ctime>
using namespace std;
int NWD( int x, int y );
int main()
{
    int n, i;
    cout << "Podaj dlugosc ciagu rowna n.\n";
    cin >> n;
    int * ciag = new int[ n ];
    srand( time( 0 ) );
    for( i = 0; i < n; i++ )
    {
        ciag[ i ] = rand() %( 100 );
        cout << ciag[ i ] << endl;
    }
    for( i = 1; i < n; i++ )
    {
        if(( NWD( ciag[ i ], ciag[ i + 1 ] ) ) == 1 )
             cout << "liczba " << ciag[ i ] << " i " << ciag[ i + 1 ] << " sa wzglednie pierwsze \n ";
       
    }
   
    getch();
    return( 0 );
}
int NWD( int x, int y )
{
    int r;
    while( y != 0 )
    {
        r = x % y;
        x = y;
        y = r;
    }
    return( x );
}
i tu pytanie, czy da się sprawdzić czy wszystkie liczby względem siebie będą pierwsze? (po tu porównywałem poszczególne liczby)
P-844
DejaVu
» 2008-06-09 22:21:21
Ad 1. Warunek:
C/C++
if( zmienna )
{
}
jest równoważny warunkowi:
C/C++
if( zmienna != 0 )
{
}
Mówiąc prościej, zapis pierwszy i drugi oznaczają dokładnie to samo. Pierwszy zapis jest krótszą wersją zapisu drugiego. Bardzo często w programowaniu chcemy sprawdzić czy coś jest różne od zera, stąd też i standard języka C/C++ pozwala na używanie takiego krótkiego i wygodnego zapisu. Program staje się znacznie mniej czytelny dla osób, które się dopiero uczą programowania, jednak dla programistów z większym doświadczeniem krótszy zapis jest poprostu lepszy, bo mniej jest pisania :P

Ad 2.
C/C++
int ilosc = 90;
for( int i = 1; i <= ilosc; i++ )
for( int j = 1; j <= ilosc; j++ )
{
    NWD( i, j ); //tutaj uzupełniasz kod po swojemu jak miałeś resztę napisaną.
}
P-845
1 « 2 »
Poprzednia strona Strona 2 z 2