Programowania kolos :)
Lukas:
Dziadek Mróz jak będziesz aktywny to daj znać
12 sty 15:27
Dziadek Mróz:
Ja jestem aktywny, pisz.
12 sty 15:48
Lukas:
2. zasieg, czas zycia, zakres zmiennych
3. wyjasnij i zilistruj pojecia void, continue, default, strchr
12 sty 16:30
Dziadek Mróz:
2.
zasięg − tak jak pisaliśmy wcześniej są zmienne globalne i lokalne.
czas życia − używamy tu słowa kluczowego
static. Gdy mamy funkcję i w niej zmienną
static to po wyjściu z tej funkcji ta zmienna zachowuje swoją wartość, przy kolejnym
wywołaniu funkcji możemy operować jeszcze na starej wartości zmiennej.
zakres − należy pamiętać, że każda zmienna ma swoją wielkość, char (1B), int (4B), ... ,
więc używając ich można wyjść poza zakres tej zmiennej i otrzymać zafałszowaną wartość
3.
void − typ bezzwrotny, funkcje tego typu wykonują tylko jakieś obliczenia nie zwracając
żadnej wartości.
continue − słowo kluczowe pomija wykonywania obliczeń w danej iteracji, w pętli for w
momencie wystąpienia słowa kluczowego continue, dana iteracja jest przerywana i wykonywana
jest kolejna iteracja
default − używane w switch() jako wybór inny z możliwych, np. wybrać można opcje 1−3 ale
wpiszemy 4 to wtedy wywoła się default.
strchr − nie używałem nigdy, ale z tego co czytam to funkcja zwracająca pozycję znaku w
napisie
http://www.cplusplus.com/reference/cstring/strchr/
12 sty 16:44
Lukas:
masz jeszcze chwilę bo jutro dzień sądu

