Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
randolf
Dołączył: 10 Paź 2007
Posty: 383
Przeczytał: 0 tematów
|
Wysłany: Śro 18:10, 05 Lis 2008 Temat postu: |
|
|
GREY napisał: | mala_litera() == islower()
duza_litera() == isupper() |
Do czego to?
|
|
Powrót do góry |
|
|
|
|
Gość
|
Wysłany: Śro 18:55, 05 Lis 2008 Temat postu: |
|
|
Dajcie namiary na teog gmaila co to jest wrzucone bo niestety nie posiadam:/ Zgóry dzieki.
|
|
Powrót do góry |
|
|
smk
Dołączył: 12 Paź 2007
Posty: 102
Przeczytał: 0 tematów
Skąd: NW
|
|
Powrót do góry |
|
|
Zack de la Rocha
Dołączył: 10 Lis 2007
Posty: 187
Przeczytał: 0 tematów
|
Wysłany: Śro 19:18, 05 Lis 2008 Temat postu: |
|
|
@randolf
islower(char) zwraca ci jedynkę, jeśli znak char jest małą literą, a druga funkcja analogicznie dla 2.
Ja nie mogłem znaleźć w helpie tych funkcji więc napisałem sobie swoje własne o identycznym działaniu.
randolf napisał: |
Mógłby ktoś nad tym pomyśleć:
Cytat: | Piekny Wojciech
Napisac program ktory zlicza roznice na bitach 2 liczb calkowitych, uzywajac tego sposobu ktory podobno na wykladzie byl. |
pozdrawiam |
Nie wiem jaki sposób był na wykładzie, ale zrobiłem ten program, jest na gmailu.
Ostatnio zmieniony przez Zack de la Rocha dnia Śro 20:11, 05 Lis 2008, w całości zmieniany 1 raz
|
|
Powrót do góry |
|
|
randolf
Dołączył: 10 Paź 2007
Posty: 383
Przeczytał: 0 tematów
|
Wysłany: Śro 21:49, 05 Lis 2008 Temat postu: |
|
|
dzieki, szybko, krotko, zwiezle, ale moglbys wytlumaczyc jak dzialaja te operatory ktorych uzyles?
|
|
Powrót do góry |
|
|
GREY
Dołączył: 07 Paź 2007
Posty: 634
Przeczytał: 0 tematów
Skąd: Żory/DS Ondraszek
|
Wysłany: Śro 22:08, 05 Lis 2008 Temat postu: |
|
|
Wg. mojego sizeof(int) liczby cakowite maja przypisane 4 bajty (czyli 32bity), a nie 1 bajt (czyli 8bitow). Tak wiec lepszy sposob na okreslenie liczby bitow byloby:
Co do operatorow to pewnie chodzi Ci o ten fragment:
Kod: | for(int i=0; i< BITY; ++i){
if((liczba1 & maska) ^ (liczba2 & maska))
licznik++;
maska*=2;
} |
Tak wiec:
& to AND binarny
^ to XOR binarny
Dzialanie jest bardzo proste. Przyjmijmy, ze faktycznie mamy liczbe 8 bitowa. Tak wiec maska z 1 to 00000001, operacja "liczba AND 00000001" wyzeruje nam wszystkie pozycje poza najmlodsza. Takie same dzialanie jest wykonywane na obydwoch liczbach i zwracane do ifa (liczba1 i liczba2 nie sa w zaden sposob modyfikowane. Nastepnie obie wartoscio sa XORowane. Jesli sa rozne to mamy 1 czyli prawde, jesli nie to 0 czyli falsz. Jesli prawda to licznik zmian zwiekszy sie o jeden. Za ifem, jedynka w masce zostaje przesunieta w lewo "maska *= 2" (mozna bylo tez uzyc operatora "<<= 1" do tego celu). Dzieki temu w nastepnym przebiegu petli bedziemy porownywac starsza liczbe. I tak w petli 8 razy :3
Ostatnio zmieniony przez GREY dnia Śro 22:19, 05 Lis 2008, w całości zmieniany 3 razy
|
|
Powrót do góry |
|
|
GREY
Dołączył: 07 Paź 2007
Posty: 634
Przeczytał: 0 tematów
Skąd: Żory/DS Ondraszek
|
Wysłany: Czw 20:17, 06 Lis 2008 Temat postu: |
|
|
Ja dostalem tez mnozenie wielomianow ale musialem wykozystac struktury i referencje. Wynikowy kod okazal sie o wiele przyjazniejszy niz kod randolfa i ocenil to na 4. Sam Milik ocenial bardzo lajtowo. Mozna bylo dostac nawet 3.5pkt za nieskonczone zadanie.
Kod: | #include <iostream>
using namespace std;
struct wielomian {
int stopien;
int wspolczynnik[51];
};
void pokaz(const wielomian & wie) {
for (int i = wie.stopien; i >= 0; i--) {
if (wie.wspolczynnik[i] != 0) {
cout << wie.wspolczynnik[i];
if (i > 0) {
if (i > 1)
cout << "x^" << i << " + ";
else
cout << "x + ";
}
}
}
cout << endl;
}
void podaj(wielomian & wie) {
cout << "Podaj stopien wielomianu: ";
cin >> wie.stopien;
cout << "Podaj wspolczynniki wielomianu zaczynajac zerowego." << endl;
for (int i = 0; i <= wie.stopien; i++) {
cout << i << ": ";
cin >> wie.wspolczynnik[i];
}
pokaz(wie);
}
wielomian mnozenie(const wielomian & wiea, const wielomian & wieb) {
wielomian wie;
for (int i = 0; i < 51; i++)
wie.wspolczynnik[i] = 0;
wie.stopien = wiea.stopien + wieb.stopien;
for (int i = wiea.stopien; i >= 0; i--) {
for (int j = wieb.stopien; j >= 0; j--)
wie.wspolczynnik[i+j] += wiea.wspolczynnik[i] * wieb.wspolczynnik[j];
}
return wie;
}
int main() {
wielomian wie1, wie2, wie3;
podaj(wie1);
podaj(wie2);
wie3 = mnozenie(wie1, wie2);
pokaz(wie3);
return 0;
} |
Przyklad dzialania:
Kod: | Podaj stopien wielomianu: 2
Podaj wspolczynniki wielomianu zaczynajac zerowego.
0: 1
1: 2
2: 3
3x^2 + 2x + 1
Podaj stopien wielomianu: 1
Podaj wspolczynniki wielomianu zaczynajac zerowego.
0: 1
1: 2
2x + 1
6x^3 + 7x^2 + 4x + 1 |
Ostatnio zmieniony przez GREY dnia Śro 23:52, 12 Lis 2008, w całości zmieniany 2 razy
|
|
Powrót do góry |
|
|
randolf
Dołączył: 10 Paź 2007
Posty: 383
Przeczytał: 0 tematów
|
Wysłany: Czw 20:27, 06 Lis 2008 Temat postu: |
|
|
Odnośnie tego mojego wielomianu to tam jest błąd w koncowym wypisywaniu x do n-tej potęgi, sam algorytm jest ok, współczynniki też dobrze liczy, tylko podawany stopien wielomianu na koncu sie nie zgadza, ale latwo to sobie przeciez policzyc bo przeciez wspolczynnikow jest tyle ile stopni wielomianu.
|
|
Powrót do góry |
|
|
GREY
Dołączył: 07 Paź 2007
Posty: 634
Przeczytał: 0 tematów
Skąd: Żory/DS Ondraszek
|
Wysłany: Pią 1:40, 07 Lis 2008 Temat postu: |
|
|
Klaudia dostala NWD wg. algorytmu Euklidesa. Dziala dla liczb dodatnich pewnie dlatego, ze w czasach Euklidesa nie bylo liczb ujemnych:
Kod: | #include <iostream>
using namespace std;
int czyrowne(const int & n, int t[]) {
for (int i = 0; i < n - 1; i++) {
if (t[i] != t[i + 1])
return 0;
}
return 1;
}
void odejmin(const int & n, int t[]) {
int m = t[0];
for (int i = 1; i < n; i++) {
if (t[i] < m)
m = t[i];
}
for (int i = 0; i < n; i++) {
if (t[i] != m)
t[i] -= m;
}
}
int main() {
int n, tab[10];
cout << "Podaj ilosc liczb [1-10]: ";
cin >> n;
cout << "Podaj liczby: ";
for (int i = 0; i < n; i++)
cin >> tab[i];
while (!czyrowne(n, tab))
odejmin(n, tab);
cout << "NWD to: " << tab[0] << endl;
return 0;
} |
Przyklad dzialania:
Kod: | Podaj ilosc liczb [1-10]: 3
Podaj liczby: 4 8 22
NWD to: 2 |
Ostatnio zmieniony przez GREY dnia Sob 10:08, 08 Lis 2008, w całości zmieniany 9 razy
|
|
Powrót do góry |
|
|
randolf
Dołączył: 10 Paź 2007
Posty: 383
Przeczytał: 0 tematów
|
Wysłany: Pon 23:52, 01 Gru 2008 Temat postu: |
|
|
Co mieliście na trzecich punktowanych?
|
|
Powrót do góry |
|
|
mariuszl2
Dołączył: 16 Paź 2007
Posty: 275
Przeczytał: 0 tematów
|
Wysłany: Wto 14:43, 02 Gru 2008 Temat postu: |
|
|
Napisac klase Ctime, private: godz, min, sek.
Metody:
Set(godz, min, sek) - do ustawiania godziny,
Set(sek) - przelicza ilosc podanych sekund na konkretna godzine,
Jakas metoda wyswietlajaca godzine,
Zdefiniowac operatory + i - (dodawanie i odejmowanie godzin)
A wszystko na typach unsigned log int i unsigned char wiec byly jakies problemy z wyjsciem i trzeba bylo z ostream czy czegos tam korzystac.
|
|
Powrót do góry |
|
|
Timon
Dołączył: 10 Paź 2007
Posty: 548
Przeczytał: 0 tematów
|
Wysłany: Wto 16:48, 02 Gru 2008 Temat postu: |
|
|
aaa to dziedziczenia i polimorfizmu nie było?
|
|
Powrót do góry |
|
|
GREY
Dołączył: 07 Paź 2007
Posty: 634
Przeczytał: 0 tematów
Skąd: Żory/DS Ondraszek
|
Wysłany: Wto 18:23, 02 Gru 2008 Temat postu: |
|
|
Znajac Milika zrobil zestaw dwoch zadan: prostrze i dla zdolniejszych. To powyzej pewnie bylo to prostrze (sama klasa string i przeciazanie), a dla ambitnych wymyslil cos elo (czyli dziedziczenie i metody wirtualne).
|
|
Powrót do góry |
|
|
cuber1988
Dołączył: 09 Paź 2007
Posty: 122
Przeczytał: 0 tematów
|
Wysłany: Wto 20:08, 02 Gru 2008 Temat postu: |
|
|
dziedziczenia i metod wirtualnych raczej nie bedziecie mieli bo jak do tej pory w zeszlym roku i w tym roku na tych laborkach przypadalo obciazanie operatorow... wiem ze na platformie to cwiczenie obejmuje dziedziczenie i metody wirtualne no ale my tego nie mielismy na ostatnich... samo przeciazanie operatorow...
|
|
Powrót do góry |
|
|
mariuszl2
Dołączył: 16 Paź 2007
Posty: 275
Przeczytał: 0 tematów
|
Wysłany: Wto 20:28, 02 Gru 2008 Temat postu: |
|
|
GREY ma racje, ktos z grupy miał dziedziczenie i wirtualne, a byla to osoba z duza iloscia punktow za poprzednie laborki.
|
|
Powrót do góry |
|
|