RexRX 8 Napisano 27 Października 2013 Udostępnij Napisano 27 Października 2013 Witam Od zeszłego roku chodzę do technikum informatycznego ale dopiero od tego zaczeliśmy przygodę z C++. Wogólę nie rozumiem tego języka i proszę o pomoc w zrobieniu zadania domowego które brzmi tak: Zadanie domowe obowiązkowe:Napisz program, w którym1) dla wygenerowanej całkowitej liczby losowej x z przedziału [-100 ; 100 ] zostanie wypisany komunikat, czy jest ona parzysta, czy nieparzysta;2) zostanie podana reszta z dzielenia x przez 6 i jeśli reszta będzie wynosiła od 1 do 5, jej wartość zostanie wypisana słownie, w przeciwnym wypadku zostanie podany komunikat, że liczba x jest podzielna przez 63) użyjesz instrukcji switch, a w każdym wypadku zostanie wykonana tylko jedna instrukcjaKod programu umieść w zasobie Zadanie domowe - switch w przeciągu tygodnia od zajęć, na których poznałeś tą konstrukcję.Zadanie domowe dodatkowe (na 6):Napisz program wypisujący następujące menu:1. Dane ucznia2. Aktualna data i godzina3. Algorytm wypisujący, czy wprowadzona zmienna jest parzysta, czy nieparzysta (używając instrukcji warunkowej i funkcji dzielenia z resztą)4. Zakończenie programu Nie musi być wykonane to zadanie na 6 bo wyglądałoby to dość dziwnie że nic nie rozumiem na lekcjach a oddaję zadanie na 6. Proszę też o wytłumaczenie krok po kroku tych zadań. Cytuj Link to post Share on other sites
Luki91 157 Napisano 27 Października 2013 Udostępnij Napisano 27 Października 2013 (edytowane) Nie rozumiesz języka, czy zadania? Czy masz problem z wymysleniem algorytmu? Bo jeśli języka, jak sam napisałeś, to podaj dokładnie które konstrukcje sprawiają ci problemy (if, switch, pętle, może random?).Wysłane z mojego GT-I9100 przy użyciu Tapatalka A w ogóle z tego co widzę to zadanie na 6 jest łatwiejsze (może raczej prostsze) od podstawowego ;] Generalnie napisz z czym konkretnie masz problem, bo najlepiej jeśli napiszesz to zadanie samemu, z czyjąś pomocą. Jedyny sposób aby nauczyć się programować to kombinowanie i pisanie kodu samemu. Edytowane 27 Października 2013 przez Luki91 Cytuj Link to post Share on other sites
RexRX 8 Napisano 27 Października 2013 Autor Udostępnij Napisano 27 Października 2013 (edytowane) Nie rozumiem ani jednego ani drugiego. Przydałoby mi się rozwiązanie tych zadań z dokładnym wytłumaczeniem krok po kroku. Początek programu umiem napisać bo to podstawa ale jeśli już chodzi o algorytm to właśnie sprawia problem Wysłane z mojego GT-S5660 za pomocą Tapatalk 2 Edytowane 27 Października 2013 przez RexRX Cytuj Link to post Share on other sites
cza12ster 104 Napisano 27 Października 2013 Udostępnij Napisano 27 Października 2013 Po pierwsze najpierw stwórz sobie schemat blokowy jakby to miało działać, potem spróbuj coś skompilować, tak z głowy to tylko stary programista napisze. Cytuj Link to post Share on other sites
RexRX 8 Napisano 27 Października 2013 Autor Udostępnij Napisano 27 Października 2013 W szkole lekcje z c++ wyglądają tak że pani coś napisze na tablicy, pyta się czy rozumiemy i każe robić zadania. Potem 11 osób na 13 coś kombinuje ale nie wie co robi i czekają aż pozostała dwójka to zrobi i wstawi i reszta sobie kopiuje. I tak wygląda nasze rozumienie tego języka. Wysłane z mojego GT-S5660 za pomocą Tapatalk 2 Cytuj Link to post Share on other sites
jozekbudz 4 Napisano 27 Października 2013 Udostępnij Napisano 27 Października 2013 Tak na szybkiego w dev c++5.4.0 #include <iostream> #include <sstream> #include <cstdlib> #include <ctime> #include <cmath> using namespace std; int l_losowa(int zakres_dol,int zakres_gora); string l_parzysta(int liczba); string l_reszta(int liczba); main() { srand (time(NULL)); int liczba=l_losowa(-100,100); cout<<"Liczba losowa od -100 do 100 to : "<<liczba<<endl<<l_parzysta(liczba)<<endl<<l_reszta(liczba); return 0; } int l_losowa(int zakres_dol,int zakres_gora){ return rand() % zakres_gora + zakres_dol; } string l_parzysta(int liczba){ return (liczba%2==0?"wygenerowana liczba jest parzysta":"wygenerowana liczba jest nieparzysta"); } string l_reszta(int liczba){ switch (abs(liczba%6)){ case 1: return "reszta jeden"; break; case 2: return "reszta dwa"; break; case 3: return "reszta trzy"; break; case 4: return "reszta cztery"; break; case 5: return "reszta pięć"; break; case 0: ostringstream s; s << "liczba" << liczba<< " jest podzielna przez 6"<<endl; return s.str(); break; } } ale opisywać mi się już tego nie chce ;P zachęcam do rozszyfrowania nazw funkcj bibliotecznych Cytuj Link to post Share on other sites
RexRX 8 Napisano 27 Października 2013 Autor Udostępnij Napisano 27 Października 2013 Ja będe pracował w Visual Studio 2013. Jutro to sprawdzę po powrocie ze szkoły. Jak by miał ktoś jeszcze jakieś rozwiązania to chętnie przyjmę. Wysłane z mojego GT-S5660 za pomocą Tapatalk 2 Cytuj Link to post Share on other sites
Klikacz 1462 Napisano 27 Października 2013 Udostępnij Napisano 27 Października 2013 Nawet nie wiadomo czy ten przedział [-100;100] jest domknięty, czy nie. Cytuj Link to post Share on other sites
RexRX 8 Napisano 27 Października 2013 Autor Udostępnij Napisano 27 Października 2013 Dlatego czekam na inne rozwiązania Wysłane z mojego GT-S5660 za pomocą Tapatalk 2 Cytuj Link to post Share on other sites
Klikacz 1462 Napisano 27 Października 2013 Udostępnij Napisano 27 Października 2013 (edytowane) W TWOIM POLECENIU NIE WIADOMO CZY TE LICZBY NALEŻĄ DO PRZEDZIAŁÓW jeśli używamy sRand (generator liczb losowych) w c++ to liczby podane w nawiasach należą do przedziału. Edytowane 27 Października 2013 przez Klikacz Cytuj Link to post Share on other sites
Luki91 157 Napisano 27 Października 2013 Udostępnij Napisano 27 Października 2013 (edytowane) Ja proponuję nie korzystać z gotowych rozwiązań tylko usiąść samemu i pomyśleć nad kodem. W inny sposób nie nauczysz się programowania, a chyba nie chcesz z każdym zadaniem lecieć na forum? To jest algorytm z dużymi podpowiedziami: 1) Losujesz liczbę całkowitą z przedziału [-100 ; 100]. Jak to zrobić, masz opisane tutaj: http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Pseudolosowe-liczby-calkowite/290 2) Jeśli wylosowana liczba jest parzysta (dzielenie przez 2 daje resztę 0 - operator %, czyli if (x%2==0) ), wypisujesz odpowiedni komunikat, w przeciwnym wypadku (else) wypisujesz komunikat że nie jest. 3) Obliczasz resztę z dzielenia przez 6 (x%6). 3) Korzystasz z konstrukcji switch. Dla case'ów 1,2,3,4,5 wypisujesz te liczby słownie. Case 0 lub defaultowy to wypisanie komunikatu, że liczba jest podzielna przez 6. Tutaj o instrukcji switch: http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Warunek-wielokrotnego-wyboru-switch-case/17 P.S Nie musisz w tym zadaniu tworzyć żadnych funkcji jak @jozekbudz, łatwiej ci będzie to zrobić linijka za linijką. Edytowane 27 Października 2013 przez Luki91 1 Cytuj Link to post Share on other sites
RexRX 8 Napisano 28 Października 2013 Autor Udostępnij Napisano 28 Października 2013 Dziś będe próbował, chciałbym się tylko dowiedzieć czy tamto rozwiązanie może służyć jako szablon. I czy między każdą częścią programu zastosować system pause czy bibliotekę conio.h? Wysłane z mojego GT-S5660 za pomocą Tapatalk 2 Cytuj Link to post Share on other sites
szatkus 282 Napisano 28 Października 2013 Udostępnij Napisano 28 Października 2013 @@RexRX, zależy co masz na myśli, to rozwiązanie jest brzydkie, ale poprawne Cytuj Link to post Share on other sites
RexRX 8 Napisano 28 Października 2013 Autor Udostępnij Napisano 28 Października 2013 Nie krytykuje twojego rozwiązania. Wysłane z mojego GT-S5660 za pomocą Tapatalk 2 Cytuj Link to post Share on other sites
Rexlu 170 Napisano 28 Października 2013 Udostępnij Napisano 28 Października 2013 1) dla wygenerowanej całkowitej liczby losowej x z przedziału [-100 ; 100 ] zostanie wypisany komunikat, czy jest ona parzysta, czy nieparzysta; *To wygląda jak przedział zamknięty *liczba parzysta jest wtedy kiedy podzielona przez 2 daje wynik bez reszty. Tutaj przyda ci się w c++ modulo czyli % (pascal mod) Przykład: 3 modulo 2 = 1 lub 4 modulo 2 = 0 i stawiamy warunek. Jeśli reszta>0 wtedy nieparzysta, jeśli reszta=0 wtedy parzysta. 2) zostanie podana reszta z dzielenia x przez 6 i jeśli reszta będzie wynosiła od 1 do 5, jej wartość zostanie wypisana słownie, w przeciwnym wypadku zostanie podany komunikat, że liczba x jest podzielna przez 6 Znów korzystasz z modulo i korzystasz ze switcha lub robisz 5 warunkow i else. 3) jednak musisz skorzystać ze switch. Poczytaj wgl o składni. http://cpp0x.pl/kursy/Kurs-C++/1 i o czym kolwiek jeżeli nie znasz żadnych funkcji. To dodatkowe. Skoro pracujecie w Visual Studio 2013. To ma być to okienkowy program (bardzo miło się w visualu to robi i prosto) czy konsolowy. Bo jak konsolowy to poprostu cout << imie nazwisko i tak dalej .. Cytuj Link to post Share on other sites
Recommended Posts
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.