PolskiFrancuz Opublikowano 20 Kwietnia 2012 Udostępnij Opublikowano 20 Kwietnia 2012 [b]Wspólne dzielniki pierwsze [/b] Mam napisać program, który czyta dwie liczby naturalne A, B i wypisuje wszystkie liczby pierwsze, które są dzielnikami obydwu liczb. (Każdy podzielnik powinien być wypisany tylko raz i liczby wypisujemy od najmniejszej do największej.) Uwaga: Podany zakres (2? A, B ? 10000000) jest częścią specyfikacji algorytmy, jest również informacją o typie i zakresie jakie może wprowadzić użytkownik. Wczytaj się w warunki, znajdziesz tam podpowiedzi rozwiązywania zadania. Na przykład dla liczb: 900 260 program powinien wypisać 2 5 Wymagania: Napisanie funkcji dającej odpowiedź czy dany dzielnik jest liczbą pierwszą Za zwrócenie wartości w funkcji sprawdzanej wartości Za wywołanie w pętli funkcji, dającej odpowiedź czy dany dzielnik jest liczbą pierwszą z uwzględnieniem podzielności obu liczb Prawidłowe wypisanie dzielników Sprawa wygląda tak, że zupełnie nie wiem co robię źle, przesiadłem się z dev na VE2010 Expres i coś mi nie idzie :DD Zacząłem robić i od razu błędy :/ Pisałem funkcje spr czy liczba jest pierwsza, ale przy spr okazuje się że coś źle zwraca :/ Kod: // zadanie1.cpp : Defines the entry point for the console application. // #include "StdAfx.h" #include <cstdlib> #include <iostream> #include <conio.h> using namespace std; int pierwsze(int n) { bool pier; int i=2; while(n % i) i++; if (i==n) {pier=true;} else {pier=false;} return pier; } int main() { //sekcja spr pierwszej int n; cout<<"podaj liczbe: "; cin>>n; bool pier; int pierwsze(n); if(pier==true) { cout<<"tak"; }else { cout<<"nie"; } cin.ignore(); _getch(); return 0; } Dla liczby 2 wyskakuje nie, a przecież jest liczbą pierwszą :/ Kod możecie zupełnie zmienić, bo nieograniam trochę tego :DD Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 20 Kwietnia 2012 Administratorzy Udostępnij Opublikowano 20 Kwietnia 2012 nie przypisujesz nic do bool pier ? funkcja int pierwsze(int n) powinna mieć typ bool (bo zwraca boola), natomiast, w main: bool pier; pier = pierwsze(n); if(pier==true) { ... a w ogóle to jeszcze szybciej: if (pierwsze(n)) { ... bez zadnego boola Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PolskiFrancuz Opublikowano 20 Kwietnia 2012 Autor Udostępnij Opublikowano 20 Kwietnia 2012 a w ogóle to jeszcze szybciej: KOD if (pierwsze(n)) { ... bez zadnego boola Znaczy jak ? @E mam thx :))) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 20 Kwietnia 2012 Administratorzy Udostępnij Opublikowano 20 Kwietnia 2012 Pamiętaj, ze w trakcie działania programu, w miejsce funkcji jest jakby podstawiany jej wynik (tak to sobie wyobraź, bo wiadomo wygląda to inaczej) - zatem if(cokolwiek) zamienia sie na if(true) lub if(false) - i nie ma innych mozliwości. Zawsze, wszystko jest albo true, albo false. Wszystko musi się do tego sprowadzić. Np. if (5) to też if(true), a if (0) to if (false) itd. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PolskiFrancuz Opublikowano 20 Kwietnia 2012 Autor Udostępnij Opublikowano 20 Kwietnia 2012 Errors: 1>------ Build started: Project: zadanie1, Configuration: Debug Win32 ------ 1> zadanie1.cpp 1>c:\documents and settings\fg\moje dokumenty\visual studio 2010\projects\zadanie1\zadanie1\zadanie1.cpp(24): error C2065: 'A' : undeclared identifier 1>c:\documents and settings\fg\moje dokumenty\visual studio 2010\projects\zadanie1\zadanie1\zadanie1.cpp(24): error C2065: 'B' : undeclared identifier 1>c:\documents and settings\fg\moje dokumenty\visual studio 2010\projects\zadanie1\zadanie1\zadanie1.cpp(25): error C2448: 'dzielniki' : function-style initializer appears to be a function definition 1>c:\documents and settings\fg\moje dokumenty\visual studio 2010\projects\zadanie1\zadanie1\zadanie1.cpp(46): error C2182: 'dzielniki' : illegal use of type 'void' 1>c:\documents and settings\fg\moje dokumenty\visual studio 2010\projects\zadanie1\zadanie1\zadanie1.cpp(46): error C2078: too many initializers ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== Kod: // zadanie1.cpp : Defines the entry point for the console application. // #include "StdAfx.h" #include <cstdlib> #include <iostream> #include <conio.h> using namespace std; int pierwsze(int n) { bool pier; int i=2; while(n % i) i++; if (i==n) {pier=true;} else {pier=false;} return pier; } void dzielniki(A,B) { while (n <= A) { if (A % n ==0 && B % n ==0) { if(pierwsze(n)) { cout<<n<<" "; } } n++; } } int main() { int A; int B; cin>>A>>B; void dzielniki(A,B); cin.ignore(); _getch(); return 0; } A teraz bo nie mam pomysłu :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 20 Kwietnia 2012 Administratorzy Udostępnij Opublikowano 20 Kwietnia 2012 void dzielniki(int A,int B ) ?? nie podałeś, jakiego typu mają być... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PolskiFrancuz Opublikowano 20 Kwietnia 2012 Autor Udostępnij Opublikowano 20 Kwietnia 2012 a dzięki :DD PS:A teraz będę robił drugie zadanie, też z c++ czy pisać w tym temacie czy założyć nowy ??(Już mam tyle ostrzeżeń, że wole mieć pewność zanim coś zrobię) :DD Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 20 Kwietnia 2012 Administratorzy Udostępnij Opublikowano 20 Kwietnia 2012 w tym pisz :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PolskiFrancuz Opublikowano 20 Kwietnia 2012 Autor Udostępnij Opublikowano 20 Kwietnia 2012 a jeszcze to samo zadanie :D Wersja Void 1>------ Build started: Project: zadanie1, Configuration: Debug Win32 ------ 1> zadanie1.cpp 1>c:\documents and settings\fg\moje dokumenty\visual studio 2010\projects\zadanie1\zadanie1\zadanie1.cpp(47): error C2182: 'dzielniki' : illegal use of type 'void' 1>c:\documents and settings\fg\moje dokumenty\visual studio 2010\projects\zadanie1\zadanie1\zadanie1.cpp(47): error C2078: too many initializers ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== // zadanie1.cpp : Defines the entry point for the console application. // #include "StdAfx.h" #include <cstdlib> #include <iostream> #include <conio.h> using namespace std; int pierwsze(int n) { bool pier; int i=2; while(n % i) i++; if (i==n) {pier=true;} else {pier=false;} return pier; } void dzielniki(int A,int B) { int n=2; while (n <= A) { if (A % n ==0 && B % n ==0) { if(pierwsze(n)) { cout<<n<<" "; } } n++; } } int main() { int A; int B; cin>>A>>B; void dzielniki(A,B); cin.ignore(); _getch(); return 0; } Wersja Int zamiast void 1>c:\documents and settings\fg\moje dokumenty\visual studio 2010\projects\zadanie1\zadanie1\zadanie1.cpp(48): error C2078: too many initializers // zadanie1.cpp : Defines the entry point for the console application. // #include "StdAfx.h" #include <cstdlib> #include <iostream> #include <conio.h> using namespace std; int pierwsze(int n) { bool pier; int i=2; while(n % i) i++; if (i==n) {pier=true;} else {pier=false;} return pier; } int dzielniki(int A,int B) { int n=2; while (n <= A) { if (A % n ==0 && B % n ==0) { if(pierwsze(n)) { cout<<n<<" "; } } n++; } return 0; } int main() { int A; int B; cin>>A>>B; int dzielniki(A,B); cin.ignore(); _getch(); return 0; } @E: Masz pomysł co jest źle ?? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 20 Kwietnia 2012 Administratorzy Udostępnij Opublikowano 20 Kwietnia 2012 Jak używasz funkcji, to nie piszesz void dzielniki(A,B ); - tak tylko w definicji robisz... potem już bez void (typ zmiennej przed nazwą funkcji informuje program, co ona zwróci) typ nazwa([typ argument]) { } main() { nazwa(); typ zmienna; zmienna = nazwa(); //typy muszą byc te same } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PolskiFrancuz Opublikowano 20 Kwietnia 2012 Autor Udostępnij Opublikowano 20 Kwietnia 2012 ojojoj ale ze mnie yupek :D działa dzięki :D oki: Zadanie2: Mam napisać program, który czyta liczbę naturalną N z zakresu od 1 do 1000000 i wypisuje największą całkowitą potęgę liczby 2, która nie jest większa od N i najmniejszą liczbę pierwszą, która jest większa od N. Liczby powinny być wypisane w jednym wierszu i oddzielone pojedynczym odstępem. Na przykład dla liczby 12 program powinien wypisać 8 13. Wymagania: ? Napisanie funkcji na liczbę pierwsza(zrobione) ? Odpowiedzenie na pytanie o największą potęgę całkowitą liczby 2 (nie wiem jak to zrobić :/ Ma ktoś pomysł na algorytm ?? ? Wypisanie pierwszej liczby pierwszej > od podanej liczby Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
adam014 Opublikowano 20 Kwietnia 2012 Udostępnij Opublikowano 20 Kwietnia 2012 Potęgujesz aż do momentu przekroczenia N i zwracasz poprzednią wartość. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 20 Kwietnia 2012 Udostępnij Opublikowano 20 Kwietnia 2012 ? Odpowiedzenie na pytanie o największą potęgę całkowitą liczby 2 (nie wiem jak to zrobić :/ Ma ktoś pomysł na algorytm ?? #include <iostream> using namespace std; int main() { int n; cout<<"Podaj N"<<endl; cin>>n; int w=1; while (w<=n) { w*=n; } cout<<"Najwieksza potrga calkowita liczby 2 wynosi: "<<w<<endl; system("pause"); return 0; } Powinno działać, nie sprawdzałem. ? Wypisanie pierwszej liczby pierwszej > od podanej liczby Sito eratostenesa Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PolskiFrancuz Opublikowano 20 Kwietnia 2012 Autor Udostępnij Opublikowano 20 Kwietnia 2012 thx za pomysł, już się biorę do roboty :DD @E: Skończyłem oba zadania, więc temat do zamknięcia :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się