| |
Forum studentów informatyki UE Wrocław Forum studentów informatyki UE Wroclaw |
 |
AiSD - Lista 1
farbowanyaniol - 2010-10-09, 17:12 Temat postu: Lista 1 Może mi ktoś nakreślić jak to zrobić?
8) Podaj algorytm na określenie parzystości liczb na podstawie ich zapisu w różnych systemach liczbowych (2,8,10,16)
9) Podaj algorytm na zmianę małych liter na duże w ciągu tekstowym zapisanym w kodzie ASCII
10) Zaproponuj sposób zapisu stanu gry w warcaby (czyli układu szachownicy) za pomocą trzech 32-bitowych liczb całkowitych
agnieszkaosw - 2010-10-09, 17:22
a ja mam inne pytanie, czy gr 9 ma to zrobić? Nie mamy z p. Nieslerem ćwiczeń...a nasza prowadząca chyba nic na ten temat nie wspominała...
shawnzy - 2010-10-09, 17:39
agnieszkaosw, miłe jest to że Wy(gr9) macie dostęp do eportalu, bo macie z dr Nieslerem laby, a gr11 nie, bo mamy wszystko z dr Wydmuch. Z tego co pamiętam to ma wysłać na maila, więc czekajmy
Jerzu - 2010-10-09, 17:49
farbowanyaniol, co do zadania 8:
-w systemie dwójkowym liczba jest parzysta, jeśli kończy się 0
-w ósemkowym i dziesiętnym jest parzysta, gdy kończy się na 0, 2, 4, 6
-w szesnastkowym, gdy kończy się na 0, 2, 4, 6, 8, A, C, E.
Wystarczy by algorytm sprawdzał powyższe warunki.
W 9 myślę, że wystarczy zwykła pętla sprawdzająca, czy dany znak jest mały i zmieniająca na duży.
Na zadanie 10 też mam pomysł, ale dość długi w opisywaniu.
Edit: Kenzi ma oczywiście rację, poprawiłem błędy.
Lechu - 2010-10-09, 18:54
zrobiłem zad 10
Oto moja propozycja rozwiÄ…zania zadania.
Te trzy liczby wykorzystuję jako pamięć 3x32 bity, tak więc zapis będzie w systemie zero-jedynkowym :)
Ten sposób wykorzystuje maksymalnie 56 bitów przy szachownicy pełnej pionków. Resztę bitów można wykorzystać do przechowania informacji o tym, czyja teraz kolej, czasie gry itp.
Mój pomysł jest taki:
Numerujemy pola, na których się gra od 1 do 32.
Program zaczyna od pierwszego pola. Bierze pierwszy bit, gdy jest to zero przechodzi do drugiego pola, a gdy jedynka to znaczy, że w aktualnym polu jest jakiś pionek. Aby się dowiedzieć jaki to pionek, program bierze kolejny bit (0 - kolor biały, 1-kolor czarny). Teraz program zna adres, czy jest w tym polu pionek oraz jego kolor - więc program "stawia" ten pionek na szachownicy. Następnie zwiększa adres o 1 i znowu sprawdza jaki bit stoi kolejny... i tak aż adres będzie mieć wartość 64.
Np. dla początkowego rozstawienia szachownicy zapis będzie taki:
---11-----11----11----11
11----11-----11----11
---11-----11----11----11
0------0------0------0
----0------0----- 0-----0
10----10----10-----10
---10-----10----10----10
10----10----10-----10
no i algorytm:
int adres = 1;
int bit;
int bit2;
string kolor;
do
{
bit = wczytajNastępnyBit();
while(bit == 0)
adres = adres + 1;
bit2 = wczytajNastępnyBit();
if (bit2 == 0)
kolor = "białe";
else
kolor = "czarne";
postawPionek(adres, kolor);
}while(adres <= 32)
jeśli gdzieś jest bląd pisać!!!
/edit
poprawiony
Algorytm jest po to, aby przedstawić mój pomysł w bardziej przejrzysty sposób :P
e^x - 2010-10-09, 18:55
Zad 8, Zad 9 :
zgadzam siÄ™ z Jerzu,
Zad 10:
Pionki można stawiać na 32 polach, więc pierwsza liczba 32-bitowa ( w systemie dwójkowym) ustawienie pionków dla gracza nr 1, a druga to ustawienie pionków dla drugiego gracza, 1-gdy pionek na danej pozycji istnieje i 0-gdy nie istnieje.
W ten sposób jednoznacznie zapisujemy stan gry przy użyciu dwóch zmiennych,
w trzeciej zmiennej możemy np. zapisać czyj ruch następuje.
Potem algorytm czyta te dane i sprawdza warunki i ustala pola na podstawie tych dwóch liczb
(Ale algorytm odczytu to już nie jest nasza sprawa).
e^x - 2010-10-09, 19:01
Lechu, sposób zapisu ,a algorytm to chyba dwie różne rzeczy, ale mogę się mylić
pit3r - 2010-10-09, 23:30
Co do zadania nr 9. Zauważyć należy, że małe litery w kodzie ASCII przyjmują wartości od 97 do 122, duże natomiast od 65 do 90. Wystarczy, więc wczytać literę, zamienić ją na odpowiednią wartość w kodzie ASCII, od tej wartości odjąć 32 i zwrócić odpowiadający otrzymanej wartości symbol. Ot cały algorytm, który można przedstawić w postaci listy kroków lub schematu blokowego
Kenzi - 2010-10-10, 00:02
| Jerzu napisa³/a: | farbowanyaniol, co do zadania 8:
-w systemie dwójkowym liczba jest parzysta, jeśli kończy się 0
-w ósemkowym i dziesiętnym jest parzysta, gdy kończy się na 0, 2, 4, 6, 8
-w szesnastkowym, gdy kończy się na 0, 2, 4, 6, 8, A, E.
Wystarczy by algorytm sprawdzał powyższe warunki.
|
Z małymi zastrzeżeniami:
- w ósemkowym oczywiście nie ma cyfry "8"
- w szesnastkowym jeszcze "C"
A co do 9 - skoro w ASCII to każda litera ma swój kod, więc po prostu pętla sprawdzająca, czy kod znaku należy do 97-122 (chyba, że w programowaniu mamy to zapisane hexem wtedy 61-7A) i odejmujemy od tego kodu wartość 32 (przy hexie 20).
pit3r - 2010-10-10, 00:10
jeśli chodzi o 8, nie zagłębiałbym się w szczegóły. W skrócie algorytm wyglądałby wg mnie następująco:
1. wczytaj podstawÄ™ systemu liczbowego "n".
2. wczytaj liczbÄ™ x.
3. jeśli n<>10 zamień daną liczbę na odpowiadającą jej w systemie dziesiętnym(na podstawie "n").
4. Jeśli x mod 2 = 0 - wyświetl "Liczba parzysta". W przeciwnym razie wyświetl "Liczba nieparzysta.
Dzielenie mod(modulo) oznacza dzielenie z resztÄ…. W Pascalu funkcja ta zwraca resztÄ™ z dzielenia.
Kenzi - 2010-10-10, 00:22
Raczej Pascal miałby większy problem z przekonwertowaniem jednego systemu liczbowego na drugi niż z całością programu. A pisanie całego konwertera to sprawa o niebo dłuższa niż sam program. Rzecz jest raczej prostsza - olać jaki to system liczbowy - dokładnie działający program:
a) sprawdza czy w liczbie nie ma przecinka (bo wtedy automatycznie jest nieparzysta)
b) zamienia liczbę na ciąg znaków (string) i sprawdza czy ostatni znak (taka funkcja znajdzie się na pewno) jest równy 0, 2, 4, 6, 8, A, C, E
BTW: MOD to dokładnie "reszta z dzielenia", a nie "dzielenie z resztą" - zawsze :).
pit3r - 2010-10-10, 09:07
Kenzi, przeliczaniem zajmowałby się już odrębny algorytm dlatego napisałem, że nie bd zagłębiał się w szczegóły Jednak moje małe niedopatrzenie. Napisałem algorytm dla wszystkich systemów liczbowych(2,3,5,6... itd.), a że pod uwagę mamy brać tylko (2,8,10,16), w tym przypadku rzeczywiście wystarczy sprawdzać końcówki
k.i.k.a. - 2010-11-09, 20:39
Może ktoś umieścić rozwiązane trzy pierwsze listy?
Kociania - 2010-11-15, 12:40
Czy ktoś może pomóc w rozwiązaniu zadania 7 i 8 z listy 2???
Literati - 2010-11-15, 13:20
8/lista 2 Wyrażenie "Jola ma kota" zawiera 12 znaków i teraz w zależności od systemu kodowania mnożymy przez odpowiednią ilość bitów, a potem dzielimy przez 8 i mamy bajty
a) 12*7=84b=10,5B
b) 12*8=96b=12B
c) 12*8=96b=12B
d) UTF-8 od 1 do 6 b od 12 do 72 b=1,5 do 9B
e) 12*2=24b=3B
Co do 7 to mój brat z informatyki na polibudzie zdziwił się, że mamy takie zadanie, bo wymaga skomplikowanych obliczeń.
msch08 - 2010-11-15, 17:36
jutro grupa 11 pisze koło.
w jakiej sali piszemy i czy ktoś posiada jakiekolwiek notatki z ćw
za wszelką pomoc z góry wielkie dzięki
Kenzi - 2010-11-15, 18:42
Jak rozumiem nie masz dostępu do działu 'grupa 11'... Tak więc w skrócie:
> koło w sali 606Z o 15:25
> obowiązują wszystkie 3 listy zadań (wg tego co powiedziała nie będzie nawet zmieniała treści zadań)
> a jeśli chodzi o te bardziej pewne rzeczy, to cytat z forum grupy 11:
| qbollo napisa³/a: | Ano, oto i one:
- procedury i funkcje
- iteracja i rekurencja, oraz różnice między nimi
- rozmiary różnych typów zmiennych
- algorytm wypisujÄ…cy n kolejnych liczb pierwszych
- algorytm wypisujący n kolejnych liczb naturalnych (od jakiegoś tam momentu n, m, czy ź)
Tak mam zapisane, co siÄ™ kryje pod tym wszystkim nie pytajcie |
Sav1ola - 2010-11-15, 18:46
A mógłby ktoś wrzucić:
- algorytm wypisujÄ…cy n kolejnych liczb pierwszych
minister - 2010-11-15, 18:52
| Sav1ola napisa³/a: | A mógÅ‚by ktoÅ› wrzucić:
- algorytm wypisujÄ…cy n kolejnych liczb pierwszych |
tak tak, niech ktoÅ› wrzuci;)
pit3r - 2010-11-15, 19:03
Chyba tego potrzebujecie ;)
Literati - 2010-11-15, 19:32
Poprawka do zadania 8 z listy 2
a) 12*1B=12B
bi c jest OK
d) 12*1B=12B
e)12*2B=24B
Turinio - 2010-11-15, 19:42
A mógłby ktoś pomóc z zadaniem VI z listy 2?
Angie - 2010-11-15, 19:51
boolean – 8
byte – 8
float – 2
char – ASCII – 8
nie wiem reszty
Turinio - 2010-11-15, 19:54
dzieki!
Koordynator - 2010-11-15, 20:14
L2Z10 - wersja alternatywna.
: )
---
| Angie napisa³/a: | | boolean – 8 |
64 nie 8. Boolean to wartość logiczna Prawda(1)/Fałsz(0), a więc jest zapisywana na jednym bicie.
aniut - 2010-11-15, 20:51
a o co chodzi z tymi dwoma plusikami?
Koordynator - 2010-11-15, 20:58
to to samo co
pit3r - 2010-11-15, 20:59
aniut, jest to tzw. inkrementacja. Możesz zapisać ją na kilka sposobów:
| Kod: | zmienna := zmienna+1
zmienna +=1
zmienna++
|
analogicznie dekrementacja:
| Kod: |
zmienna := zmienna-1
zmienna -= 1
zmienna--
|
aniut - 2010-11-15, 21:33
dzięki :)
Dudek - 2010-11-15, 22:01
A ja siÄ™ zapytam, ma ktos te opisowe zadania zrobione z 3 list pierwszych?
killaruna - 2010-11-15, 22:50
Jeśli chodzi o zadanie 7 z listy 2 - postać zmiennoprzecinkowa to inaczej postać wykładnicza, czyli postać mantysy pomnożonej przez 10 do pewnej potęgi całkowitej, przy czym zamiast liczby 10 do którejśtam potęgi jest pisany symbol E lub e. W poleceniu nie zaznaczono, czy mamy to liczyć na liczbach dwójkowych (jak to sobie robi komputer), więc wnioskuję, że z łaski zostajemy przy systemie dziesiętnym stąd też np.
Gdy notacja dziesiętna wynosi:
4837.92 to w wykładniczej 4.83792E+3;
0.0483792 to w wykładniczej 4.83792E-2;
-0.483792 to w wykładniczej -4.83792E-1.
W przypadku wykładnika dodatniego kropka dziesiętna w mantysie przesuwa się w lewo o liczbę miejsc równą wartości wykładnika. Przy wykładniku ujemnym kropka dziesiętna wędruje w prawo o liczbę pozycji równą wartości bezwzględnej wykładnika.
Więc:
a) 0,00003 to w wykładniczej: 3,0000E-5 (E-5, bo przesunęliśmy na prawo o 5 kropkę dziesiętną)
b) 1,023 to w wykładniczej 1,0230E+0 (E+0, bo nic nie zrobiliśmy z kropką)
c) 2/3 = 0,6666(7)... dla ułatwienia zrobimy zaokrąglenie, to w wykładniczej: 6,6667E-1
Mam nadzieję, że nie ma bugów
Koordynator - 2010-11-15, 22:57
| Cytat: | | Przedstaw w postaci zmiennoprzecinkowej (32 bity) następujące liczby: |
IHMO te "32 bity" sugerują, że jednak ma być w binarnym.
killaruna - 2010-11-15, 23:06
Kurde za późna pora już dla mnie na logiczne myślenie
DantePL - 2010-11-15, 23:11
Widzę, że problemy są z czymś co w sumie i tak automat za nas robi:
KLIK
a jak ma ktoÅ› problemy z wpisaniem "co i gdzie", to ewentualnie, dodatkowo:
KLIK
killaruna - 2010-11-15, 23:17
Hehe, no dobra, ale jak da Ci innÄ… liczbÄ™ na kole, to Ci automat nie policzy
DantePL - 2010-11-15, 23:28
Przeca mówiła, że tego nie da. Więc o co ten hałas? Masz automat i się ciesz
KrzysiekWu - 2010-11-16, 00:08
Koordynator - 2010-11-16, 01:24
W nagrodę wydziergałem ci dywan:
(dywan 911 7) ~40min.
GL HF Cya on.
|
|