?
12 sty 16:48
Dziadek Mróz:
Pisz co tam masz.
12 sty 16:48
Lukas:
3. Podac znaczenie i przykłady słów kluczowych case, register, void, unsigned, getch 4. Napisac
program który losuje liczby z przedziału [−50; 50] do momentu az ich suma bedzie parzysta. 5.
Napisac funkcje która usuwa z tekstu podanego jako parametr pierwsze wystąpienie wyrazu usun
12 sty 16:56
Lukas:
6. Podać przykłady przekazywania parametru i "zilustrować"
12 sty 16:57
Dziadek Mróz:
3.
case − używane w switch(), gdy zmienna w switch będzie miała taką samą wartość jak po
słowie kluczowym case to wykonuj instrukcje
int opcja = 1;
switch(opcja)
{
case 1:
{
cout << "opcja 1" << endl;
}
}
register − to słowo kluczowe mówi kompilatorowi, żeby daną zmienną umieścić w rejestrze
procesora, nie można tutaj odwoływać się do adresu zmiennej, bo rejestr nie jest adresem
register int zmienna;
void − jak wyżej
void wypisz(int wiek)
{
cout << "Twój wiek to: " << wiek << endl;
}
wypisz(85);
unsigned − słowo to oznacza, że dana zmienna nie może przyjmować wartości mniejszych od
zera, inaczej mówiąc, zmienna może być tylko dodatnia z zerem włącznie, zakres wartości to
suma zakresów ujemnego i dodatniego
int zmienna1; // od −2 147 483 648 do +2 147 483 647
unsigned int zmienna2; // od 0 do +4 294 967 295
getch() / getchar() − to funkcja pobierania danych z klawiatury
for (; getch() != 27; )
{
cout << "Nie wcisnąłeś ESC!" << endl;
}
4. Pokaż jak sam to wypociłeś, wrzuć na hosting kod programu
5. Jak w 4.
12 sty 17:14
Lukas:
o 18 wrzucę, poczekasz czy Ci się spieszy bardzo ?
12 sty 17:20
Dziadek Mróz:
Rób sobie powoli, jak wrzucisz to zajrzę i popatrzę.
12 sty 17:22
Lukas: #include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
int suma = 0,liczba=0;
srand(time(NULL));
for (; ; )
{
liczba = (rand() % 100) − 50;
cout << liczba << endl;
suma = suma + liczba;
if (suma % 2 == 0)
break;
}
cout << "osiagnieto parzysta sume liczb" << endl;
system("pause");
return 0;
}
12 sty 17:26
Dziadek Mróz:
No i git, dawaj kolejne.
12 sty 17:30
Dziadek Mróz:
A jeszcze w grudniu nie wiedział jak wygląda pętla for
12 sty 17:31
Lukas:
Ok jest ?
12 sty 17:32
Lukas:
I tak coś czuję, że uwalę
12 sty 17:32
Lukas:
z tym rand jest ok ?
12 sty 17:35
Dziadek Mróz:
Tak
12 sty 17:38
Dziadek Mróz:
Jak się kompiluje i działa to ok
12 sty 17:39
Lukas:
na kartce piszę,
liczba = (rand() % 100) − 49
na telefonie jestem
12 sty 17:40
Dziadek Mróz:
Działa
12 sty 17:44
Lukas: Ale nie powinna być druga wersj tego rand?
12 sty 17:55
Lukas: Up
12 sty 18:09
Dziadek Mróz:
rand() zwraca wartości od 0 do RANDMAX, więc wylosowując 0 początkowo otrzymasz −50, a w
drugim −49
12 sty 18:16
Dziadek Mróz:
Jak robisz totolotka to piszesz:
los = rand() % 6 + 1;
rand() % 6 ∊ {0, 1, 2, 3, 4, 5}
12 sty 18:17
Lukas: Czyli pierwsza wersja
12 sty 18:17
Lukas: Jeszcz Cię pomecze za chwilkę jak mi ten laptop zacznie działac
12 sty 18:19
Lukas: narysuj scheamt blokowy programu ktory zakonczy sie gdy dwie sasiednie wprowadzone liczby beda
takie same
12 sty 19:56
Dziadek Mróz:
To już robiliśmy, należy zapisać poprzednią liczbę w akumulatorze i porównywać z nowo
wprowadzaną liczbą. Przetwórz na schemat blokowy tylko.
12 sty 20:31
Lukas: wiem, że robiliśmy mam nawet kod ale z schematem blokowym gorzej jeszcze mam dwa schematy do
sprawdzenia zaraz wrzuce
12 sty 20:35
Lukas: Narysować schemat blokowy programu wczytujacego z klawiatury liczby calkowite do momentu az
dwie kolejne będą identyczne"
i "Schemat blokowy progamu wczytującego n liczb z klawiatury (n zadane też z klawy) i liczenie
z tego średniej"
dy
12 sty 20:35
Dziadek Mróz:
JavaBlock i do dzieła, zmienne deklaruje się jak w JavaScript, więc samo przydzieli im typy.
12 sty 20:40
Lukas: ok do której jestes na forum ?
12 sty 20:44
12 sty 20:51
Lukas: Podac przyklady zmiennych całkowitych różnych wielkości (ujemne/dodatnie male/duze itp.
12 sty 20:57
Lukas: zobaczysz jeszcze wcześniejesze zadanie 6 ?
12 sty 20:59
Dziadek Mróz:
W pierwszym, a skąd wiesz, że poprzednia wprowadzona liczba nie będzie zerem? Najlepiej
zainicjalizować poprzednią pobierając ją z wejścia a później w pętli podawać liczbę.
podaj poprzednią
wykonuj:
podaj liczbę
dopóki poprzednia == liczba
W drugim dobrze.
12 sty 21:07
Lukas: a możesz spojrzeć na 6 do góry ?
12 sty 21:08
Dziadek Mróz:
To przekazywanie parametru jako argument w funkcji.
funkcja(argument)
{
operacje
}
funkcja(parametr);
12 sty 21:12
Lukas: i to wsytarczy ?
do inline mam takie coś znaczy to, że kompilator widząc że funkcja jest inline w miejsce jej
wywołania nie wstawia jak w normalnym przypadku wskaźnika do tej funkcji w pamięci, lecz
wpisuje jej kod w miejsce jej wystąpienia. ?
12 sty 21:17
12 sty 21:25
Lukas: napisz funkcje ktora z tekstu usunie wszystkie cyfry ?
tutaj jestem zielony totalnie
12 sty 21:27
Lukas: jesteś ?
12 sty 21:38
asdf: jesli masz:
char slowo[20] = 'to2je3st4jak5istek7st';
char noweSlowo[20];
to:
int index=0;
for(int i=0;i<20;i++) {
if((slowo[index] >= 48) && (slowo[index] < 58) )
continue;
noweSlowo[index++] = slowo[index];
}
12 sty 21:47
asdf: dlaczego >= 48 i mneijsze od 58:
bo 0 w ascii to 48, 1 to 49, 2 to 50, ... , a 9 w ascii to 57
12 sty 21:48
Lukas: takie coś napiałem
bool removeFirstUsun(char *str) {
char *usunpos = strstr(str, "usun");
if(usunpos == NULL) {
return false;
}
strcpy(usunpos, usunpos+4);
return true;
}
12 sty 21:51
Lukas: podoba wam się ?
12 sty 21:51
Dziadek Mróz:
Jak działa to może się każdemu spodobać

asdf, nie lepiej korzystać ze znaków?
if((slowo[index] >= '0') && (slowo[index] <= '9'))
12 sty 21:55
Lukas: Dziadzek moge Cię prosić o te schematy bo totalnie nie wiem jak poprawić i cały czas pisze z
fona bo laptop odmówił posłuszeństwa
12 sty 21:56
Lukas: korekta
#include <cstdio>
#include <cstring>
bool removeFirstUsun(char *str) {
char *usunpos = strstr(str, "usun");
if(usunpos == NULL) {
return false;
}
strcpy(usunpos, usunpos+4);
return true;
}
int main() {
char str[20] = "Ala ma usunkota";
printf("%s\n", str);
removeFirstUsun(str);
printf("%s\n", str);
return 0;
}
12 sty 22:03
asdf: @Dziadek
chcialem pokazac, ze kazdy znak to jakas liczba

Lukas − fajna nazwa funkcji! "removeFirstUsun"

Ciekawe, czy by za to z pracy wywalili...

(zartuje)
12 sty 22:14
Lukas:
Panowie pomożecie z tymi schematami bo na prawdę ciezko mi z telefonu to wstawić

jakaś dobra
dusza ?
12 sty 22:19
Dziadek Mróz:
Lukas ja je robię i testuję na bieżąco ale nadal coś się wysypuje
12 sty 22:32
asdf: Nie chce mi sie tego rysowac...takie rzeczy jak bedziesz miec troche wprawy od razu sie kodzi.
Narysować schemat blokowy programu wczytujacego z klawiatury liczby calkowite do momentu az
dwie kolejne będą identyczne"
algorytm:
start:
a ← −∞
b ← ∞ //dalem takie b poczatkowe, bo "nie da" sie z klawiatury zapisac liczby jako
nieskonczonosc.
1. wczytaj a.
2. a == b ?
2.1 jesli tak: zakoncz
3. b ← a
4. powrot do 1.
"Schemat blokowy progamu wczytującego n liczb z klawiatury (n zadane też z klawy) i liczenie
z tego średniej" − to juz chyba samemu...po prostu wczytujesz kolejno n zmiennych (zwykly
for), za kazdym razem w iteracji dodawaj do zmiennej suma tą wartość wczytaną, na koncu zrob:
srednia = suma/n i koniec. Wiecej rysowania niz pisania
12 sty 22:41
Lukas:
dzięki za pomoc

