isPrime
Ostatnio zmodyfikowano 2017-03-12 08:46
Tenshey Temat założony przez niniejszego użytkownika |
isPrime » 2017-03-11 15:38:20 Witam. Mam za zadanie stworzyć program, aby dla każdej liczby wyświetlało słowo TAK, jeśli liczba ta jest pierwsza, słowo: NIE, w przeciwnym wypadku. Zatrzymałem się w tym momencie. Jakiś pomysł jak powinienem zmienić funkcję prime aby zwracała tekst? przykład: Input:
3 11 1 4
Output: TAK NIE NIE
#include <iostream>
using namespace std;
bool prime( int n ); void wpisztab( int test ); void wypisztab( int test );
int main() { int test; cout << "How many test do you wanna do?!" << endl; cin >> test; cout << "Put your valeus into the query." << endl; wpisztab( test ); cout << "Lets checks if your valeus are prime!" << endl; wypisztab( test ); }
void wpisztab( int test ) { int tab[ 10000 ]; int liczba = 1; do { cin >> tab[ liczba ]; liczba++; } while( liczba <= test ); }
void wypisztab( int test ) { int tab[ 10000 ]; int liczba = 1; do { cout << prime( tab[ liczba ] ) << endl; liczba++; } while( liczba <= test ); }
bool prime( int n ) { int i; for( i = 2; i < n; i++ ) { if( n % i == 0 ) { return false; } } return true; }
|
|
maly7 |
» 2017-03-11 16:19:26 Liczba 0 oraz 1 nie jest liczbą pierwszą, więc dodaj stosowny warunek :D Aby zwracało słowo tak lub nie musisz zamiast typu bool zwracać np. string: string prime( int n ) { if( n < 2 ) return "NIE"; for( int i = 2; i < n; i++ ) { if( n % i == 0 ) return "NIE"; } return "TAK"; } Dodatkowo, żeby pętla wykonywała się szybciej możesz użyć: for( int i = 2; i * i <= n; i++ ) |
|
mateczek |
» 2017-03-11 20:21:09 czy to zadanie ze "spoja"?? lub "maina"?? void wpisztab( int test ) { int tab[ 10000 ];
|
|
Tenshey Temat założony przez niniejszego użytkownika |
ispirme » 2017-03-11 21:57:20 tak, zadanie ze spoja. Ostatecznie zrobiłem coś takiego. #include <iostream>
using namespace std;
string prime( int n ); void wpisztab( int test ); bool wypisztab( int test );
int main() { int test; int tab[ 10000 ]; int liczba = 1; cout << "How many test do you wanna do?!" << endl; cin >> test; cout << "Put your valeus into the query." << endl; wpisztab( test ); cout << "Lets checks if your valeus are prime!" << endl; do { cout << prime( tab[ liczba ] ) << endl; liczba++; } while( liczba <= test ); }
void wpisztab( int test ) { int tab[ 10000 ]; int liczba = 1; do { cin >> tab[ liczba ]; liczba++; } while( liczba <= test ); }
string prime( int n ) { for( int i = 2; i * i <= n; i++ ) { if( n % i == 0 ) { return "NIE"; } } return "TAK"; }
Lecz zwraca tylko wartosc tak... |
|
maly7 |
» 2017-03-11 23:03:45 Zobacz co napisał mateczek. Tworzysz w funkcji tablicę (lokalnie), wpisujesz do niej x danych, ale po wyjściu z funkcji tablica lokalna (utworzona w tej funkcji) jest usuwana. Żeby zapisać w tej funkcji dane do tablicy utworzonej w mainie musisz przekazać jako argument funkcji wskaźnik/referencję na tablicę. Może nie jest to w tym programie istotne, ale dlaczego nie zapełniasz tablicy od 0 tylko od 1? Jeśli tablica byłaby mniejsza lub teraz ktoś wprowadziłby 10000 danych to wyszedłbyś poza jej zakres. #include <iostream>
using namespace std;
string prime( int n ); void wpisztab( int * tab, int test ); bool wypisztab( int test );
int main() { int test; int tab[ 10000 ]; int liczba = 0; cout << "How many test do you wanna do?!" << endl; cin >> test; cout << "Put your valeus into the query." << endl; wpisztab( tab, test ); cout << "Lets checks if your valeus are prime!" << endl; do { cout << prime( tab[ liczba ] ) << endl; liczba++; } while( liczba < test ); }
void wpisztab( int * tab, int test ) { int liczba = 0; do { cin >> tab[ liczba ]; liczba++; } while( liczba < test ); }
string prime( int n ) { if( n < 2 ) return "NIE"; for( int i = 2; i * i <= n; i++ ) { if( n % i == 0 ) { return "NIE"; } } return "TAK"; }
|
|
mateczek |
» 2017-03-12 08:46:05 cout << "How many test do you wanna do?!" << endl;
To ma być program, który wypluwa dane a nie przypadkowe teksty!!! Jeśli wyjście ma zawierać "TAK" to ma to być dokładnie to słowo. Nie może być "tak" ani "Tak" ani żaden inny tekst w stylu "ta liczba jest pierwsza" http://pl.spoj.com/problems/PRIME_T/ jeśli to jest to zadanie z linka, to Twoja tablica ma mieć rozmiar o jedno zero większy. Tablicowanie nie jest niezbędne do rozwiązania tego zadania. |
|
« 1 » |