Skocz do zawartości

Pomoc w zrozumieniu C++


Recommended Posts

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órym
1) 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 6
3) użyjesz instrukcji switch, a w każdym wypadku zostanie wykonana tylko jedna instrukcja

Kod 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 ucznia
2.  Aktualna data i godzina
3.  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ń.

Link to post
Share on other sites

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 przez Luki91
Link to post
Share on other sites

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 przez RexRX
Link to post
Share on other sites

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

 

 

Link to post
Share on other sites

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

Link to post
Share on other sites

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 przez Luki91
  • Popieram 1
Link to post
Share on other sites

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 .. 

Link to post
Share on other sites

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ą.

Gość
Odpowiedz w tym wątku...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...