mam nadzieję ze uda sie dobrze napisac bo jakis postep zrobiłem od
grudnia
12 sty 22:54
asdf: lepiej jest czasem sie rzucic na gleboka wode, sie troche pomeczyc, ale sie nauczyc wiecej niz
przykladami z ksiazki...Jesli znasz podstawy to mozesz napisac programy tj.:
choinka (2 fory z kilkoma ifami...),
mnozenie macierzy (3 fory zagniezdzone)
obliczanie wyznacznika macierzy metoda laplace'a
Swoja drogą − ostatnio musialem napisac fajny programik, 7 zagniezdzonych forow
12 sty 23:01
Lukas:
Ja niedługo będę mieć obiektówkę hohoh pisanie gier yolo
12 sty 23:06
12 sty 23:08
jakubs: asdf no to fajna złożoność obliczeniowa tego programu
12 sty 23:09
asdf: jakubs − inaczej sie nie dalo, jeszcze nikt nie wymyslil do tego zadania szybszego algorytmu. Z
resztą złożoność złożonością...jeszcze trzeba popatrzeć na takie zadanie trzezwiej − ile ono
na prawde bedzie sie wykonywac dla okreslonych danych i jak czesto uzytkownik z tego bedzie
korzystac. Jesli ma on tego uzyc raz na 2 minuty i poczekac te dwie sekundy − to chyba nie
takie straszne

Czas to pieniądz, a pracodawca tez na to patrzy w taki sposob: "nic za
wiele na tym nie zyskam jesli przyspiesze dzialanie algorytmu o 20%, jedyne co strace to czas
(i kase) na rozkminianie tego zadania przez pracownika"
12 sty 23:20